NotebookLM Content Skill
Create high-quality infographics and slide decks from your blog posts using Google NotebookLM, branded to CryptoFlex LLC standards.
When This Skill Activates
- User says
/notebooklm-content - User asks to "create an infographic from a blog post"
- User asks to "make slides from a blog post"
- User asks to "generate NotebookLM content"
- User mentions creating visual assets from blog content
Prerequisites
- NotebookLM MCP server (
notebooklm-mcp-cli) configured in~/.claude.json - Authenticated via
nlm loginwithchrisjohnson@cryptoflexllc.com - First-time setup: run
nlm loginin your terminal to authenticate
Usage
/notebooklm-content <blog-post-slug-or-path> [options]
Arguments
<blog-post-slug-or-path>: The blog post to create content from. Can be:- A slug (e.g.,
my-first-24-hours-with-claude-code) - A full path to an MDX file
- "latest" to use the most recent published post
- A slug (e.g.,
Options
--type infographic(default): Generate a branded infographic (PNG)--type slides: Generate a branded slide deck (PDF + PPTX)--type both: Generate both infographic and slide deck
Video Overviews (new in notebooklm-mcp-cli 0.7.0) are also available, including the
cinematicformat driven by a full creative brief. This skill's brand-QA pipeline is tuned for static assets (infographics, slides), so video generation is not wired into--typehere. To produce a Video Overview from a notebook, use the generalnotebooklm-assistantagent (studio_createwithartifact_type="video",video_format="cinematic", brief viafocus_prompt).
--orientation landscape|portrait|square: Infographic orientation (default: landscape)--detail concise|standard|detailed: Infographic detail level (default: detailed)--style professional|editorial|scientific: Infographic visual style (default: professional)--slide-format detailed|presenter: Slide deck format (default: detailed)
Examples
/notebooklm-content my-first-24-hours-with-claude-code --type both
/notebooklm-content latest --type infographic --style editorial
/notebooklm-content ~/GitProjects/cryptoflexllc/src/content/blog/building-blog-with-ai.mdx --type slides
What Happens
- Reads the specified blog post from the cryptoflexllc repo
- Uses NotebookLM MCP tools to create a notebook and add the post content as a source
- Primes the notebook with CryptoFlex LLC branding guidelines via MCP query
- Generates the requested content type(s) via MCP studio tools (5-15 min per asset)
- Downloads output to
~/GitProjects/cryptoflexllc/content-assets/notebooklm/ - Runs QA review: spelling, accuracy, brand compliance, DLP scanning
- Revises if needed (max 2 cycles)
- Reports results with file paths and QA summary
Output Location
Generation output lands in the gitignored working area:
~/GitProjects/cryptoflexllc/content-assets/notebooklm/
<post-slug>/
infographic.png
slides.pdf
slides.pptx
slides/
slide-01.png
slide-02.png
...
Curated, embed-ready assets are then copied into the published tree under public/blog/<slug>/. See "Embedding Slides Into the Post" below.
Implementation
This skill delegates to the notebooklm-content agent:
Agent(
prompt="Follow the instructions in ~/.claude/agents/notebooklm-content.md.
Blog post: <resolved-path>
Content type: <type>
Options: <options>",
subagent_type="general-purpose",
model="sonnet",
name="notebooklm-content"
)
Authentication
If not yet logged in or cookies have expired, run in your terminal:
nlm login
This opens a Chromium browser window for Google sign-in with chrisjohnson@cryptoflexllc.com. Cookie sessions expire every 2-4 weeks and require re-authentication.
Relationship to Blog Post Pipeline
This skill is separate from the /blog-post command. It does not run as part of the blog production pipeline. You invoke it independently after a blog post is drafted or published.
The slide deck is first-class article content, not external-only collateral. The primary use is to curate select slides and embed them directly into the post (see "Embedding Slides Into the Post" below). Social and presentation reuse is secondary:
- Primary: Embed curated slides into the blog post as in-line article visuals, and link the full deck near the end of the post.
- Secondary: LinkedIn posts and social media, presentation materials, internal documentation.
The blog-post captain does not call this skill. You invoke it independently when you want visual content derived from a post. When a post has a companion deck, the captain incorporates the curated slides per this skill's convention rather than treating them as external-only.
Embedding Slides Into the Post
After generation and QA, curate select slides into the article. Slides are primary article content: choose the few that add visual value beyond the prose and callouts.
- Select, do not dump. Embed only the 4-6 strongest slides, each mapping to a distinct article section. Skip the title slide (the infographic is already the cover), any before/after slide when the post already has an equivalent custom SVG diagram or comparison table, and pure-takeaway or summary slides that merely restate existing callouts. Quality over completeness.
- Semantic filenames in public/. Copy each chosen slide from
content-assets/notebooklm/<slug>/slides/slide-NN.pngtopublic/blog/<slug>/<semantic-name>.pngusing a descriptive kebab-case name, notslide-NN. The infographic remains the cover image atpublic/blog/<slug>/infographic.png. - Embed with a lead-in. In the post
.mdx, place each slide as a plain markdown imagein its relevant section, preceded by a one-sentence in-voice prose lead-in that sets up what the reader is about to see. Alt text must be genuinely descriptive for accessibility and SEO, matching the pattern in existing posts likenotebooklm-content-pipelineandhome-network-mission-control-dashboard-log-lake-panel. - Link the full deck. Copy
slides.pdftopublic/blog/<slug>/slides.pdfand link it once near the end of the post: "If you'd rather skim this as slides, the deck is here: slide deck (PDF)."
Limitations
- NotebookLM generation takes 5-15 minutes per asset
- Infographic style is influenced but not fully controlled by instructions (NotebookLM makes its own design choices)
- Cookie auth expires every 2-4 weeks (run
nlm loginto refresh;nlm login --checkverifies the current session). If the MCP reportsauth_status: stale, re-auth;unverifiedis a transient network error, not an auth failure. - Uses reverse-engineered Google APIs via notebooklm-mcp-cli (may break without notice). Keep current with
uv tool upgrade notebooklm-mcp-cli, then reconnect thenotebooklmMCP server. - Maximum 50 sources per notebook
- Free tier rate limit: approximately 50 queries per day
Known stall patterns
- Slide decks can appear stuck at
in_progressfor 25+ minutes before completing. This is the expected pattern, not a failure. Do not cancel or retry. Keep polling. Most common on first-time or large notebook runs; subsequent requests tend to complete faster. download_artifactcan succeed whilestudio_statusstill reportsin_progress. Observed on a 71+ minute wait (and a separate 75 minute case). Do not gate the download on a completed status. Calldownload_artifactperiodically; if it returns bytes, accept the artifact and move on. If it errors, keep polling and retry. Have a manual fallback (custom SVG diagram component) ready so a post can ship even without the NotebookLM asset.
Troubleshooting
Python Virtualenv Orphaned After uv/Python Updates
If the MCP server reports ENOENT or fails to start after updating the uv tool or its linked Python interpreter, the notebooklm-mcp-cli binary itself may still exist on disk — the virtualenv uv manages for it is what's orphaned. uv tool upgrade notebooklm-mcp-cli (see Limitations above) does not fix this case, since there's no working environment left to upgrade.
Fix: reinstall the tool's virtualenv, then reconnect the MCP server:
uv tool install --force notebooklm-mcp-cli