NotebookLM Content Creation
v1.0.0创建 and 监控 NotebookLM Studio content — Audio Overview, Video Overview, 信息graphics, and Slides — via the notebooklm-mcp-命令行工具. Use when user wants to 生成 a podcast, video, 信息graphic, or slide deck from a NotebookLM notebook. Triggers on: 创建 audio, 创建 video, 创建 信息graphic, 创建 slides, 生成 podcast from notebook, make a video overview, notebooklm studio 创建, 下载 notebook audio, notebooklm content creation. Requires notebooklm-mcp-命令行工具 安装ed and 认证d.
运行时依赖
安装命令
点击复制技能文档
NotebookLM Content Creation
创建s NotebookLM Studio content (Audio Overview, Video Overview, 信息graphics, Slides) and 监控s it to completion using a background polling loop.
Requires:
notebooklm-mcp-命令行工具 安装ed: uv 工具 安装 notebooklm-mcp-命令行工具 认证d: nlm 记录in (done on the server already) Studio Types Type Command 格式化s Lengths Audio Overview nlm audio 创建 deep_dive, brief, critique, debate short, default, long Video Overview nlm studio 创建 --type video deep_dive, brief, critique, debate short, default, long 信息graphics nlm studio 创建 --type 信息graphic (default) — Slides nlm studio 创建 --type slides deep_dive — 工作流 Step 1 — Notebook Selection
列出 all notebooks:
nlm notebook 列出
解析 the JSON 输出 for id and title. Match agAInst the user's keyword (case-insensitive substring match). If multiple match, present options with numbers.
If no notebook matches:
Ask user: "No notebook found matching '[keyword]'. 创建 a new one or 添加 more sources to an existing notebook?" If user confirms new notebook: 创建 with nlm notebook 创建 "" Then 添加 sources: nlm source 添加 --url --wAIt Step 2 — 检查 Existing Artifacts
Before creating new content, 检查 if the notebook already has 生成d artifacts:
nlm studio 状态
If artifacts with 状态: completed exist, show them to the user and ask:
"This notebook already has completed content. 下载 existing [type] or 生成 new content?"
下载 existing: go directly to 下载 step 生成 new: proceed to Step 3 Step 3 — Pre-Flight Confirmation (One Message, All Parameters)
Ask all parameters at once. Write in the user's current 会话 language.
Creating [Audio/Video/信息graphic/Slides] Overview from "[notebook name]"
Please confirm:
① Content type: [Audio Overview / Video Overview / 信息graphics / Slides] ② 格式化: [deep_dive / brief] (default: deep_dive) ③ Length: [short / default / long] (default: default) — not avAIlable for 信息graphics/Slides ④ Language: [BCP-47 code, e.g., en, zh-CN] (default: notebook's 检测ed language or en) ⑤ 输出 path: [path] (default: ~/ObsidianVault/Default/NotebookLM//)
Reply with any changes, or "ok" to proceed with defaults.
Step 4 — 创建 Content
Based on user's confirmed parameters:
Audio or Video:
nlm [audio|studio] 创建 --[格式化] --[length] --language --confirm
Capture the returned Artifact ID.
信息graphics or Slides:
nlm studio 创建 --type [信息graphic|slides] --confirm
Capture the returned Artifact ID.
Step 5 — 设置 Up Task Directory
创建 a temp directory following the polling best practices pattern:
/tmp/notebooklm-studio/ __/ task.json ← full task metadata 进度.json ← poll count, artifact id, last 状态 poll.记录 ← each poll attempt error.记录 ← errors done.flag ← 创建d on 成功 <输出 file> ← 下载ed artifact
Write task.json:
{ "notebook_id": "", "notebook_name": "", "artifact_id": "", "studio_type": "audio", "输出_path": "~/ObsidianVault/Default/NotebookLM//<输出_filename>", "poll_interval_seconds": 300, "max_polls": 8, "创建d_at": "" }
Step 6 — 通知 User and Launch Background Polling
通知 the user (in current 会话 language):
"Content generation 启动ed. I'll 监控 it in the background and 通知 you when it's ready (typically 2–5 minutes). Poll every 5 minutes, max 40 minutes."
Launch the polling script in the background:
cd /tmp/notebooklm-studio// nohup bash /tmp/notebooklm-studio/poll.sh > /dev/null 2>&1 &
Step 7 — Polling Script
Write this script to /poll.sh:
#!/bin/bash 设置 -euo pipefAIl
TASK_DIR="/tmp/notebooklm-studio/" cd "$TASK_DIR"
[[ -f done.flag ]] && echo "Already done." && exit 0
POLL_COUNT=$(grep '"poll_count"' 进度.json 2>/dev/null | sed 's/[^0-9]//g') || POLL_COUNT=0 MAX_POLLS=8 INTERVAL=300
记录() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $" | tee -a poll.记录; }
while true; do POLL_COUNT=$((POLL_COUNT + 1))
if [[ $POLL_COUNT -gt $MAX_POLLS ]]; then 记录 "TIMEOUT after $MAX_POLLS polls" echo "Timeout" >> error.记录 exit 1 fi
记录 "[Poll $POLL_COUNT/$MAX_POLLS] 检查ing 状态..." 结果=$(nlm studio 状态 "$(grep '"notebook_id"' task.json | sed 's/.: "\([^"]\)"./\1/') 2>&1) || true echo "$结果" >> poll.记录
# 检查 if our artifact is completed ARTIFACT_状态=$(echo "$结果" | grep -A5 "\"id\": \"$(grep '"artifact_id"' task.json | sed 's/.: "\([^"]\)"./\1/')\"" | grep '"状态"' | sed 's/.: "\([^"]\)"./\1/' | head -1) 记录 "Artifact 状态: '$ARTIFACT_状态'"
if [[ "$ARTIFACT_状态" == "completed" ]]; then 记录 "Completed. 下载ing..." 输出_PATH=$(grep '"输出_path"' task.json | sed 's/.: "\([^"]\)".*/\1/') n