TikTok Feeds
Mirror a TikTok account's new posts into a channel, with the video itself uploaded so people can watch without leaving Discord. Setup, styles, and the three reasons a feed can go quiet.
TikTok Feeds mirrors a public TikTok account's new posts into a channel, checking roughly every 5
minutes. By default the video itself is uploaded into the channel, not just a link, so people watch
it without ever leaving Discord. Changing anything needs Manage Server and Server Premium, but
reading is free: if your Server Premium has lapsed, you can still see exactly what's configured and
why a channel has gone quiet. The command is ,tiktokfeed (also ,ttfeed or ,tiktokfeeds), and
the slash form is /feeds tiktok.
Add a feed
Syntax
,tiktokfeed add <#channel> <@handle> [message]
Example
,tiktokfeed add #clips @nasa
Give it the channel and the handle. You can type the handle with or without the @, or paste a
link to the profile instead. A server can hold up to 3 feeds, lower than YouTube's 5: checking a
TikTok account costs more than checking a YouTube channel, so the ceiling is set to reflect that.
If your server is already at the limit when you try to add another, remove one first; a server that
was already over the limit before it dropped keeps every feed it has.
A new feed starts from now. It doesn't dump the account's history into the channel, so the first thing you'll see posted is whatever that account posts after you added it, not anything older.
Only public accounts
TikTok Feeds can't read a private account's posts, so adding one is refused by name up front rather than silently failing later.
To remove a feed:
Syntax
,tiktokfeed remove <#channel> <@handle>
Example
,tiktokfeed remove #clips @nasa
Check what's configured, free of charge
Syntax
,tiktokfeed list
Syntax
,tiktokfeed info <#channel> <@handle>
Example
,tiktokfeed info #clips @nasa
list shows every feed in the server; info shows one feed's full setup and current status.
Neither needs Server Premium; only Manage Server to view your own server's configuration. This
is deliberate: an admin whose channel has gone quiet because Server Premium lapsed is exactly the
person who most needs to see why, and paywalling the explanation would refuse them.
Give a feed a nickname
Syntax
,tiktokfeed label <#channel> <@handle> <text|off>
Example
,tiktokfeed label #clips @nasa Space Clips
A short, display-only nickname, useful once a channel has more than one feed and the handle alone stops being a helpful label.
Choose how posts look
Syntax
,tiktokfeed style <#channel> <@handle> <card|link|compact>
Example
,tiktokfeed style #clips @nasa compact
| Style | What you get |
|---|---|
card | The video itself, uploaded, plus a card with the author, caption and stats. This is the default |
compact | A small preview with a thumbnail. No upload, for a busy channel or a server that would rather not spend the bandwidth |
link | Just the url, nothing else |
Unlike YouTube Feeds, there's no default value here to reset to: card already is the one
sensible default for TikTok, since a bare TikTok link unfurls poorly in Discord and would make people
leave the channel to watch it anyway.
The default style needs Attach Files
Righteous needs the Attach Files permission in the channel to upload video for the card
style. It doesn't need that permission for compact or link, since neither of those attaches
anything.
A video too big for the channel falls back to a link, and says why
If a post's video is larger than the server's upload limit, card falls back to posting a link
instead of failing to attach, and the post says that's what happened rather than silently arriving
looking different. Boosting the server raises that upload limit.
Add a trailing message, and a ping
Syntax
,tiktokfeed message <#channel> <@handle> <text|off> [@role] [@everyone]
Example
,tiktokfeed message #clips @nasa New post: @Staff
This sets text that gets posted along with every one of that feed's posts, and it's also the only
place you configure a ping. Mentioning a role, or typing @everyone, needs Mention Everyone on
top of Manage Server and Server Premium. Running this command replaces the whole message and ping
setup at once: run it again with plain text and no mention, and any ping you had configured is
cleared along with it. TikTok Feeds announces every post it mirrors, with no per-post filter to turn
some of them off.
The mention has to actually be in the message text
Discord only sends a notification from a mention that is genuinely part of the message content, so
a role picked without a real @role mention typed into the text pings nobody: it renders, it
looks configured, and it never fires. Make sure the @role or @everyone is written directly
into the message you give this command.
Post under a different name and picture
A new feed's posts arrive as Righteous. You can change that per feed, so they post under the account's own name and picture, or under a name you pick yourself.
Syntax
,tiktokfeed webhook <#channel> <@handle> <off|source|custom|name|avatar> [value]
Example
,tiktokfeed webhook #clips @nasa source
There are three modes:
| Mode | What posts look like |
|---|---|
off | Posts as Righteous itself |
source | Posts as the tracked account, using its own display name and profile picture |
custom | Posts as a name and picture you set yourself |
For custom, set the two pieces separately:
Syntax
,tiktokfeed webhook <#channel> <@handle> name <text>
Example
,tiktokfeed webhook #clips @nasa name Space Clips
Syntax
,tiktokfeed webhook <#channel> <@handle> avatar <url>
Example
,tiktokfeed webhook #clips @nasa avatar https://example.com/icon.png
You can also set a name, a picture, and a default mode once for the whole server, which every feed that has not chosen for itself will use. This is shared across GitHub, Twitter, Letterboxd and YouTube feeds too, so setting it from any of those commands sets it for all of them:
Syntax
,tiktokfeed webhook default <name|avatar|mode> [value]
Example
,tiktokfeed webhook default mode source
A feed that chose for itself always wins
Setting off on a feed means "never wear an identity" and is respected even when the server
default says otherwise. Only a feed that has never been given a mode of its own follows the server.
Turning it off stays free
Switching a feed back to off works even if your Server Premium has lapsed, and so does reading
what is configured. Only source and custom, and setting a name or picture, need Server Premium.
A feed whose Server Premium has lapsed keeps its setting and simply posts as Righteous until you
renew, and info shows you that is what is happening rather than showing a name your posts are
not actually wearing.
Righteous needs Manage Webhooks in the channel
Posting under a different name uses a webhook, which Righteous creates in the channel the first
time it needs one. Without the Manage Webhooks permission it cannot create one, so posts arrive as
Righteous instead. Nothing is ever lost this way: the post still goes out, and
,tiktokfeed info tells you exactly why it is not wearing the identity you set. Grant the
permission and the next post picks it up on its own.
Why a feed goes quiet
A feed can stop posting for a few different reasons, and the fix is different for each one. None of them ever deletes a feed; they only pause it. Deleting the channel a feed posts to parks it the same way rather than destroying it.
| Reason | Fix |
|---|---|
| You paused it yourself | ,tiktokfeed resume |
| The account went private | Nothing you can do from here |
| The account or the connection to TikTok failed repeatedly | ,tiktokfeed retry |
| Server Premium lapsed | Renew it. Nothing was deleted, and every feed picks back up once you're paying again |
Match the fix to the reason, or nothing changes
Resuming a feed that's actually broken doesn't fix it, and retrying a feed you paused on purpose
doesn't un-pause it: each of these touches only its own reason and leaves the others exactly as
they are. ,tiktokfeed list and ,tiktokfeed info tell you which reason currently applies to a
feed, including when more than one does at once.
Syntax
,tiktokfeed pause <#channel> <@handle>
Example
,tiktokfeed pause #clips @nasa
Syntax
,tiktokfeed resume <#channel> <@handle>
Example
,tiktokfeed resume #clips @nasa
Syntax
,tiktokfeed retry <#channel> <@handle>
Example
,tiktokfeed retry #clips @nasa
Test a feed without waiting for a real post
Syntax
,tiktokfeed test <#channel> <@handle>
Example
,tiktokfeed test #clips @nasa
Posts that account's newest post into the channel right now, rendered exactly the way a real post would be. Nothing about the feed is changed: it's a preview, not a real check-in. If the feed has a ping configured, this test does not fire it; the real feed will still ping normally on its next genuine post.
Manage everything from one panel
Syntax
/feeds panel
Opens a private card for managing your GitHub, Twitter, Letterboxd and TikTok feeds, with a tab for
each. It updates in place as you navigate or act on a feed, and it stays visible only to whoever
opened it. This only opens over slash, on purpose, so it stays private: running ,tiktokfeed panel on prefix points you at /feeds panel instead of posting anything. Opening the panel is
free; acting on a feed from it needs the same Manage Server and Server Premium the matching command
needs.
For what all the feed platforms have in common, GitHub's real-time webhook versus the others' polling, Server Premium and what happens when it lapses, and the reasons any feed goes quiet, see Feeds.
Honest limits
- Public accounts only. A private account is refused when you try to add it, not silently ignored later.
- Every post is announced. There's no content-type toggle like YouTube's videos/Shorts/live split; a TikTok feed mirrors everything the account posts.
- A very large video degrades to a link, and says why. If a post's video is bigger than your server's upload limit, it posts as a link instead of failing to attach.
- This is separate from pasting a TikTok link into chat. That's a different setting entirely and doesn't interact with a feed you've configured here.
Common issues
A feed I added dumped a bunch of old posts into the channel. It shouldn't: a new feed starts
from the moment you add it. If you're seeing old posts, check whether the feed shows as broken with
,tiktokfeed info; a feed recovering from an outage still
only posts what's genuinely new.
I set up a ping and it never notifies anyone. Almost always this is the mention not actually
being in the message text; see Add a trailing message, and a ping
above. Re-run ,tiktokfeed message with a real @role mention or @everyone typed into the text.
A feed stopped posting and I don't know why. Run ,tiktokfeed info on it: it tells you which of
the reasons in Why a feed goes quiet applies, including when more than one
does.
,tiktokfeed add refuses a handle. Either it isn't a valid TikTok handle or profile link, the
account doesn't exist, or the account is private, in which case TikTok Feeds can't read it at all.
The video never uploads and I only get a card and a link. Check that Righteous has Attach
Files in that channel; the default card style needs it to upload video. If the permission is
fine, the post itself may simply have been too large for your server's upload limit, in which case
the post says so.
I set a custom name or picture and posts still arrive as Righteous. Run ,tiktokfeed info on
the feed. It tells you which of these it is: Righteous is missing Manage Webhooks in that channel,
the channel already holds Discord's maximum of 15 webhooks, Discord rejected the name you chose, or
your Server Premium has lapsed. The posts keep arriving throughout, so this is always a cosmetic
problem rather than a lost feed.