The problem it solves
Influential opinions about products are increasingly spoken in reviews, podcasts and commentary videos, often without the brand name in the title. PR teams find out days later, if at all. They need alerts when a brand is mentioned, the context of what was said, and a way to measure share of voice against competitors.
What to include in your first version
- A watchlist of channels and podcasts per client
- Keyword and alias matching for brands, products and people
- AI classification of each mention as positive, negative or neutral
- Slack and email alerts with the quote and a timestamped link
- Weekly share-of-voice reports versus competitors
How to build it, step by step
- 01
Build the watchlist
Store the channels to monitor for each client. Resolve each handle once with /channels/resolve to get the channel ID.
- 02
Poll for new uploads
On a schedule, resolve each channel with a small limit and compare the video IDs against those you've already processed.
- 03
Transcribe only new videos
Send new IDs to /transcribe or /batch. You spend credits only on videos you haven't seen.
- 04
Detect and classify mentions
Search transcripts for brand names and aliases, then pass the surrounding paragraph to an LLM to confirm relevance and classify sentiment.
- 05
Alert and report
Send each confirmed mention to Slack or email with the quote and a timestamped link, and roll mentions up into weekly reports.
Starter code
This idea is built on the "Recipe 2: Watch channels and alert on new uploads" pattern. Swap in your own channels, prompts and storage.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
WATCHLIST = ["@somechannel", "@anotherchannel"]
KEYWORDS = ["your brand", "competitor"]
seen = set() # persist this in a database in production
for handle in WATCHLIST:
latest = requests.post(f"{API}/channels/resolve", headers=HEADERS,
json={"handle": handle, "limit": 10}).json()
for video in latest["items"]:
if video["video_id"] in seen:
continue
seen.add(video["video_id"])
t = requests.post(f"{API}/transcribe", headers=HEADERS,
json={"video": video["video_id"]}).json()
text = t.get("data", {}).get("transcript", {}).get("text", "").lower()
hits = [k for k in KEYWORDS if k in text]
if hits:
print(f"ALERT {video['title']}: {hits}")How it makes money
Sell monthly subscriptions priced by the number of brands tracked and channels monitored. Agencies managing several clients are the strongest buyers; a weekly report alone can justify the plan.
Mistakes to avoid
- Sending raw keyword matches as alerts: names like "Apple" or "Notion" need an LLM relevance check to avoid noise.
- Monitoring too few channels: the value is coverage, so let clients add channels easily.
- Missing mentions in videos without captions: enable AI speech recognition for important channels.
Questions about this idea
Can I monitor brand mentions in YouTube videos?
Yes. By transcribing new uploads from a watchlist of channels, you can search everything said in each video for brand names and get the exact timestamp.
How often should I check channels for new videos?
Hourly is enough for most brand monitoring. Fast-moving categories like finance may justify more frequent checks.
How do I reduce false positives?
Combine keyword matching with an LLM check that reads the surrounding paragraph and confirms the mention refers to the brand.