Communitygithub.com

kkarpushin/reels-trends

研究任何细分市场、语言和日期范围内Instagram Reels的病毒式传播趋势。通过多语言关键词和标签发现热门Reels,对比每条Reels与其作者的平均播放量,从视频帧中标记领先格式,并生成包含发现和可拍摄创意的HTML报告。

reels-trends 是什么?

该技能是一个全面的Instagram Reels趋势分析工具,旨在帮助用户发现特定细分市场、行业或地区中病毒式传播的内容。它通过Apify平台执行多语言关键词和标签搜索,收集Reels数据,并使用核心指标“×倍数”(Reels播放量除以作者近期视频的中位数播放量)来区分内容本身病毒式传播与账号规模带来的流量。技能支持付费和免费Apify计划,包含完整的自动化工作流:从配置、搜索、合并、分析作者资料、评分,到从视频帧中标记内容格式、生成HTML报告和可操作创意。它还提供详细的配置指南、预算管理、多语言支持(包括俄语和英语UI),并强调数据诚实性,帮助用户准确解读趋势。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kkarpushin/reels-trends/tree/HEAD/skills/reels-trends

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Reels 趋势研究

找出在选定时期内某个细分市场中 Instagram Reels 上的病毒式传播内容,并解释原因,生成用户可直接行动的报告。

核心指标是 × 倍数(相对于作者中位数):Reels 播放量除以作者近期视频的中位数播放量(下限 1000)。它区分了因内容形式而爆火的 Reels 和仅仅因为账号规模大而数据好的 Reels。

脚本位于 ${CLAUDE_SKILL_DIR}/scripts/,参考笔记位于 ${CLAUDE_SKILL_DIR}/references/。每个脚本都将运行文件夹(下文中的 RUN)作为第一个参数,并打印其操作内容和成本。

开始之前

  1. Apify 令牌。 检查 echo ${APIFY_TOKEN:+set} 或文件 ~/.config/reels-trends/apify_token。如果都不存在,请询问用户创建令牌(https://console.apify.com/settings/integrations)并使用 mkdir -p ~/.config/reels-trends && read -s T && echo "$T" > ~/.config/reels-trends/apify_token && chmod 600 ~/.config/reels-trends/apify_token 保存。在 Windows 上:setx APIFY_TOKEN "<token>" 并重启终端。切勿打印、记录或提交该令牌。
  2. Python 包。 python3 -c "import lingua, PIL";如果失败:pip install lingua-language-detector pillow(如果 pip 拒绝,添加 --user 或使用 venv)。ffmpeg 是可选的,但强烈推荐:没有它,代理只能从封面图中标记领先者。在 Windows 上,使用 python 代替本文件中的 python3。
  3. 需求确认。 只询问你无法推断的内容,一次消息,带有默认值:
    • 细分市场,用用户的话来说(以及要排除的内容,例如“牙科,而不是牙科学生”);
    • 市场:国家或语言,或“全世界”;
    • 时间段:默认为最近 30 天;以今天结束的时间段即可,最新的 Reels 只是播放量较少;
    • 预算(美元):在免费 Apify 计划中默认为 5 美元,付费计划中为 10-15 美元;
    • 报告语言:默认为用户书写使用的语言(UI 字符串提供 ru 和 en)。

工作流程

1. 运行文件夹和配置

在当前项目中(或用户指定的位置;如果项目是 git 仓库,则将 reels-research/ 添加到其 .gitignore)创建 reels-research/<短横线命名>/ 并写入 config.json。首先阅读 ${CLAUDE_SKILL_DIR}/references/config.md:它解释了每个字段以及如何编写好的查询。要点:

  • segments:每个语言或市场一个,为大型市场提供 8-30 个本地查询(人们实际输入的短语、服务名称、俚语),为小型市场提供 3-6 个,以及根据市场调整的 min_views。英文查询从全世界获取内容;用每种语言编写该市场的查询。
  • relevance_regex:你所搜索的每种语言中该细分市场的词干(Reels 必须匹配才能保留)。
  • exclude_regex:绝不应计入的内容(成人服务、垃圾邮件、该细分市场词语的不相关含义)。
  • topics:8-12 个子主题,带有多语言正则表达式,从最具体到最通用排序,加上 fallback_topic。
  • focus_topics:你期望跨语言比较的主题。 ${CLAUDE_SKILL_DIR}/references/examples/ 包含一个完整的全球配置(按摩,19 种语言)和一个适用于免费计划的配置。

2. 账号检查和成本

python3 ${CLAUDE_SKILL_DIR}/scripts/check.py RUN
python3 ${CLAUDE_SKILL_DIR}/scripts/search.py RUN --dry

check.py 读取计划并选择引擎:付费 Apify 计划使用 memo23(服务器端提供日期和播放量过滤,错过免费),免费计划使用 hashtag(memo23 仅为免费账号提供一次查询,结果很少)。用一两行告诉用户计划、引擎、最坏情况成本和预算。脚本绝不会启动超过剩余 budget_usd 的运行;只有在用户同意时才能提高预算。

3. 搜索与合并

python3 ${CLAUDE_SKILL_DIR}/scripts/search.py RUN          # 5-25 分钟,在后台运行
python3 ${CLAUDE_SKILL_DIR}/scripts/merge.py RUN

在付费做其他任何事情之前,先阅读合并摘要:

  • 大量 not_in_niche:正则表达式太窄或查询偏离了方向;大量保留的 Reels 偏离主题:正则表达式太宽泛;
  • 某语言的 Reels 非常少:添加该语言的查询并运行 search.py RUN --only SEG --tag extra2,然后再次合并(原始文件会累积);
  • 在 hashtag 引擎上,outside_dates 通常为 70-90%:使用 30-60 天的时间段、更多更具体的标签、更大的 search.hashtag_results,或建议使用付费计划。

4. 作者、倍数、领先者

python3 ${CLAUDE_SKILL_DIR}/scripts/profiles.py RUN --dry   # 然后无 --dry
python3 ${CLAUDE_SKILL_DIR}/scripts/score.py RUN
python3 ${CLAUDE_SKILL_DIR}/scripts/leaders.py RUN

仅当作者拥有高于 profiles.floor_by_lang 的 Reels 时才获取其资料;调整下限或 --max 以符合预算。领先者 = 按 × 倍数的全球排名(附带播放量下限)+ 按播放量的排名 + 每种语言内按 × 倍数的排名。全球运行目标为 100-250 名领先者,单一市场运行目标为 30-80 名。

5. 丰富领先者数据(三个并行运行)

python3 ${CLAUDE_SKILL_DIR}/scripts/transcripts.py RUN
python3 ${CLAUDE_SKILL_DIR}/scripts/about.py RUN        # 每个领先者账号的国家,仅付费计划
python3 ${CLAUDE_SKILL_DIR}/scripts/media.py RUN        # 4 帧拼接图 + 封面图;CDN 链接几天后过期,因此在搜索后尽快完成

6. 从帧中标记领先者

python3 ${CLAUDE_SKILL_DIR}/scripts/batches.py RUN --size 20

它会写入 work/label_prompt.md(说明,已填充此细分市场的分类法)和每个 20 名领先者的一个批次文件,并打印 BATCH 和 OUT 路径。每批次启动一个子代理,全部在一条消息中以便并行运行,提示如下:

阅读工作标签说明文件 RUN/work/label_prompt.md 中的说明并严格遵循。在这些说明中,{BATCH} = <批次路径>,{OUT} = <输出路径>。

如果子代理不可用,则使用相同的说明自己标记批次。标签必须来自查看帧:视觉细分市场中的许多 Reels 没有语音,并且标题通常不描述屏幕上的内容。使用 python3 ${CLAUDE_SKILL_DIR}/scripts/labels.py RUN 检查覆盖率。

7. 在计数前审核

打开按 × 倍数排名前 20 的领先者的帧,以及代理标记或标记为不相关的每条 Reels。在 work/overrides.json 中使规则在各批次间一致(格式见 ${CLAUDE_SKILL_DIR}/references/content.md):例如,仅运动的 Reels 不是按摩;销售模特身体而非服务的内容农场归入 "flagged": {"<reel code>": "sexualised"};转发他人视频的归入 "repost"。被标记的 Reels 保留在数据和报告网格中(默认隐藏),但不计入格式表或创意。

8. 数据和故事

python3 ${CLAUDE_SKILL_DIR}/scripts/stats.py RUN

阅读摘要并找出 6-7 个企业主可以采取行动的发现。在撰写每个发现之前,对照数据验证每个说法:

  • 声称某种语言缺少某些内容需要证明你已使用正确的词语搜索了该语言(如果没有,则添加查询并重新运行);
  • 少于 5 名领先者的格式需要添加“少量 Reels”的说明;
  • 使用 work/scored.json 和 work/cls/ 上的简短 Python 代码片段计算任何额外的数字,切勿凭记忆。 然后按照 ${CLAUDE_SKILL_DIR}/references/content.md 编写 RUN/content.json:发现、格式/主题/语言说明、8-10 个创意(标题、用户可以在镜头前说出的钩子、为什么有效(附数字)、2-3 个示例 Reels 代码)以及“前几秒”部分的 12-16 个钩子。

9. 报告

python3 ${CLAUDE_SKILL_DIR}/scripts/build.py RUN

生成 report/index.html(在浏览器中打开)、report/artifact.html(仅正文版本,用于发布为 Claude 工件,如果环境有 Artifact 工具)和 report/reels.json(所有带有评分和标签的 Reels)。告诉用户报告在哪里、运行总成本(work/spend.jsonl)以及 3-5 个最有用的发现(用通俗语言)。

诚实地解读数据

  • 搜索返回的是显著的 Reels,而不是所有 Reels,因此中位数高于典型账号。将各组相互比较,而不是与用户自己的数据比较。
  • × 倍数是相对于作者而言:小账号会产生最大的乘数。这正是重点(影响力不需要粉丝),但要说明这一点。
  • 格式表描述了领先者,而不是整个细分市场。主题、时长和粉丝表则使用所有 Reels。
  • 时间段最后几天的 Reels 仍在积累播放量。
  • 语言不等于国家。使用 about.py 获取国家信息。

更多来自实际运行的教训在 ${CLAUDE_SKILL_DIR}/references/gotchas.md 中。在进行全球或多语言运行之前,请阅读它。

相关技能