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-Signature header: 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, embeds or a few other fields, and content holds 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.