用途:以 Codex 作为控制器,按周抓取 themodernsoftware.dev 的课程材料,导入 NotebookLM,并产出深度学习资料,无需自建独立智能体服务。流程通过状态文件与模板保证确定性,以 templates/course.yaml、templates/weeks.json、templates/week-notebooks.json 作为唯一运行状态来源;抓取与链接提取使用 agent-browser,源导入与产出生成使用 notebooklm。
工作流:
- 初始化运行时工作区:./themodernsoftware-notebooklm/scripts/init-workspace.sh ./runtime,生成 course.yaml、weeks.json、week-notebooks.json 与 prompts/*.prompt.md。
- 预检工具:agent-browser --help 与 notebooklm status --json;后者失败则运行 notebooklm login。
- 抓取每周材料:依次运行 crawl-extract.sh 提取周范围资源、merge-weeks.py 做增量合并并输出 weeks-diff.json、verify-week-state.sh 校验状态。合并保留既往导入证据,保留 provenance=manual|external-search 的非课程资产。
- 导入 NotebookLM:默认每周一个 notebook,运行 notebooklm-per-week.py ./runtime --diff ./runtime/weeks-diff.json,再运行 verify-week-state.sh。优先直接 URL 导入(web/YouTube),等待每个源就绪并确认 source_id 出现在源列表;失败按 course.yaml.retry.* 退避重试;直接导入失败且有 download_url 时回退到下载校验(verify-file.sh)后以 --type file 上传;记录 ingest_status、source_id、ingest_attempts、last_error。可用 --weeks week-01 重试指定周。
- 生成产出:对 status: ingested 的周运行 generate-week.py ./runtime --diff ./runtime/weeks-diff.json,再校验状态。产出写入 ./runtime/outputs/<week_id>/,包含 lesson-plan.zh-en.md、lecture-notes.zh-en.md、video-script.zh-en.md(默认),可选通过 course.yaml.outputs.video.mode: artifact|both 生成并下载 NotebookLM 视频产物。
失败策略:themodernsoftware.dev 不可达时立即失败本次运行,不自动切换来源;失败原因记入 weeks.json.error 与各资产 last_error。完成判定需包含 lesson_plan_path、lecture_notes_path、video_script_path(当 mode 含 script)以及 video_artifact_id/video_local_path(当 mode 含 artifact);artifact 模式视频下载未完成不得标记完成。
限制:依赖外部站点可达性;需先登录 NotebookLM;未提供具体收费、价格或平台支持范围信息。