Discord bot for TikTok notifications: when a webhook is enough
AyeWatch posts new TikTok videos to Discord on paid plans, or sends a signed webhook you can relay with a short Node handler. A bot is only worth it for custom logic.
By ClaudeGPT Si Newsroom, Editorial team
3 min read
You may not need a Discord bot for TikTok notifications at all. If the goal is a message in a channel each time a creator posts, a webhook does the job: AyeWatch can post new TikTok videos to Discord on paid plans, or send you a signed webhook that a short handler of your own relays to Discord. Write a full bot only when you want commands, roles or logic of your own.
Three ways to get TikTok posts into a channel
| Approach | What you maintain | Pick it when |
|---|---|---|
| Your own bot | Reading TikTok on a schedule, remembering seen videos, retries, hosting | You need slash commands or custom behavior |
| AyeWatch's Discord integration | Nothing after setup | You want new videos in a channel, today |
| AyeWatch webhook relayed to a Discord webhook | One small HTTPS handler | You want your own message format or routing |
Why a home-made bot is more work than it looks
The Discord side is the easy part. The hard part is the TikTok side: fetching a profile, hashtag or search on a schedule, working out which videos are new, storing what you already posted, and repairing the reader when the source changes. That is a small service to run forever, for a feature most servers only need to fire a few times a week.
The no-code route
In AyeWatch, open Create a monitor, pick TikTok and choose a mode:
- Profile takes a full tiktok.com profile link and sends every new video from that creator.
- Search takes plain words and sends the newest videos whose captions match.
- Hashtag takes one tag and sends new videos that use it.
Add an Only alert me about rule if the channel should only see some videos, for example "tutorials, not memes". Then connect Discord. AyeWatch lists Slack, Discord and webhook integrations as paid-plan features; push and the in-app feed come with every plan. Each update carries the caption, view, like and comment counts, a cover image and a link to the video.
The relay route, for custom formatting
If you want embeds, per-channel routing or a filter of your own, point AyeWatch's webhook at a handler and forward to a Discord incoming webhook. The facts that shape the code, from AyeWatch's webhook docs and Discord's webhook reference:
- AyeWatch POSTs JSON to a public HTTPS URL, one webhook per account, only when a monitor finds something new.
- Your endpoint must answer with a 2xx within 10 seconds. Failed deliveries are retried, so deduplicate on
update_id. - Each request has an
X-AyeWatch-Signatureheader:sha256=plus an HMAC-SHA256 of the raw body, keyed with your webhook secret. - Discord's Execute Webhook call needs at least one of
content,embedsor a few other fields, andcontentholds up to 2,000 characters.
import express from "express";
import crypto from "node:crypto";
const app = express();
const seen = new Set();
app.post("/hooks/ayewatch", express.raw({ type: "application/json" }), async (req, res) => {
const expected = "sha256=" + crypto.createHmac("sha256", process.env.AYEWATCH_SECRET).update(req.body).digest("hex");
const given = req.get("x-ayewatch-signature") ?? "";
if (given.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected))) {
return res.sendStatus(401);
}
res.sendStatus(200); // reply fast, then forward
const update = JSON.parse(req.body);
if (seen.has(update.update_id)) return;
seen.add(update.update_id);
const content = `**${update.headline ?? update.topic_name}**\n${update.content ?? ""}`.slice(0, 2000);
await fetch(process.env.DISCORD_WEBHOOK_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ content }),
});
});
app.listen(3000);
Keep seen in Redis or a database once this runs on more than one instance. AyeWatch's docs also say events can arrive out of order and new fields may appear, so ignore fields you do not use.
What none of these routes cover
AyeWatch sends no TikTok LIVE alerts, does not read comments and works with public accounts only. If your server mainly wants "this creator is live now" pings, a stream-alert bot built for LIVE is the better fit. For new videos, hashtags and searches, the webhook route is less code to own than a bot.
Price
AyeWatch has a free preview with no card. As of November 2026, paid plans, which include the Discord and webhook integrations, start at $9 a month and are billed in monitoring credits.