Notebooklm create
Skill bg-szy/TOP-SKILLS/skills/claude-code-skills/notebooklm-create
全球最大的 Claude Code 技能聚合库 · 收录 3900+ 来自 12+ 来源的技能,提供在线搜索与趋势分析看板 / The world's largest Claude Code skill aggregation hub — 3900+ skills from 12+ sources with online search and trend dashboard
npx -y skills add bg-szy/TOP-SKILLS --skill notebooklm-createAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 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.
What its author says it does
Copied from the file, not written here
Complete "topic notebook build" workflow for Google NotebookLM — deep web research, sequential source loading (with known-failing domain skips), full Studio artifact generation, and curated chat-prompt library. Use this skill whenever the user wants to create a new NotebookLM notebook on a topic, build a full research notebook from scratch, generate a "{topic} :: docs" notebook, compile sources from forums (Reddit/HN/GitHub/Discord/Quora) into a notebook, produce a full Studio (audio + video + mind map + reports + flashcards + quiz + infographic + slide deck + data table) for an existing notebook, or prepare curated NotebookLM prompts for a topic. Triggers on phrases like "build a notebook on X", "create cmux :: docs", "research and build NotebookLM", "full studio for my notebook", "entire studio", "NotebookLM prompts for topic Y", "turn this into a NotebookLM notebook". Apply even when the user does not explicitly say "NotebookLM" — if they ask you to assemble a research notebook on a topic with sources and derivative artifacts, this is the right skill.
SKILL.md
12.4 KB, as published. Nobody here has run it
notebooklm-create
End-to-end workflow for building a complete NotebookLM topic notebook: deep research, source loading, full Studio, curated prompts. Orchestrates the notebooklm-rpc MCP tools with domain-specific gotcha handling encoded.
Relationship to notebooklm-skill
notebooklm-skill= low-level API reference (notebooklm-py CLI)- This skill (
notebooklm-create) = high-level workflow orchestration using thenotebooklm-rpcMCP tools available in this session
If the user just wants to call a single API (e.g., "list my notebooks"), use notebooklm-skill or the MCP tool directly. If they want to BUILD a research notebook from a topic, use this skill.
Why this workflow exists
Building a rich NotebookLM notebook for a topic has repeatable shape but is strewn with gotchas that cost real time if rediscovered:
- Some domains silently refuse NotebookLM's URL fetcher (Medium, Quora)
- URL adds cascade-fail when issued in parallel — must be sequential
llms.txtURLs need the trailing.mdstripped before adding- Studio artifacts split into synchronous (mind map, reports, flashcards, quiz, data table) and async (audio, video, infographic, slide deck) with different polling behavior
- The Studio API classifies quiz artifacts as
type: flashcardsonce generated (title disambiguates) confirm=Trueis mandatory on every Studio creation tool AND requires explicit user approval
This skill encodes all of that so future runs don't relearn it.
Workflow — the 7 phases
Run these in order. Each phase has a clear hand-off to the next.
Phase 1 — Capture intent
Ask or infer:
- What's the topic? (e.g., "cmux", "ArgoCD image updater", "Azure landing zones")
- Any seed URLs the user already wants included (videos, blog posts, GitHub repos)?
- Which forums to cover? Defaults: Reddit, Hacker News, GitHub Discussions. Optional: Discord (captured as text — not URL-indexable), Quora (usually empty for technical topics; confirm via research)
- Target notebook title — default convention:
{topic} :: docs(matches user's existing naming pattern visible vianotebook_list) - Does the user want the full Studio (all 10 artifacts) or selective?
If the topic name is ambiguous (multiple projects share the name — common: cmux = manaflow-ai vs craigsc vs coder), anchor disambiguation on the user's seed URLs before researching.
Phase 2 — Deep research
Goal: produce two artifacts — a research synthesis and a community content dossier. Both become text sources in the notebook.
Read references/prompt-library.md for prompt starters. Use WebFetch on user-provided seed URLs first to lock in disambiguation, then WebSearch for canonical repo / docs / llms.txt.
Dispatch two parallel agents (via the Agent tool with general-purpose subagent):
-
Research synthesis agent — produces 2000–3000 word markdown covering overview, architecture, features, comparisons, installation, traction, limitations, official URLs. Output template:
assets/research_synthesis_template.md. -
Community content agent — searches Reddit, Hacker News, GitHub Discussions for threads, extracts verbatim quotes with attribution. Captures Discord community texture by pulling equivalent content from GitHub Discussions (Discord isn't publicly scrapeable). Confirms Quora status (usually no threads for technical topics). Output template:
assets/community_content_template.md.
Both agents should return ready-to-paste markdown. Save locally under MEMORY/WORK/<slug>/.
Phase 3 — Create the notebook
Use mcp__notebooklm-rpc__notebook_create with the agreed title.
mcp__notebooklm-rpc__notebook_create(title="{topic} :: docs")
Capture the returned notebook.id — you'll need it for every subsequent call.
Verify no duplicate exists first via mcp__notebooklm-rpc__notebook_list (filter titles case-insensitively for the topic term).
Phase 4 — Load sources (SEQUENTIAL — critical)
Read references/url-gotchas.md for the domain blocklist and URL-cleaning rules before calling any add tool.
Order of source types to add (each as a separate, sequential call — never in parallel):
- User's seed URLs (YouTube, blog posts, etc.)
- Official repo / website / docs
- Hacker News discussion(s)
- Reddit thread URL(s) — keep the trailing
/that Reddit prefers - GitHub Discussions / Issues URLs with relevant community content
- Third-party reviews / comparative discussions
- After all URL sources: add the research synthesis and community content as text sources via
mcp__notebooklm-rpc__notebook_add_text
DO NOT attempt to add:
medium.com/*— always failsquora.com/*— always fails (as of 2026-04-21; see url-gotchas.md)linkedin.com/*— typically fails (auth gates)
If a domain is uncertain, probe with WebFetch first — if that returns bot-detection content, assume NotebookLM will fail too and capture as text instead.
If adding an llms.txt URL, strip any trailing .md before the call (e.g., foo.com/llms.txt, not foo.com/llms.txt.md).
Sequential sample pattern:
# For each url in ordered_list:
mcp__notebooklm-rpc__notebook_add_url(notebook_id=NB, url=url)
# wait for success, then next
Phase 5 — Generate full Studio (requires user approval)
Every Studio tool takes confirm=True. The MCP server explicitly states user approval is required before setting it. Present the plan to the user, get approval, then dispatch.
Read references/studio-quirks.md for sync vs async classification and known API quirks.
Recommended order (async-first minimizes total wall-clock):
audio_overview_create— async, ~60s+video_overview_create— async, several minutesinfographic_create— async, several minutesslide_deck_create— async, several minutesmind_map_create— synchronousreport_create(format="Briefing Doc")— synchronousreport_create(format="Study Guide")— synchronousflashcards_create— synchronousquiz_create(question_count=10)— synchronous (note: classified astype: flashcardsin studio_status)data_table_create(description=...)— synchronous
For each async artifact, pass a focus_prompt tailored to the topic — see references/mcp-tool-map.md for recommended focus prompts per tool.
After dispatching, poll once via mcp__notebooklm-rpc__studio_status after ~45s, then again after 2–3 minutes. Async media can take 5–10 minutes to render.
Phase 6 — Curate chat prompts
Add a text source containing 9 NotebookLM chat prompts adapted to the topic. Base templates live in references/prompt-library.md — they come from two public articles (XDA Developers, AI Fire) and are pre-mapped to structural goals:
- Five Essential Questions (study)
- Find the Interesting Bits (insight mining)
- Quiz Show (gamified review)
- Content Analyst Report (repurposing)
- Community → Action Plan (roadmap synthesis)
- SEO Outline (competitive content)
- 360° Feedback on Marketing (voice-of-multi-persona critique)
- Study Guide Kit (onboarding curriculum)
- Conference Talk Script (narrative pitch)
Replace the topic-specific placeholders in each template with concrete references from the research (actors, quotes, key architectural facts). Save to both:
- A local markdown file under
MEMORY/WORK/<slug>/prompts.mdfor reuse - A text source inside the notebook via
mcp__notebooklm-rpc__notebook_add_texttitled"9 Curated NotebookLM Prompts for {topic}"
Phase 7 — Verify
mcp__notebooklm-rpc__notebook_get(notebook_id=NB)
mcp__notebooklm-rpc__studio_status(notebook_id=NB)
Confirm:
- Notebook title matches
{topic} :: docs - Source count matches expected (seed URLs + forum URLs + 2 text research sources + 1 prompts text source)
- Studio artifacts completed or still rendering (video/infographic/slide deck commonly still rendering at verification time — that's fine)
- No duplicate notebook was created
Report back to the user with:
- Notebook URL (
notebooklm.google.com/notebook/{id}) - Table of studio artifacts with status
- Pointer to the 9 curated prompts
Tools & resources included
scripts/add_urls_sequential.py— wraps the sequential-add pattern with the domain blocklist built inscripts/build_full_studio.py— dispatches all 10 Studio artifacts in the correct async-first order (prints the MCP call plan; actual MCP invocation happens from Claude's tool layer)scripts/adapt_prompts.py— takes a topic facts dict and emits the 9 prompts with placeholders filledreferences/url-gotchas.md— domain blocklist + URL-cleaning rulesreferences/studio-quirks.md— sync vs async, quiz classification, confirm guardreferences/prompt-library.md— 9 base prompts with source attribution (XDA + AI Fire)references/mcp-tool-map.md— which MCP tool per phase + recommended focus promptsassets/research_synthesis_template.md— 9-section research doc scaffoldassets/community_content_template.md— forum/community dossier scaffoldassets/workflow_checklist.md— phase-by-phase checklist to copy into a work PRDsamples/cmux_docs_walkthrough.md— worked example from the original session
When NOT to use this skill
- User wants to modify or dedupe an existing notebook — use
notebooklm-skillor direct MCP calls - User just wants to LIST notebooks or describe one — use the MCP tools directly
- User wants to add a single source to an existing notebook — direct MCP call is fine, no orchestration needed
- The task has no "build a research notebook" shape (e.g., "convert this PDF to audio") — use
notebooklm-skill
References to read during execution
| When | Read |
|---|---|
| Before Phase 4 (URL adds) | references/url-gotchas.md |
| Before Phase 5 (Studio) | references/studio-quirks.md, references/mcp-tool-map.md |
| Before Phase 6 (Prompts) | references/prompt-library.md |
| If stuck on a tool choice | references/mcp-tool-map.md |
Anti-patterns (learned from real runs)
- Parallel URL adds → cascade fail. Always sequential.
- Adding Medium or Quora URLs → silently fail. Scrape content, add as text.
- Treating Studio like a single batch → confirm guard will block. Each tool needs its own
confirm=True. - Polling
studio_statusimmediately → async artifacts showin_progress; wait 45s minimum. - Checking
typefield to distinguish quiz from flashcards → both classify as flashcards post-generation. Use the artifact title. - Forgetting to save the
notebook_id→ costs a redundantnotebook_listcall to recover it.
Gotchas
- Web research phase truncates at ~50 URLs — large topics need batching and manual aggregation; the truncation is silent.
- Sequential source upload preserves order; parallel upload doesn't — workflows that use
&andwaitin bash get random ordering and unstable citations. - Source quotas reset at midnight Pacific — a script that hits the daily limit at 23:55 PT silently waits 5 minutes; one running at noon waits 12 hours.
- Full-studio generation: audio/video/slides/quiz/flashcards/etc. run in parallel after upload — if upload fails midway, the partial set still generates without error; verify all sources before generating.
- Notebook ID vs notebook title: the title is mutable; the ID isn't. Scripts that look up by title break on rename.