← ClaudeAtlas

cyxj-youtube-topicslisted

YouTube 选题发现 + 判断。搜索 "Claude Code" 相关最近 48 小时新视频, 去重、按话题聚类、做硬信号 + 字幕内容分析,输出带 verdict(值得做/观望/跟风/跳过)+ 理由 + 差异化切口建议的选题报告。写入 Obsidian 选题库。 触发方式:「YouTube 选题」「找 YouTube 选题」「YouTube 最近有什么」「帮我找找最近的新选题」「跑一下选题发现」「有什么新视频」 边界:只做 YouTube 新视频的选题发现与判断;泛选题、短视频 IP 人群选题、文案式出选题不归本 skill。
chenyuxiaojin/xiaochen-skills · ★ 6 · AI & Automation · score 76
Install: claude install-skill chenyuxiaojin/xiaochen-skills
# youtube-topic-discovery:YouTube 选题发现 + 判断 ## 执行边界 一次调用跑一遍 7 步流程就结束——流水线的完整性由 launcher 保证,不由你保证。 输出 `CYXJ_RESULT_FILE=<路径>` 后立即终止:不要回头再拉一次新视频,不要二次调 `write_topics.py`, 不要"再补全一下"。也不要 echo 模仿 launcher 的 `===== 启动/结束/失败 =====` 日志格式。 ## 断点续传(每步执行前先看一眼) 上一次跑可能在中间某步失败(budget 烧光 / 网络挂 / Ctrl+C),`/tmp/yt_*.json` 中间产物可能还在。 **每步开始前检查对应输出文件,存在且 6h 内就跳过该步**——超过 6h 视为过期(48h lookback 窗口已显著移位): ```bash if [ -f /tmp/yt_videos.json ] && [ $(($(date +%s) - $(stat -f %m /tmp/yt_videos.json 2>/dev/null || stat -c %Y /tmp/yt_videos.json))) -lt 21600 ]; then echo "复用现有 /tmp/yt_videos.json(6h 内)" else python3 "$SKILL_DIR/youtube_search.py" > /tmp/yt_videos.json fi ``` (`stat -f` 是 BSD/macOS 写法,Linux 兜底用 `stat -c`;`$SKILL_DIR` 在下面「流程」开头定义。) LLM 步骤(第 3 步聚类 / 第 5 步 verdict)同理:先 `ls -la /tmp/yt_clusters.json /tmp/yt_final.json`,新鲜就直接读文件进下一步。 **第 6 步 write_topics.py 不做断点续传**——一旦写盘就更新了 `.seen_video_ids.json`、话题索引、判断日志,没有"重复写入"概念。`${CYXJ_TOPIC_DIR}` 下已有今天的 `YYYY-MM-DD HH-MM YouTube选题总览.md` 就直接终止,报告"今天已经跑过了"。 ## 角色 你是一个选题判断助手。任务不是把视频摆给用户看(那只是过滤器),而是**带理由地告诉用户哪些话题值得做、哪些是跟风、哪些该跳过**。理由比结论重要——好的理由能让用户反驳,反驳就是用户在思考选题。 ## 前置准备 跑之前需要 `YOUTUBE_API_KEY`(可多 key 轮询)、`CYXJ_TOPIC_DIR`、`APIFY_API_TOKEN` 三个必需项, 外加可选的 `CYXJ_USER_PROFILE`(有��才能给"差异化切口")和 `SUPADATA_API_KEY`(字幕兜底)。 **配置方法、多 key 轮询规则、各服务的免费额度、以及一批高级环境变量,见 `${CLAUDE_PLUGIN_ROOT}/skills/cyxj-youtube-topics/references/setup.md`**——首次使用或脚本报缺 key 时读它。 ## 流程 流程开头先定义 skill 目录(后续所有命令依赖它;`CLAUDE_PLUGIN_ROOT` 由 Claude Code 注入): ```bash SKILL_DIR="${CL