Create and monitor NotebookLM Studio content — Audio Overview, Video Overview, Infographics, and Slides — via the notebooklm-mcp-cli. Use when user wants to generate a podcast, video, infographic, or slide deck from a NotebookLM notebook. Triggers on: create audio, create video, create infographic, create slides, generate podcast from notebook, make a video overview, notebooklm studio create, download notebook audio, notebooklm content creation. Requires notebooklm-mcp-cli installed and authenti
创建 NotebookLM Studio 内容(音频概览、视频概览、信息图、幻灯片),并使用后台轮询循环监控直至完成。
需要:
| 类型 | 命令 | 格式 | 时长 |
|---|---|---|---|
| 音频概览 | nlm audio create | deepdive, brief, critique, debate | short, default, long |
| 视频概览 |
列出所有笔记本:
bash
nlm notebook list
解析 JSON 输出中的 id 和 title。与用户的关键词进行匹配(不区分大小写的子字符串匹配)。如果匹配到多个,则用数字列出选项。
如果没有匹配的笔记本:
在创建新内容之前,检查笔记本是否已有生成的制品:
bash
nlm studio status
如果存在 status: completed 的制品,向用户展示并询问:
此笔记本已有已完成的内容。下载现有[类型]还是生成新内容?
一次性询问所有参数。使用用户当前会话语言编写。
正在从[笔记本名称]创建[音频/视频/信息图/幻灯片]概览
请确认:
① 内容类型:[音频概览 / 视频概览 / 信息图 / 幻灯片]
② 格式:[deepdive / brief](默认:deepdive)
③ 时长:[short / default / long](默认:default)— 信息图/幻灯片不适用
④ 语言:[BCP-47 代码,例如 en, zh-CN](默认:笔记本检测到的语言或 en)
⑤ 输出路径:[路径](默认:~/ObsidianVault/Default/NotebookLM/<笔记本名称>/)
回复任何更改,或回复ok使用默认值继续。
基于用户确认的参数:
音频或视频:
bash
nlm [audio|studio] create
捕获返回的制品 ID。
信息图或幻灯片:
bash
nlm studio create
捕获返回的制品 ID。
按照轮询最佳实践模式创建临时目录:
/tmp/notebooklm-studio/
task.json ← 完整任务元数据
progress.json ← 轮询次数、制品 ID、最后状态
poll.log ← 每次轮询尝试
error.log ← 错误
done.flag ← 成功时创建
<输出文件> ← 下载的制品
写入 task.json:
json
{
notebook_id:
notebook_name: <名称>,
artifact_id:
studio_type: audio,
output_path: ~/ObsidianVault/Default/NotebookLM/<笔记本名称>/<输出文件名>,
pollintervalseconds: 300,
max_polls: 8,
created_at:
}
通知用户(使用当前会话语言):
内容生成已开始。我将在后台监控,并在准备就绪时通知您(通常需要 2-5 分钟)。每 5 分钟轮询一次,最长 40 分钟。
在后台启动轮询脚本:
bash
cd /tmp/notebooklm-studio/<任务目录>/
nohup bash /tmp/notebooklm-studio/poll.sh > /dev/null 2>&1 &
将此脚本写入 <任务目录>/poll.sh:
bash
#!/bin/bash
set -euo pipefail
TASK_DIR=/tmp/notebooklm-studio/<任务目录>
cd $TASK_DIR
[[ -f done.flag ]] && echo 已完成。 && exit 0
POLLCOUNT=$(grep pollcount progress.json 2>/dev/null | sed s/[^0-9]//g) || POLL_COUNT=0
MAX_POLLS=8
INTERVAL=300
log() { echo [$(date +%Y-%m-%d %H:%M:%S)] $* | tee -a poll.log; }
while true; do
POLLCOUNT=$((POLLCOUNT + 1))
if [[ $POLLCOUNT -gt $MAXPOLLS ]]; then
log 在 $MAX_POLLS 次轮询后超时
echo 超时 >> error.log
exit 1
fi
log [轮询 $POLLCOUNT/$MAXPOLLS] 检查状态...
RESULT=$(nlm studio status $(grep notebook_id task.json | sed s/.: \([^]\)./\1/) 2>&1) || true
echo $RESULT >> poll.log
# 检查我们的制品是否已完成
ARTIFACTSTATUS=$(echo $RESULT | grep -A5 \id\: \$(grep artifactid task.json | sed s/.: \([^]\)./\1/)\ | grep status | sed s/.: \([^]\)./\1/ | head -1)
log 制品状态:$ARTIFACT_STATUS
if [[ $ARTIFACT_STATUS == completed ]]; then
log 已完成。正在下载...
OUTPUTPATH=$(grep outputpath task.json | sed s/.: \([^]\)./\1/)
nlm download audio $(grep notebookid task.json | sed s/.: \([^]\)./\1/) --id $(grep artifactid task.json | sed s/.: \([^]\)./\1/) -o $OUTPUT_PATH >> poll.log 2>&1 || true
if [[ -s $OUTPUT_PATH ]]; then
log 已下载:$OUTPUTPATH ($(du -h $OUTPUTPATH | cut -f1))
touch done.flag
else
log 下载的文件为空
echo 输出为空 >> error.log
fi
exit 0
fi
if [[ $ARTIFACT_STATUS == failed ]]; then
log 生成失败
echo 失败 >> error.log
exit 1
fi
# 保存进度
sed -i s/\pollcount\: [0-9]*/\pollcount\: $POLL_COUNT/ progress.json
log 仍在进行中。等待 ${INTERVAL} 秒...
sleep $INTERVAL
done
初始化 progress.json:
json
{
poll_count: 0,
lastpollat: null,
lastpollresult: null
}
当轮询退出时(成功或失败):
成功时:
失败/超时时:
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 notebooklm-content-creation-1776014723 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 notebooklm-content-creation-1776014723 技能
skillhub install notebooklm-content-creation-1776014723
文件大小: 3.85 KB | 发布时间: 2026-4-13 11:13