CtrlK
BlogDocsLog inGet started
Tessl Logo

andrebrov/viral-scout

Find high-performing short-form videos on AI × e-commerce topics across YouTube and Instagram, in English and Russian, filtered by view count. Presents a shortlist for the user to pick from, then saves the picks to the shared reel backlog with a note on what format or hook is worth stealing. Use when the user asks what is working on video right now, wants viral video references, wants ideas for what to shoot, or says "viral scout" / "what's popping". Research and selection only — no video is produced here.

77

Quality

97%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

SKILL.md

name:
viral-scout
description:
Find high-performing short-form videos on AI × e-commerce topics across YouTube and Instagram, in English and Russian, filtered by view count. Presents a shortlist for the user to pick from, then saves the picks to the shared reel backlog with a note on what format or hook is worth stealing. Use when the user asks what is working on video right now, wants viral video references, wants ideas for what to shoot, or says "viral scout" / "what's popping". Research and selection only — no video is produced here.

Viral Scout

Finds what is already working, so a reel can borrow a format — never a topic. Ends by putting picks in backlog/ideas.json, which reel-script reads.

No Apify, no API keys, no cost

scripts/find_viral.py reads each platform's own embedded JSON, the technique that replaced a $229/mo Apify scraper in app4 at 100% recall:

  • YouTube — the search page embeds ytInitialData with a view count per result. Plain fetch, no browser, no quota. Sorted by view count server-side.
  • Instagrami.instagram.com/api/v1/users/web_profile_info returns recent media with video_play_count, given the public X-IG-App-ID header. This is per account, not search, so you curate whose numbers matter — better signal than hashtag roulette.
BROLL=.claude/skills/viral-scout/scripts
python3 $BROLL/find_viral.py \
    --yt "AI agent facebook ads" "shopify AI automation" --lang en \
    --ig shopify klaviyo triplewhale \
    --min-views 500000 --out work/candidates.json
python3 $BROLL/find_viral.py --yt "ИИ для интернет-магазина" --lang ru --min-views 200000

Run English and Russian as separate passes — the --lang header changes what YouTube returns, and Russian thresholds should be lower (a 200k RU video is the same signal as a 500k EN one).

The discipline: format, not topic

A raw run returns a lot of "I Tried AI Dropshipping For 7 Days". That is not a reel to make; it is a format that works. Never bring the user a list to copy the subject of. For each candidate, answer one question:

What did this video do in its first 3 seconds that made people stay?

Then bring the ones whose answer transfers to a first-party technical take.

Reject on sight, whatever the view count:

  • get-rich / dropshipping / "make money with AI" — wrong audience entirely
  • tutorials and step-by-steps — a different content type, not an opinion reel
  • anything whose hook is a thumbnail promise the video does not pay off
  • videos over ~10 minutes; the format does not transfer to 90 seconds

Keep when the video is: an operator telling a specific failure, a contrarian take on a tool everyone likes, a number nobody else published, or a teardown of something that broke in public.

Step 1 — Choose the queries

Read .claude/skills/reel-script/voice.md first. The beat is AI × e-commerce: agents running ads, analytics copilots, AI in checkout and support, platform automation. Not general AI, not general startups — those pools are enormous and almost none of it lands with a DTC founder.

Six to eight queries per run, mixing the two sides of the beat. For Instagram, keep a standing account list in backlog/ig_accounts.txt rather than guessing.

Step 2 — Shortlist

Present a table, ~10 rows, best first. Views alone is not the ranking — a 600k-view operator confession beats a 4M-view dropshipping video every time.

| # | views | platform | who | what the hook does | transferable? |

Say plainly which ones you would skip and why. A run where you recommend two of ten is a good run.

⏸ Gate — the user picks

They watch, they choose. Never add to the backlog without an explicit pick.

Step 3 — Save with the lesson, not the link

A bare URL is worthless in a week. Each backlog entry records the format observation that made it worth keeping:

{"id":"v-20260831-01","kind":"video","status":"new","added":"2026-08-31",
 "url":"https://youtube.com/watch?v=...","views":612000,"platform":"youtube",
 "title":"...","why":"opens on the invoice, not the story — the number is the hook",
 "steal":"lead with the receipt on screen before saying a word",
 "topic":["ads","agents"]}

Append to backlog/ideas.json. reel-script Step 1 reads steal when shaping the hook.

Principles

  • Format, not topic. Copying the subject makes you the fourth person with that take.
  • An unknown view count never clears the threshold — it is excluded, not assumed.
  • Two good picks beat ten mediocre ones; the backlog is a queue, not a hoard.
  • Russian and English are separate runs with separate thresholds.

SKILL.md

tile.json