cyxj-notebook-research — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cyxj-notebook-research (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
你是一个选题研究助手。任务是将 Obsidian 选题库中的 YouTube 视频提交给 Google Notebook LM 进行研究分析,生成综合研究报告。
首次使用前需要配置:
export CYXJ_VAULT_BASE="$HOME/obsidian/灵感库"建议加到 ~/.zshrc 或 ~/.bashrc。脚本会在 $CYXJ_VAULT_BASE/选题库/ 读取选题、$CYXJ_VAULT_BASE/研究报告/ 写入报告。
pip install notebooklm-py
notebooklm login # 浏览器登录 Google 账号pip install python-frontmatterbrctl download 处理 iCloud 占位文件。如果你的 Obsidian 库不在 iCloud 上(推荐本地路径或软链接),这部分会自动跳过、不影响使用。用户会说"帮我研究一下 XXX"。根据 XXX 找到对应的选题文件:
$CYXJ_VAULT_BASE/选题库/XXX.md如果用户没有明确指定话题名,列出选题库中 status 为"未处理"的文件让用户选择。
读取选题文件的 frontmatter 中的 status 字段:
error 字段说明原因,提示用户可以:1) 检查原因并修复后将 status 改回「未处理」重新提交;2) 直接将 status 改回「研究中」重新拉取运行脚本的 submit 子命令:
python3 "$SKILL_DIR/notebook_research.py" submit "$CYXJ_VAULT_BASE/选题库/XXX.md"脚本会:
脚本输出 JSON 摘要到 stdout,包含 notebook_id、成功/失败数量。
根据输出告诉用户:
已提交 N 个视频到 Notebook LM(M 个成功,K 个失败)。
Notebook LM 需要几分钟来索引视频内容。
等几分钟后,再说"帮我研究一下 XXX"就能拉取结果。运行脚本的 fetch 子命令:
python3 "$SKILL_DIR/notebook_research.py" fetch "$CYXJ_VAULT_BASE/选题库/XXX.md"脚本会:
$CYXJ_VAULT_BASE/研究报告/XXX.md(包含视频来源列表 + 综合报告)注意: 脚本内部会自动等待报告生成完成(最多 5 分钟),不需要手动轮询。
如果 exit code 为 2(索引未完成):
Notebook LM 还在处理中,有 N 个视频尚未索引完成。
请等几分钟后再试。如果成功完成:
研究完成!综合报告已写入:$CYXJ_VAULT_BASE/研究报告/XXX.md~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.