Reels 趋势研究
找出在选定时期内某个细分市场中 Instagram Reels 上的病毒式传播内容,并解释原因,生成用户可直接行动的报告。
核心指标是 × 倍数(相对于作者中位数):Reels 播放量除以作者近期视频的中位数播放量(下限 1000)。它区分了因内容形式而爆火的 Reels 和仅仅因为账号规模大而数据好的 Reels。
脚本位于 ${CLAUDE_SKILL_DIR}/scripts/,参考笔记位于 ${CLAUDE_SKILL_DIR}/references/。每个脚本都将运行文件夹(下文中的 RUN)作为第一个参数,并打印其操作内容和成本。
开始之前
- 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>"并重启终端。切勿打印、记录或提交该令牌。 - Python 包。
python3 -c "import lingua, PIL";如果失败:pip install lingua-language-detector pillow(如果 pip 拒绝,添加--user或使用 venv)。ffmpeg是可选的,但强烈推荐:没有它,代理只能从封面图中标记领先者。在 Windows 上,使用python代替本文件中的python3。 - 需求确认。 只询问你无法推断的内容,一次消息,带有默认值:
- 细分市场,用用户的话来说(以及要排除的内容,例如“牙科,而不是牙科学生”);
- 市场:国家或语言,或“全世界”;
- 时间段:默认为最近 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 中。在进行全球或多语言运行之前,请阅读它。