mit einem Klick
ai-topic-scout
// AI短视频选题追踪系统。自动抓取指定YouTube博主视频和Twitter博主推文,分析内容,聚合跨平台热点主题,生成带热度评分和选题建议的分析报告,结果写入钉钉AI表格。适用于:定时抓取AI领域博主内容、分析短视频选题热度、跨平台话题聚合、生成选题建议。触发词:"抓取选题"、"分析选题"、"选题scout"、"topic scout"、"抓取博主内容"、"选题分析"。
// AI短视频选题追踪系统。自动抓取指定YouTube博主视频和Twitter博主推文,分析内容,聚合跨平台热点主题,生成带热度评分和选题建议的分析报告,结果写入钉钉AI表格。适用于:定时抓取AI领域博主内容、分析短视频选题热度、跨平台话题聚合、生成选题建议。触发词:"抓取选题"、"分析选题"、"选题scout"、"topic scout"、"抓取博主内容"、"选题分析"。
[HINT] Laden Sie das komplette Skill-Verzeichnis einschließlich SKILL.md und aller zugehörigen Dateien herunter
| name | ai-topic-scout |
| description | AI短视频选题追踪系统。自动抓取指定YouTube博主视频和Twitter博主推文,分析内容,聚合跨平台热点主题,生成带热度评分和选题建议的分析报告,结果写入钉钉AI表格。适用于:定时抓取AI领域博主内容、分析短视频选题热度、跨平台话题聚合、生成选题建议。触发词:"抓取选题"、"分析选题"、"选题scout"、"topic scout"、"抓取博主内容"、"选题分析"。 |
首次使用前,检查并安装所有依赖。按顺序执行:
# mcporter — MCP Server 调用工具
npm install -g mcporter
# bird — Twitter/X CLI
npm install -g @steipete/bird
# yt-dlp — YouTube 视频/字幕下载
pip install yt-dlp
# 钉钉 AI 表格操作
clawhub install dingtalk-ai-table
# YouTube 字幕抓取
clawhub install youtube-watcher
如果 clawhub 未安装:
npm install -g clawhub
钉钉 MCP Server:
mcporter config add dingtalk-ai-table --url "<你的URL>"
Twitter Cookie:
auth_token 和 ct0~/.config/bird/config.json5:{
authToken: "<你的auth_token>",
ct0: "<你的ct0>"
}
⚠️ 当前版本 bird 不会自动读取 config.json5,CLI 调用时仍需通过
--auth-token和--ct0参数传入。
mcporter --version
mcporter list dingtalk-ai-table --schema # 确认出现 list_bases / create_records 等新版 tools
bird check
yt-dlp --version
Base 名称:AI短视频选题
需要 4 张数据表,首次运行时自动创建(参见 references/setup-guide.md):
| 表名 | 用途 |
|---|---|
| YouTube博主 | 追踪的油管频道列表 |
| Twitter博主 | 追踪的推特账号列表 |
| 抓取内容 | 原始抓取记录(视频/推文) |
| 选题分析 | 聚合分析后的选题 |
表结构详见 references/table-schema.md。
仅第一次使用时执行,步骤详见 references/setup-guide.md:
references/config.json按顺序执行:
cat {baseDir}/references/config.json
读取 baseId、各 tableId、各字段 fieldId。
对「YouTube博主」表中状态为「活跃」的每个博主:
# 获取最新3个视频ID
yt-dlp --flat-playlist --print "%(id)s %(title)s" -I 1:3 "https://www.youtube.com/@{频道ID}/videos"
# 对每个视频,先检查 fetch 表是否已存在(用原文链接去重)
mcporter call dingtalk-ai-table query_records --args '{
"baseId":"<baseId>","tableId":"<fetchTableId>",
"keyword":"youtube.com/watch?v=<videoId>"
}' --output json
# 如果不存在,抓取字幕
python3 {youtube-watcher-baseDir}/scripts/get_transcript.py "https://www.youtube.com/watch?v=<videoId>"
# 用字幕内容生成摘要,写入 fetch 表
对「Twitter博主」表中状态为「活跃」的每个博主:
bird user-tweets @{用户名} -n 5 --plain --auth-token "<token>" --ct0 "<ct0>"
对每条推文,检查 fetch 表是否已存在(用原文链接去重),新内容写入 fetch 表。
mcporter call dingtalk-ai-table create_records --args '{
"baseId":"<baseId>",
"tableId":"<fetchTableId>",
"records":[{
"cells":{
"<来源fieldId>":"YouTube 或 Twitter",
"<博主名称fieldId>":"博主名",
"<标题fieldId>":"内容标题",
"<内容摘要fieldId>":"200字以内摘要",
"<原文链接fieldId>":"完整URL",
"<发布时间fieldId>":"YYYY-MM-DD",
"<抓取时间fieldId>":"YYYY-MM-DD HH:mm",
"<内容类型fieldId>":"视频/推文/长推文/转推评论",
"<关键词标签fieldId>":"逗号分隔的标签",
"<处理状态fieldId>":"待分析"
}
}]
}' --output json
mcporter call dingtalk-ai-table query_records --args '{
"baseId":"<baseId>","tableId":"<fetchTableId>",
"filters":{"operator":"and","operands":[
{"operator":"eq","operands":["<处理状态fieldId>","<待分析optionId>"]}
]}
}' --output json
分析所有「待分析」记录,按以下规则聚合成选题:
满分 100,计算维度:
| 维度 | 权重 |
|---|---|
| 相关内容数量 | 25% |
| 跨平台覆盖(YouTube+Twitter都有) | 20% |
| 跨博主覆盖(多人提到) | 20% |
| 内容深度(长推文/视频 vs 短推文) | 15% |
| 时效性(越新越高) | 10% |
| 主流媒体报道(通过搜索验证) | 10% |
对每个选题用可用的搜索工具(如 Tavily、web search 等)补充背景知识。搜索关键词 + 当前年份,取新闻类结果。
每条选题包含:
mcporter call dingtalk-ai-table create_records --args '{
"baseId":"<baseId>",
"tableId":"<analysisTableId>",
"records":[{
"cells":{
"<主题fieldId>":"emoji + 主题标题",
"<热度评分fieldId>":85,
"<相关内容数fieldId>":3,
"<来源博主fieldId>":"博主1, 博主2",
"<主题分类fieldId>":"大模型/AI应用/AI编程/AI硬件/AI政策/AI创业/AI开源/其他",
"<背景信息fieldId>":"背景描述...",
"<选题建议fieldId>":"完整建议...",
"<分析时间fieldId>":"YYYY-MM-DD HH:mm",
"<状态fieldId>":"待审核"
}
}]
}' --output json
关键:关联字段写入必须用 {"linkedRecordIds":[...]} 格式,不能直接传数组:
mcporter call dingtalk-ai-table update_records --args '{
"baseId":"<baseId>",
"tableId":"<analysisTableId>",
"records":[{
"recordId":"<选题recordId>",
"cells":{
"<相关内容fieldId>":{"linkedRecordIds":["<fetchRecordId1>","<fetchRecordId2>"]}
}
}]
}' --output json
将已关联到选题的 fetch 记录标记为「已分析」。 对不值得做选题的内容(非AI相关、过于轻量)标记为「已忽略」。
详见 references/gotchas.md,包含钉钉 API 的坑和 bird/yt-dlp 使用注意事项。
当同一话题被多条内容覆盖时,将相关内容全部关联到同一选题。选题标题应反映聚合后的更大视角,而非单条内容的标题。
示例:Sam Altman 的 GPT-5.4 推文 + Codex Security 转推 + NVIDIA 算力扩展推文 + Mollick 的算力经济学分析 → 聚合为「OpenAI一周三连发:GPT-5.4 + Codex Security + 算力军备竞赛」