agentsclimarketplace

Cyxj notebook research

Skill chenyuxiaojin/xiaochen-skills/plugins/cyxj-notebook-research/skills/cyxj-notebook-research

Notebook LM 批量研究。将选题库中的 YouTube 视频提交给 Google Notebook LM, 生成综合研究报告,写入 Obsidian 研究报告目录。 触发方式:「研究选题库里的 XXX」「把这个选题提交给 Notebook LM」「用 Notebook LM 研究这个选题」「拉取 Notebook LM 的研究结果」From its SKILL.md

Install
npx -y skills add chenyuxiaojin/xiaochen-skills --skill cyxj-notebook-research

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 7 commands, including `export CYXJ_VAULT_BASE="$HOME/obsidian/灵感库"` and 6 more.

SKILL.md

4.7 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

notebook-research:Notebook LM 批量研究

你是一个选题研究助手。任务是将 Obsidian 选题库中的 YouTube 视频提交给 Google Notebook LM 进行研究分析,生成综合研究报告。

前置准备

首次使用前需要配置:

  1. 环境变量 CYXJ_VAULT_BASE — 指向你 Obsidian 库中的灵感库目录(包含「选题库」「研究报告」两个子目录):

    export CYXJ_VAULT_BASE="$HOME/obsidian/灵感库"
    

    建议加到 ~/.zshrc~/.bashrc。脚本会在 $CYXJ_VAULT_BASE/选题库/ 读取选题、$CYXJ_VAULT_BASE/研究报告/ 写入报告。

  2. Notebook LM CLI — 安装并登录:

    pip install notebooklm-py
    notebooklm login   # 浏览器登录 Google 账号
    
  3. Python 依赖pip install python-frontmatter

  4. 平台说明:脚本用 macOS 专属的 brctl download 处理 iCloud 占位文件。如果你的 Obsidian 库不在 iCloud 上(推荐本地路径或软链接),这部分会自动跳过、不影响使用。

流程

流程开头先定义 skill 目录(后续命令依赖它;CLAUDE_PLUGIN_ROOT 由 Claude Code 注入):

SKILL_DIR="${CLAUDE_PLUGIN_ROOT}/skills/cyxj-notebook-research"

第一步:确定选题文件

用户会说"帮我研究一下 XXX"。根据 XXX 找到对应的选题文件:

$CYXJ_VAULT_BASE/选题库/XXX.md

如果用户没有明确指定话题名,列出选题库中 status 为"未处理"的文件让用户选择。

第二步:读取 status 判断走哪个流程

读取选题文件的 frontmatter 中的 status 字段:

  • status: 未处理 → 走提交流程(submit)
  • status: 研究中 → 走拉取流程(fetch)
  • status: 已完成 → 告诉用户"这个话题已经研究过了,报告在 $CYXJ_VAULT_BASE/研究报告/ 下"
  • status: 异常 → 告诉用户"这个话题之前处理异常",读取 frontmatter 的 error 字段说明原因,提示用户可以:1) 检查原因并修复后将 status 改回「未处理」重新提交;2) 直接将 status 改回「研究中」重新拉取

第三步(A):提交流程

运行脚本的 submit 子命令:

python3 "$SKILL_DIR/notebook_research.py" submit "$CYXJ_VAULT_BASE/选题库/XXX.md"

脚本会:

  1. 提取选题文件中的所有 YouTube 链接
  2. 创建 Notebook LM 笔记本
  3. 将所有视频添加为源
  4. 更新选题文件的 frontmatter(写入 notebook_id,status 改为"研究中")

脚本输出 JSON 摘要到 stdout,包含 notebook_id、成功/失败数量。

根据输出告诉用户:

已提交 N 个视频到 Notebook LM(M 个成功,K 个失败)。
Notebook LM 需要几分钟来索引视频内容。
等几分钟后,再说"帮我研究一下 XXX"就能拉取结果。

第三步(B):拉取流程

运行脚本的 fetch 子命令:

python3 "$SKILL_DIR/notebook_research.py" fetch "$CYXJ_VAULT_BASE/选题库/XXX.md"

脚本会:

  1. 检查所有源的索引状态
  2. 如果有未完成的源,输出提示并以 exit code 2 退出
  3. 如果全部完成,触发 Notebook LM 生成综合报告,轮询等待完成后下载
  4. 写入研究报告文件到 $CYXJ_VAULT_BASE/研究报告/XXX.md(包含视频来源列表 + 综合报告;同名文件已存在时自动加时间戳后缀,不覆盖)
  5. 更新选题文件 status 为"已完成"

注意: 脚本内部会自动等待报告生成完成(最多 5 分钟),不需要手动轮询。若报告生成失败/超时,摘要 JSON 的 status 为 report_failed,选题文件 status 保持「研究中」——告诉用户稍后再说一次即可重试拉取,不要当成已完成。

如果 exit code 为 2(索引未完成):

Notebook LM 还在处理中,有 N 个视频尚未索引完成。
请等几分钟后再试。

如果成功完成:

研究完成!综合报告已写入:$CYXJ_VAULT_BASE/研究报告/XXX.md

并附一行交接:研究报告在手、准备把它做成视频时,可用 cyxj-content 诊断这条该怎么做。

重要注意事项

  1. 路径必须用双引号包裹(路径中常有空格和中文)
  2. 不要用 echo 管道传参数,所有参数直接作为命令行参数传递
  3. 文件写入由 Python 脚本负责,不要在 Shell 里拼 markdown

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.