Not in the top 1,000 by GitHub stars

waynefu2020/competitor-kol-radar

红人投放雷达— 站在营销总监的角度拆解竞品在 TikTok / Instagram / YouTube / 小红书上的红人营销打法。分析博主量级、播放、选题卖点、转化渠道,输出带建议网页报告。

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b4bf30cb9c81 → b4bf30cb9c81

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b4bf30cb9c81

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit b4bf30cb9c81ae073e17898f874b97350be45109

7GitHub stars
0stars in 7 days
1skill in this repository
4commits in 30 days

Heat

1.4
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 28, 2026Oct 28, 20267

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

competitor-kol-radar

When your agent uses it

竞品红人营销打法拆解(营销总监视角)——抓取竞品近 N 个月在 TikTok / Instagram / YouTube(国内小红书为实验功能)上的红人与 UGC 内容,判断它是"买量型""自来水型"还是"联盟铺量型",统计博主量级、内容量、播放中位数、主打选题与卖点、销售转化渠道,对标库定位,输出带"对我们意味着什么 + 建议动作"的网页报告和明细 CSV。只要用户想研究某个品牌/竞品怎么做红人营销、KOL 投放、海外社媒种草、出海内容打法、博主合作、UGC 声量、"它在 TikTok/IG/YouTube 上投了哪些博主"、"竞品的红人投放怎么样"、"帮我拆一下 XX 的海外营销",就应使用本技能,即使用户没说"竞品调研"。不用于:日常抖音竞品账号监控(用 competitor-radar)、单条视频解析、给自己找博主建联。

What it loads into context

Frontmatter

261 tokens

Always available to the agent

SKILL.md

2,278 tokens

When the skill is activated

Reference documents

9,249 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 0. 立项:先定决策问题
  2. 1. 写 brief
  3. 2. 成本预估 → 采集
  4. 3. 抽查(不可跳过)
  5. 4. 渠道与规模研究
  6. 5. 分析
  7. 6. 写结论(总监视角)
  8. 7. 出报告
  9. 8. 更新对标库
  10. 国内市场(实验)
  11. 参考文件

Scripts executed separately

  • scripts/agent_reach_import.py
  • scripts/analyze.py
  • scripts/build_report.py
  • scripts/collect.py
  • scripts/common.py
  • scripts/doctor.py
  • scripts/lexicons.py
  • scripts/normalize.py
  • scripts/tikhub.py

Files

  • .gitignoreasset92 bytes
  • INSTALL.mddoc2,599 bytes
  • LICENSEasset1,068 bytes
  • README.mddoc8,210 bytes
  • SKILL.mdcore7,872 bytes
  • SKILL.mdcore7,872 bytes
  • SKILL.mdcore7,872 bytes
  • SKILL.mdcore7,872 bytes
  • assets/brief.example.jsonasset1,127 bytes
  • assets/report_template.htmlasset44,689 bytes
  • docs/styles/brand.pngasset472,493 bytes
  • docs/styles/consulting.pngasset333,498 bytes
  • docs/styles/notebook.pngasset381,534 bytes
  • docs/styles/terminal.pngasset402,752 bytes
  • docs/styles/wrapped.pngasset351,995 bytes
  • examples/flowerknows/brief.jsonasset1,441 bytes
  • examples/flowerknows/narrative.jsonasset6,841 bytes
  • references/benchmarks.jsonasset815 bytes
  • references/channel-signals.mddoc1,917 bytes
  • references/fallback-agent-reach.mddoc3,611 bytes
  • references/methodology.mddoc3,897 bytes
  • references/pitfalls.mddoc2,984 bytes
  • references/platforms-domestic.mddoc2,008 bytes
  • references/platforms-overseas.mddoc2,111 bytes
  • references/report-spec.mddoc4,212 bytes
  • scripts/agent_reach_import.pyruns8,426 bytes
  • scripts/analyze.pyruns10,846 bytes
  • scripts/build_report.pyruns4,342 bytes
  • scripts/collect.pyruns5,587 bytes
  • scripts/common.pyruns1,346 bytes
  • scripts/doctor.pyruns3,146 bytes
  • scripts/lexicons.pyruns5,006 bytes
  • scripts/normalize.pyruns10,441 bytes
  • scripts/tikhub.pyruns1,681 bytes
Read SKILL.md

# 竞品红人投放雷达

用一套固定口径,把"某品牌在社媒上被谁、以什么方式、讲了什么、导向哪里买"拆清楚,并以营销总监能直接拿去开会的方式交付。

价值不在抓数据,在**口径和判断**:分清付费、寄样、联盟和自来水,剔除噪音,知道哪些数字不能信。这些规则写在 `references/` 里,先读再动手。

## 0. 立项:先定决策问题

动手前用一两句话确认(用户已经说清的就不要再问):

- **品牌和别名**(含中文名、各国写法、产品线名)
- **市场**:海外(默认)/ 国内(小红书,实验)/ 内外对比
- **时间窗**:默认近 90 天
- **这份调研要支撑什么决策**:对标学习、进入新市场、定预算、找可复制打法、做内容选题……决策问题决定报告的"建议动作"往哪写。用户没说就默认"我们能借鉴什么"。
View the complete source on GitHub

Skills included

  • competitor-kol-radar

Repository facts

License
MIT
Created
Oct 26, 2026
Last pushed
Oct 26, 2026
Forks
0
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 3 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 81 signals by file

.gitignore

  • Access to secretsline 4
    [Credential-related source omitted]

INSTALL.md

  • Network accessline 14
    DEST=~/.claude/skills/competitor-kol-radar   # 按上表换成你的目录 if [ -d "$DEST/.git" ]; then git -C "$DEST" pull --ff-only; else git clone https://github.com/waynefu2020/competitor-kol-radar.git "$DEST"; fi
  • Network accessline 15
    if [ -d "$DEST/.git" ]; then git -C "$DEST" pull --ff-only; else git clone https://github.com/waynefu2020/competitor-kol-radar.git "$DEST"; fi
  • Network accessline 21
    mkdir -p "$DEST" && curl -L https://github.com/waynefu2020/competitor-kol-radar/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 -C "$DEST"
  • Network accessline 38
    - 数据来自 TikHub,注册地址 https://tikhub.io ,一次海外竞品调研大约花 $0.5–1。

README.md

  • Network accessline 76
    帮我安装这个 Skill:https://github.com/waynefu2020/competitor-kol-radar
  • Network accessline 82
    - **有 Key**:直接发给它,它会帮你安全保存。到 [tikhub.io](https://tikhub.io) 注册就能拿到,一次海外调研大约 $0.5–1。
  • Network accessline 101
    git clone https://github.com/waynefu2020/competitor-kol-radar.git ~/.claude/skills/competitor-kol-radar
  • Access to secretsline 106
    [Credential-related source omitted]
  • Network accessline 112
    用 [Agent Reach](https://github.com/Panniantong/Agent-Reach) 的免费工具链(yt-dlp、xhs-cli、网页搜索):

SKILL.md

  • Access to secretsline 30
    [Credential-related source omitted]

assets/report_template.html

  • Network accessline 2
    <meta name="claude:viewport-fit-sides" content="cover"> <script>document.documentElement.dataset.style = "__STYLE__";</script> <link rel="preconnect" href="https://fonts.googleapis.com">
  • Network accessline 3
    <script>document.documentElement.dataset.style = "__STYLE__";</script> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  • Network accessline 4
    <link rel="preconnect" href="https://fonts.googleapis.com">
  • Network accessline 5
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

examples/flowerknows/narrative.json

  • Network accessline 119
    {       "title": "Beauty Independent",       "url": "https://www.beautyindependent.com/flower-knows-brings-fairytale-aesthetic-ulta-beauty-c-beauty-gains-ground/"
  • Network accessline 120
    "title": "Beauty Independent",       "url": "https://www.beautyindependent.com/flower-knows-brings-fairytale-aesthetic-ulta-beauty-c-beauty-gains-ground/"     },
  • Network accessline 121
    "url": "https://www.beautyindependent.com/flower-knows-brings-fairytale-aesthetic-ulta-beauty-c-beauty-gains-ground/"
  • Network accessline 123
    {       "title": "PRNewswire / StreetInsider",       "url": "https://www.streetinsider.com/PRNewswire/Flower+Knows+Expands+U.S.+Retail+Distribution+By+Entering+Ulta+Beauty/25715380.html"
  • Network accessline 124
    "title": "PRNewswire / StreetInsider",       "url": "https://www.streetinsider.com/PRNewswire/Flower+Knows+Expands+U.S.+Retail+Distribution+By+Entering+Ulta+Beauty/25715380.html"     },
  • Network accessline 125
    "url": "https://www.streetinsider.com/PRNewswire/Flower+Knows+Expands+U.S.+Retail+Distribution+By+Entering+Ulta+Beauty/25715380.html"
  • Network accessline 127
    {       "title": "界面新闻",       "url": "https://www.jiemian.com/article/13288116.html"
  • Network accessline 128
    "title": "界面新闻",       "url": "https://www.jiemian.com/article/13288116.html"     }
  • Network accessline 129
    "url": "https://www.jiemian.com/article/13288116.html"

references/fallback-agent-reach.md

  • Network accessline 3
    [Agent Reach](https://github.com/Panniantong/Agent-Reach) 是一组免费的命令行和 MCP 工具(yt-dlp、xhs-cli、Exa 搜索、Jina 网页阅读等)。没有 TikHub Key 时用它兜底,能出报告,但**数据完整度明显更低**,报告里必须写清楚。
  • Access to secretsline 9
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]

references/platforms-overseas.md

  • Network accessline 3
    [Credential-related source omitted]

references/report-spec.md

  • Network accessline 44
    {"type": "照搬", "title": "把包装做成值得拍的东西", "detail": "……", "priority": "高", "budget": "中", "measure": "UGC 中'包装/开箱'主题占比;3 个月"}   ],   "sources": [{"title": "Beauty Independent", "url": "https://..."}],
  • Network accessline 45
    ],   "sources": [{"title": "Beauty Independent", "url": "https://..."}],   "method_notes": ["TikTok 商业标记字段含义为样本推断。"]
  • Network accessline 46
    "sources": [{"title": "Beauty Independent", "url": "https://..."}],

scripts/agent_reach_import.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 66
    rows = []     for q in queries:         url = 'https://www.youtube.com/results?' + urllib.parse.urlencode({'search_query': q, 'sp': 'CAI='})
  • Network accessline 67
    for q in queries:         url = 'https://www.youtube.com/results?' + urllib.parse.urlencode({'search_query': q, 'sp': 'CAI='})         out, err = run(['yt-dlp', '--no-update', '--flat-playlist', '--playlist-end', str(20 * pages), '-J', url]
  • Network accessline 68
    url = 'https://www.youtube.com/results?' + urllib.parse.urlencode({'search_query': q, 'sp': 'CAI='})
  • Network accessline 77
    views=e.get('view_count'), likes=None, comments=None, ts=None, ts_unknown=True,                        text=(e.get('title') or '') + ' ' + (e.get('description') or ''), title=e.get('title'),                        url=f"https://youtu.be/{e.
  • Network accessline 78
    text=(e.get('title') or '') + ' ' + (e.get('description') or ''), title=e.get('title'),                        url=f"https://youtu.be/{e.get('id')}", paidflag=False, shop=False, disclosed=False, source='agent-reach:yt-dlp')             if b
  • Network accessline 79
    url=f"https://youtu.be/{e.get('id')}", paidflag=False, shop=False, disclosed=False, source='agent-reach:yt-dlp')             if browser:                 d_out, _ = run(['yt-dlp', '--no-update', '-j', '--skip-download', '--cookies-from-brows
  • Access to secretsline 81
    [Credential-related source omitted]
  • Network accessline 120
    break                 for it in items:                     nc = it.get('note_card') or {}
  • Network accessline 121
    for it in items:                     nc = it.get('note_card') or {}                     if not nc:
  • Network accessline 122
    nc = it.get('note_card') or {}
  • Network accessline 130
    comments=cn_num(ii.get('comment_count')), ts=ts, ts_unknown=ts is None, text=nc.get('display_title') or '',                                      title=nc.get('display_title'), note_type=nc.get('type'),                                      u
  • Network accessline 131
    [Credential-related source omitted]
  • Network accessline 132
    [Credential-related source omitted]
  • Access to secretsline 145
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]

scripts/analyze.py

  • Executable scriptline 1
    Executable file

scripts/build_report.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    REQUIRED = ['verdict', 'summary', 'actions'] GF = 'https://fonts.googleapis.com/css2?'
  • Network accessline 15
    GF = 'https://fonts.googleapis.com/css2?'

scripts/collect.py

  • Executable scriptline 1
    Executable file

scripts/common.py

  • Executable scriptline 1
    Executable file

scripts/doctor.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 52
    [Credential-related source omitted]
  • Network accessline 59
    else:             ok = False             print(f'❌ TikHub Key 无法使用({err})。到 https://tikhub.io 后台确认 Key 是否正确、是否过期,再重新保存。')
  • Network accessline 60
    ok = False             print(f'❌ TikHub Key 无法使用({err})。到 https://tikhub.io 后台确认 Key 是否正确、是否过期,再重新保存。')     else:
  • Network accessline 61
    print(f'❌ TikHub Key 无法使用({err})。到 https://tikhub.io 后台确认 Key 是否正确、是否过期,再重新保存。')
  • Network accessline 62
    else:         print('⚠<U+FE0F>  没有 TikHub Key:可以先用免费兜底方案(数据少一些),或到 https://tikhub.io 注册拿 Key,'               '然后把 Key 发给 Agent 保存。')
  • Network accessline 63
    print('⚠<U+FE0F>  没有 TikHub Key:可以先用免费兜底方案(数据少一些),或到 https://tikhub.io 注册拿 Key,'

scripts/lexicons.py

  • Executable scriptline 1
    Executable file

scripts/normalize.py

  • Executable scriptline 1
    Executable file
  • Network accessline 126
    views=st.get('play_count'), likes=st.get('digg_count'), comments=st.get('comment_count'), ts=x.get('create_time'),                      text=(x.get('desc') or '') + ' ' + tags, region=x.get('region'),                      url=f"https://www.
  • Network accessline 127
    text=(x.get('desc') or '') + ' ' + tags, region=x.get('region'),                      url=f"https://www.tiktok.com/@{au.get('unique_id')}/video/{x.get('aweme_id')}",                      paidflag=bool(x.get('is_ads')), shop=shop, disclosed=
  • Network accessline 128
    url=f"https://www.tiktok.com/@{au.get('unique_id')}/video/{x.get('aweme_id')}",
  • Network accessline 134
    followers=None, views=it.get('play_count') or it.get('ig_play_count') or it.get('view_count'),                      likes=it.get('like_count'), comments=it.get('comment_count'), ts=it.get('taken_at'),                      text=(it.get('capt
  • Network accessline 135
    likes=it.get('like_count'), comments=it.get('comment_count'), ts=it.get('taken_at'),                      text=(it.get('caption') or {}).get('text') or '', url=f"https://www.instagram.com/p/{it.get('code')}/",                      paidflag=
  • Network accessline 136
    text=(it.get('caption') or {}).get('text') or '', url=f"https://www.instagram.com/p/{it.get('code')}/",
  • Network accessline 162
    ts=int(datetime.datetime.fromisoformat(d['publish_date']).timestamp()),                  text=(d.get('title') or '') + ' ' + desc, clstext=(d.get('title') or '') + '\n' + rel,                  url=f'https://youtu.be/{vid}', paidflag=False, 
  • Network accessline 164
    url=f'https://youtu.be/{vid}', paidflag=False, shop=False, disclosed=False, title=d.get('title')))

scripts/tikhub.py

  • Executable scriptline 1
    Executable file
  • Network accessline 8
    BASE = 'https://api.tikhub.io'
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 19
    [Credential-related source omitted]
  • Network accessline 27
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Network accessline 30
    for attempt in range(retries):         try:             with urllib.request.urlopen(req, timeout=90) as r:
  • Network accessline 31
    try:             with urllib.request.urlopen(req, timeout=90) as r:                 return json.load(r)
  • Network accessline 32
    with urllib.request.urlopen(req, timeout=90) as r:

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 7 facts
Signal confidence: 67 facts

and 17 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.