What Trend Watcher actually does
The Trend Watcher agent (Haiku 4.5; spec at ~/projects/tiktok-army/tiktok_army/agents/_catalog.py:153) runs against a TikTok handle and returns four things:
- •
rising_hashtags— hashtags growing in usage in the chosen region within the freshness window. - •
rising_sounds— sounds with high recent uptake. - •
format_recommendations— concrete content shapes that pair well with the rising trends and the brand's niche. - •
fit_score_for_brand— a 0–100 single-number summary of how well this whole rising-trend basket fits the brand.
It runs in two seeded workflows: Profile Audit (where it informs the audit synthesis) and Campaign Launch (where its output flows into the Content Producer brief).
What "rising" means
The agent uses two configurable parameters:
- •
region— which TikTok region to ingest trends from. Defaults toUS. Other valid values:UK,CA,AU,FR,DE,JP,BR. Trends are intensely region-specific — a sound exploding in Brazil rarely shows up the same week in the US. - •
freshness_hours— only consider trends that started rising within this window. Default is 24 hours. Min is 6, max is 168 (one week).
A trend qualifies as "rising" if its 24-hour use velocity is significantly higher than its baseline use velocity. The exact threshold is a hashtag-by-hashtag heuristic — the agent doesn't surface anything growing under ~10% week-over-week unless something else (high absolute volume, brand-niche match) makes it worth flagging.
Why the freshness window matters. A 24h window captures things that just popped — you're probably late by the time you see them. A 7-day window captures things in the meaty middle of their arc — you're earlier and have more time to plan. Ops note: for "what should I post this week" use 168h (one week). For "what's trending right now" use 24h.
Reading lift_pct
Each rising hashtag has a lift_pct. This is week-over-week growth in usage volume, expressed as a percentage. Mock data examples (from ~/projects/tiktok-army/tiktok_army/providers/_mock_data.py:227):
- •
#shelfreveal—lift_pct: 51, uses_24h: 22,440— a niche hashtag exploding. - •
#cleanbeauty—lift_pct: 38, uses_24h: 184,220— a popular hashtag growing fast. - •
#getreadywithme—lift_pct: 19, uses_24h: 312,890— a huge evergreen hashtag still growing. - •
#niacinamide—lift_pct: 8— saturated, growing slowly.
The trap with lift_pct. A small base × big lift is a small absolute number. +200% on something with uses_24h: 400 is still 1,200 uses — too small to land you on the FYP. Always read lift alongside uses_24h. The sweet spot for most brands: lift > 25% AND uses_24h > 10,000. Big enough to matter, small enough that you're not the millionth user of it.
Lift is not fit. A hashtag can be on fire and completely wrong for your brand. #cleanbeauty is a 38% rising tag in the mock data — if your brand sells industrial cleaning products, that's the wrong "clean" entirely. Fit comes from the per-hashtag category field, which the agent uses to filter, but you should sanity-check.
Reading sound fit
Sounds have a fit_score (0–1) per sound, and the trend watcher's broader output also has a fit_score_for_brand (0–100). They mean different things.
Per-sound fit. Calibrated against the brand's niche tags and what types of content the sound is being used with right now. A sound that's exclusively used in skits gets low fit for a beauty brand even if it's wildly trending. A sound that's been picked up by other beauty creators in the last 24 hours gets high fit.
fit_score_for_brand (0–100). The composite of the whole basket. Think of it as "if you took the rising trend list as a whole and asked 'should this brand's content team pivot toward this?', this is the answer."
- •80+ — yes, lean in for the next 14 days. Briefs to Content Producer should reference these formats and sounds.
- •60–79 — pick the top 1–2 trends and try them. Keep your evergreen content running in parallel.
- •40–59 — the rising trends right now don't really match your audience. Don't pivot, but watch for the next freshness window — trends shift fast.
- •<40 — ignore. The rising basket is wrong for your brand and chasing it will hurt the channel's coherence.
When to lean into a trend
A few patterns that work.
Match a trend that aligns with what you already do. If your brand makes lo-fi POV product videos and #shelfreveal is rising, you're already doing the format. Just add the hashtag and ride the wave. Cost: zero. Upside: real.
Use a rising sound on your existing format. Sounds carry FYP weight independently of hashtags. Pairing a high-fit rising sound with your existing format is a low-risk way to increase reach without changing anything else.
Adopt a rising format adjacent to yours. "Lo-fi shelf reveal" if you currently do "GRWM" — the hand work, lighting, lack of overlay text is similar; the framing is different but recognizable. Worth one or two test posts.
When to ignore a trend
The trend is wildly off-brand. A serious skincare brand chasing a comedy skit format will look like it's trying too hard. The cost of looking try-hard is bigger than the reach upside.
The trend's audience isn't your audience. A trend can be huge in a demographic that doesn't buy from you. The Trend Watcher's region filter helps but not perfectly — read the per-trend category and audience signals before committing.
Your account is already winning on something else. If a creative format is over-indexing for you (Performance Feedback agent's output will tell you), keep doubling down on that format before chasing a new trend. The engagement compounds.
fit_score_for_brand < 50. Easy heuristic. If the global basket scores low, the platform is just having a moment your brand isn't part of. Wait it out.
How Trend Watcher feeds into Campaign Launch
In Campaign Launch, the Trend Watcher's output is read by the Content Producer step that drafts the Studio brief. Specifically:
- •Top 1–3 rising hashtags get added to the candidate hashtag set for the new content.
- •The top sound (if
fit: high) gets specified in the Studio brief'smusicfield. - •The top format recommendation gets included in the brief's concept description.
You'll see this manifest in the Content Producer's output (the studio_brief, post_caption, hashtags fields visible at gate #2 of the workflow — see How to Launch a Campaign).
Things to know
- •Trends come from TikTok's research API in real mode and from
~/projects/tiktok-army/tiktok_army/providers/_mock_data.pyin mock mode. Mock data is deterministic and stale by design — don't read the mock fixtures as live signal. - •The agent doesn't dedupe across runs. If you run the audit twice in the same hour, you'll see roughly the same trends (especially with
freshness_hours=24). That's expected. - •A trend's "fit" is calibrated against the brand profile loaded from Studio. If the brand has no profile or a thin one, fit scores will be unreliable. Beef up the brand profile before relying on fit calls.