topic-scout
Skill1 starsChanged 3 months agoApache-2.0View on GitHub
Finds topics that already work in the channel's niche, with the numbers behind them. Use when the user asks to "키워드 찾아", "시장 키워드", "잘 되는 주제", "우리 채널 키워드", "아웃라이어 주제", "지금 뭐가 핫해", "find keywords for my channel", "scout topics", "스레드/X/인스타에서 뭐가 이슈야". Reads profile.md, calls youtube_topic_scout (channel-median times a multiplier, never raw views; US and CN markets by default) and sns_issue_scout (site search over threads.com, x.com and instagram.com plus Google Trends rising queries — mention counts, not engagement), writes market-keywords.md and a chart-first HTML page under data/[channel]/growth/keywords/, and lets the user pick phrases for the storyboard, autoproduce and grow-youtube topic pool.
- Reads credentials
2 other projects use a version of this.
Adopted by
Most recently taken up by
- enstw/thesisbug2their own version, first seen Nov 8, 2026
- chanuk0/agent-skills-publictheir own version, first seen Sep 6, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- chanuk0/agent-skills-public★ 0same name
- enstw/thesisbug2★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- autoproduceSkill
- brandingSkill
- channelSkill
- compose-blenderSkill
- datagoSkill
- edit-speechSkill
- generate-cut-imagesSkill
- generate-cut-videosSkill
- grow-instagramSkill
- grow-threadsSkill
- grow-youtubeSkill
- ingestSkill
- inspect-contentSkill
- introSkill
- platform-guideSkill
- produceSkill
- project-initSkill
- publishSkill
- review-cameraSkill
- review-contextSkill
- review-cut-imagesSkill
- review-cut-videosSkill
- review-recentSkill
- setup-instagramSkill
- setup-threadsSkill
- setup-youtubeSkill
- storyboardSkill
- upscale-videoSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. About 0 are common, 6 are distinctive, and 15 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
15
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
HITL records: Keep selected and banned phrases in channel keyword files.
- Distinctive: line 46
Write it so someone who isn't a YouTube analyst can tell what the topic is.
- Distinctive: line 51
Don't use jargon like seed, phrase, outlier, gap, yardstick, or quota on screen.
- Very specific: line 54
Don't redraw the tables in chat.
- Very specific: line 66
If data/<slug>/profile.md doesn't exist, point to /social-flow:channel add and stop.
- Very specific: line 83
Put the responses in growth/keywords/us.json and cn.json, then merge with references/merge-scout.py --out market-keywords.json us.json …
- Very specific: line 91
Leave the response as-is in growth/keywords/sns-issues.json.
- Very specific: line 94
Don't call the same seed twice in one day — if the file carries today's date, read it.
- Very specific: line 95
If there are errors, only that platform·seed dropped out, so write one line about it in the report.
- Very specific: line 97
When the user asks only "what's hot right now" with no channel, answer with one mcp__social-flow__serp_trending_now call (geo: KR, hours: …
- Very specific: line 135
Don't hand-draw the SVG. Don't hand-polish the interpretation sentences either.
- Very specific: line 137
Don't put multiplier or research-method sentences in it.
- Very specific: line 149
If a grow-youtube plan exists, ask once more whether to add them to the topic pool or topic_keywords.
- Very specific: line 157
If ego lite is available, open the HTML with file://.
- Very specific: line 161
If the YouTube tool comes back 400, point to one of the two routes and stop.
- Very specific: line 176
Reference topics, don't copy them: Don't reuse a title, thumbnail, or script.
- Very specific: line 177
When an outlier has gaps (questions in the comments), do one thing better — fill that gap.
- Distinctive: line 180
Leave them in if the user wants.
- Very specific: line 189
Don't put a 5x on 10 views up as a topic — the tool's minViews default of 1000 is that floor.
- Distinctive: line 191
Don't quote an SNS snippet as if it were the post body — it's Google's summary and can differ from the post (for Threads, an auto-generated …
- Distinctive: line 194
Don't call SNS phrases "topics that blew up".
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Automatic execution policy: Read automation guidance first. Creative rules and review findings guide improvements; scores, review/hash/freeze records, CTA choices and intermediate approval steps do not block authorized work. Preserve actual external-action authorization and stop at the artifact the user requested. This policy supersedes older quality-gate wording below.
HITL records: Keep selected and banned phrases in channel keyword files; these are not episode approvals. Preserve actual provenance in local files and reuse existing authorization. This adds no approval gate.
Finding market-validated topics
Views usually don't come because you posted what you wanted to say. This skill looks inside the channel's topic area for subjects people already stayed with. It picks by multiple of that channel's recent-upload median, never by absolute views — 100k on a huge channel and 100k on a new one mean different things.
Next to YouTube there's a separate SNS issues section — what is going around
right now on Threads, X, and Instagram on the same topic (sns_issue_scout),
plus Google rising searches. That section uses a different yardstick. It's a
mention list with no engagement numbers, so it answers "what is being talked
about", not "what blew up", and it never gets mixed into the same column as the
YouTube multiplier table. The limits are spelled out in references/method.md
§SNS issues.
/social-flow:topic-scout my-channel
/social-flow:topic-scout my-channel "AI work automation"The artifact a human looks at is data/<channel>/growth/keywords/market-keywords.html.
Write it so someone who isn't a YouTube analyst can tell what the topic is.
Page one is "the content we're making this time" — what the chosen keyword
covers in the market, and which episode we'll make. Page two is one identical
block per candidate keyword. How we picked is one section at the end. Don't
spend a page on evidence charts.
Don't use jargon like seed, phrase, outlier, gap, yardstick, or quota on screen.
Render English and Chinese titles as short plain wording. The script builds the
interpretation from the numbers.
Don't redraw the tables in chat.
market-keywords.md in the same folder is the source of truth for the numbers
and chosen phrases that grow-youtube / autoproduce read. topic_source: scout
reads that md.
The reasoning behind the method is in references/method.md. The md slots are in
references/report-template.md. Never hand-write the HTML — references/render-report.py
produces it.
Procedure
- Confirm the channel — with no argument, glob
data/*/profile.mdand pick. Ifdata/<slug>/profile.mddoesn't exist, point to/social-flow:channel addand stop. - Seed queries — if the user gave a query, keep it as the internal noun. If not,
split profile §1 topic area into 2~3. If the line is long, take only the core
nouns. Don't put the target-audience sentence into the seeds. Build the
English and Chinese seeds with the table in
references/method.md. Don't drop Korean seeds into US/CN search as-is. - Call the tool — call
mcp__social-flow__youtube_topic_scoutonce per market. The default is the US and China. If the user says "Korea only", one KR/ko call.- US:
regionCode: USlanguage: en· English seeds - China:
regionCode: CNlanguage: zh· Chinese seeds query: the first line of that market's seeds ·extraQueries: the rest (max 2)channel: slugduration:short(anyif the user mentions long-form)publishedAfterDays: 90channelLimit: 15 (per market)includeComments: truelimit: 15 Put the responses ingrowth/keywords/us.jsonandcn.json, then merge withreferences/merge-scout.py --out market-keywords.json us.json cn.json. 3b. SNS issues — callmcp__social-flow__sns_issue_scoutonce. Unlike YouTube, Korea is the default here — those three networks are where we post to a Korean timeline, so US and Chinese mentions aren't usable material.query: the first Korean seed line ·extraQueries: the rest (max 2)gl: kr·hl: ko·recency: week(dayif the user says "today's issues")platforms: omit (all three — Threads, X, Instagram) ·includeTrending: true·limit: 15Leave the response as-is ingrowth/keywords/sns-issues.json. Credits are 3 platforms × number of seeds + 1 for rising searches (3 seeds = 10 calls, SerpApi free tier is 250/month). Don't call the same seed twice in one day — if the file carries today's date, read it. If there areerrors, only that platform·seed dropped out, so write one line about it in the report. When the user asks only "what's hot right now" with no channel, answer with onemcp__social-flow__serp_trending_nowcall (geo: KR,hours: 24) and don't create files.
- US:
- Overlap with existing topics — read the
data/<slug>/episodes/*/directory names and storyboard titles, and mark phrases already covered asyesin the Mark column of the md topic-phrase table. The tool doesn't throw those results away — they can become follow-up episodes. 4b. Banned subjects — read the channel's banned lists and mark every phrase that matches asbannedin the same column. Three sources, in this order:- profile §2 Banned — the subjects and expressions the channel doesn't touch. This one decides topic eligibility.
- profile §3 Banned subjects — what must not show up in a generated picture. A phrase we could only illustrate with one of these is banned as a topic too.
- the growth plans at
data/<slug>/growth/*/growth-plan.md, where they exist —## Forbidden subjectsin the youtube and instagram plans,## Banned topicsin the threads one. Those headings are scoped to publishing; we apply them at scout time too, since a phrase we can't publish isn't a topic. This runs before step 6 so a banned phrase never reaches the pick list. Don't push the banned words back into the step-2 seeds — neither tool takes a negative query, so the only place this works is on the phrases that came back.
Report — fill the
references/report-template.mdslots intodata/<slug>/growth/keywords/market-keywords.md. In the same folder putmarket-keywords.json(the raw tool response) and amarket-keywords-YYYYMMDD.mdcopy. Then render the HTML.python3 ${CLAUDE_PLUGIN_ROOT}/skills/topic-scout/references/render-report.py \ --json data/<slug>/growth/keywords/market-keywords.json \ --sns data/<slug>/growth/keywords/sns-issues.json \ --md data/<slug>/growth/keywords/market-keywords.md \ --name "<channel display name>"The script writes
market-keywords.htmlandmarket-keywords-YYYYMMDD.html. With--sns, a "what SNS is talking about right now" page gets appended at the end — it shares colors and tables with the YouTube pages, but the script adds a sentence saying the scores mean something different. Fill the md's## SNS issuessection per thereport-template.mdslots (top 8 phrases · the rising searches that overlap a seed · three sample post links). Don't hand-draw the SVG. Don't hand-polish the interpretation sentences either. The## Chosen topicsline says "The market videos cover ~. We ~." in plain words. Don't put multiplier or research-method sentences in it.report.cssand the script hold the token and node grammar (single blue · viewBox width 700 · no red in the figures · no left accent border).- Pick — show the top 8 with AskUserQuestion and let the user choose which phrases
to use (multi-select). Take the eight off the ranking with the
bannedrows already removed, not off the raw score order — a banned phrase is dropped from the list, not shown greyed out. An option in AskUserQuestion is an offer, and offering a banned subject is the failure. Don't mix the SNS phrases into the same list — label them "what SNS is talking about" and add only two or three separately. Putting a YouTube-validated topic and a mention list on the same line makes the user read them as equally weighted. Write the chosen phrases into the md's## Chosen topics, then run the script once more to refresh the HTML cards. If a grow-youtube plan exists, ask once more whether to add them to the topic pool ortopic_keywords. Don't touch the plan frontmatter without approval. Even when adding, only append to the list and confirm with the user whetherstatus: approvedstays. - Report back — one line with the HTML path + the chosen phrases + a pointer to
"storyboard this topic" / "one episode via autoproduce". Don't redraw the
per-episode view table in chat. The source of truth a human reads is the HTML;
the one the loop reads is the md.
If ego lite is available, open the HTML with
file://.
Credentials
If the YouTube tool comes back 400, point to one of the two routes and stop. Don't
make anything up.
The SNS issue tool uses only SERPAPI_API_KEY — 401 is the key, 429 means the 250
monthly calls are used up. In that case leave the SNS section empty and write only
the YouTube section (and the reverse — the report goes out even when one side is missing).
- Recommended —
YOUTUBE_API_KEY(a public key with YouTube Data API v3 enabled in Google Cloud). It doesn't consume the publish quota. - Fallback —
youtube.readonlyfrom~/.config/social-flow/<slug>/youtube-oauth-client.json. A token holding onlyyoutube.uploadfor publishing gets search (100 units) refused. For reissuing, see publishreferences/token-setup.md.
Rules
- Reference topics, don't copy them. Don't reuse a title, thumbnail, or script.
When an outlier has
gaps(questions in the comments), do one thing better — fill that gap. - Mark phrases outside the channel topic area as
skipin the md topic-phrase table. Leave them in if the user wants. The HTML family strip reads that column. - Mark a phrase the channel bans as
bannedin the same column. There's no "leave it in if the user wants" here — off the topic axis is a judgement call, a ban isn't. It moves only when the user edits profile §2/§3 or the growth plan, and that edit comes first. Abannedmark beats a pick: the script keeps the phrase out of the cards, the family strip and the chosen-topics box, and prints it under "Off limits for this channel" so the drop stays visible. - This skill doesn't approve growth plans or queue markers. It observes and lists.
- It doesn't call publish tools.
- Don't put a 5x on 10 views up as a topic — the tool's
minViewsdefault of 1000 is that floor. Lower it only when told to explicitly. - Don't quote an SNS snippet as if it were the post body — it's Google's summary and can differ from the post (for Threads, an auto-generated topic summary sometimes comes back). Open the URL if you want to quote.
- Don't call SNS phrases "topics that blew up". They're mention counts with no engagement behind them.
Additional Resources
Reference Files
references/method.md— US and China by default, the EN/ZH seed table, quota, the limits of the SNS issue pathreferences/merge-scout.py— merge the per-market JSONreferences/report-template.md— themarket-keywords.mdslotsreferences/render-report.py— JSON + md (+ SNS JSON) → chart-first HTMLreferences/report.css— HTML tokens (the same blue and navy as the proposal)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

