Agent Skills: Book Media Generator

Generates media for intelligent textbooks - slide decks and presentations (MARP web decks in docs/slides/ or PowerPoint .pptx lecture downloads), illustrated stories and graphic novels, fact-checked infographic posters, freely-licensed chapter images from Wikimedia and government archives, and audio (text-to-speech voiceovers, glossary pronounce buttons via ElevenLabs). Routes to the appropriate media guide.

UncategorizedID: dmccreary/claude-skills/book-media-generator

Install this agent skill to your local

pnpm dlx add-skill https://github.com/dmccreary/claude-skills/tree/HEAD/skills/book-media-generator

Skill Files

Browse the full folder contents for book-media-generator.

Download Skill

Loading file tree…

skills/book-media-generator/SKILL.md

Skill Metadata

Name
book-media-generator
Description
Generates media for intelligent textbooks - slide decks and presentations (MARP web decks in docs/slides/ or PowerPoint .pptx lecture downloads), illustrated stories and graphic novels, fact-checked infographic posters, freely-licensed chapter images from Wikimedia and government archives, and audio (text-to-speech voiceovers, glossary pronounce buttons via ElevenLabs). Routes to the appropriate media guide.

Book Media Generator

Overview

This meta-skill generates static media for intelligent textbooks — slides, illustrations, sourced images, and audio. It consolidates seven skills into a single entry point with on-demand loading of specific media guides.

FIRST: Slides Disambiguation Rule

Two routes make slide decks. Before routing any "make slides / a presentation / a deck" request, decide:

  • Published on the site / embedded / web deck / shareable linkreferences/marp-deck-guide.md (MARP → self-contained HTML in docs/slides/, iframe-embedded, added to the slides gallery and nav)
  • Downloadable file / classroom lecture / "PowerPoint" / .pptxreferences/pptx-lecture-guide.md (pptxgenjs → .pptx with 4-act storytelling and speaker notes)
  • Ambiguous (just "make slides for chapter 3") → ask ONE question: "Published on the site as a web deck, or a downloadable PowerPoint for classroom use?"

When to Use This Skill

Use this skill when users request:

  • A slide deck or presentation from a topic, chapter, or document (see disambiguation rule above)
  • An illustrated story / graphic novel about a scientist or historical figure (docs/stories/)
  • A fact-checked infographic poster with verified statistics (docs/posters/)
  • Adding freely-licensed maps and photos to chapters (Wikimedia Commons, US government archives)
  • Text-to-speech audio, voiceovers, or spoken narration (ElevenLabs)
  • A "Pronounce" button with an MP3 pronunciation for a glossary term

Step 1: Identify Media Type

Routing Table

| Trigger Keywords | Guide File | Purpose | |------------------|------------|---------| | slide deck, slides, presentation, web deck, publish slides, MARP, deck on the site | references/marp-deck-guide.md | MARP → self-contained HTML deck in docs/slides/ with gallery + nav integration | | powerpoint, pptx, lecture deck, classroom slides, downloadable deck, lecture presentation | references/pptx-lecture-guide.md | pptxgenjs → .pptx lecture with 4-act structure and speaker notes | | story, graphic novel, illustrated narrative, historical figure story, scientist story, case study story | references/story-guide.md | Illustrated graphic-novel narratives in docs/stories/ with generated panel images | | infographic, poster, statistics poster, fact-checked image, verified infographic | references/verified-infographic-guide.md | Fact-checked poster: claim plan → verification → layout spec → locked image prompt | | chapter images, add photos, add maps, wikimedia, image sourcing, freely licensed images, attribution | references/chapter-images-guide.md | Source real licensed media from Wikimedia/gov archives with captions + attribution | | text to speech, tts, voiceover, narration, audio version, speech synthesis, elevenlabs | references/text-to-speech-guide.md | ElevenLabs TTS — voiceovers, voice apps, 70+ languages | | pronounce, pronunciation, pronounce button, glossary audio, say the term | references/pronounce-button-guide.md | Generate an MP3 pronunciation and insert a Pronounce button into a glossary entry |

Decision Tree

Slides or a presentation?
  → Apply the Slides Disambiguation Rule (top of this file)

Narrative with illustrated panels about a person or case study?
  → YES: story-guide.md

Poster/infographic containing numeric claims or cited data?
  → YES: verified-infographic-guide.md
  (purely decorative image with no factual claims → not this route; consider
   the cover-image feature in book-installer instead)

Real photos/maps sourced from archives (not AI-generated)?
  → YES: chapter-images-guide.md

Audio from text?
  → Single glossary term pronunciation → pronounce-button-guide.md
  → Anything else (narration, voiceover, app) → text-to-speech-guide.md

Step 2: Load the Matched Guide

Read the corresponding guide file from references/ and follow its workflow.

Audio Routes: ElevenLabs API Key

Both audio routes (text-to-speech-guide.md, pronounce-button-guide.md) call the ElevenLabs API and need ELEVENLABS_API_KEY set in the environment. Check for it before starting; if missing, point the user at references/tts-installation.md.

Supporting Files

  • references/marp-mkdocs-integration.md, references/marp-authoring-guide.md, assets/marp/template.md — MARP route
  • references/pptx-slide-patterns.md, references/pptx-speaker-notes-guide.md — PowerPoint route
  • references/story-index-template.md, scripts/story/ (generate-images.py, verify-images.py, fix-references.py, uncomment-images.sh) — story route
  • references/infographic-*.{md,yaml}, references/poster-image-prompt.md — infographic route
  • scripts/posters/generate-poster-thumbnails.py — poster gallery thumbnail generation (see verified-infographic-guide.md, "Gallery Thumbnails")
  • references/tts-installation.md, references/tts-streaming.md, references/tts-voice-settings.md — TTS route
  • scripts/audio/generate-pronunciation.py — pronounce-button route

Examples

Example 1: Web Deck

User: "Turn chapter 4 into a presentation on the site" Routing: "presentation" + "on the site" → references/marp-deck-guide.md Action: Read marp-deck-guide.md; produce docs/slides/<deck>/ + gallery entry + nav

Example 2: Classroom PowerPoint

User: "I need a PowerPoint to lecture from for chapter 4" Routing: "PowerPoint" + "lecture" → references/pptx-lecture-guide.md Action: Read pptx-lecture-guide.md; generate the .pptx with speaker notes

Example 3: Ambiguous Slides

User: "Make slides for chapter 4" Routing: Ambiguous → ask: web deck or downloadable PowerPoint? Then route accordingly.

Example 4: Story

User: "Add a graphic novel story about Ada Lovelace to the Stories section" Routing: "graphic novel story" → references/story-guide.md Action: Read story-guide.md; write index.md with panel prompts; run scripts/story/generate-images.py

Example 5: Fact-Checked Poster

User: "Create an infographic about remote-work productivity statistics" Routing: "infographic" + statistics → references/verified-infographic-guide.md Action: Read verified-infographic-guide.md; verify every claim before any image prompt

Example 5b: Poster Gallery Loads Slowly

User: "The poster gallery page takes forever to load" Routing: existing posters + slow page load → references/verified-infographic-guide.md, "Gallery Thumbnails" section Action: Run scripts/posters/generate-poster-thumbnails.py --posters-dir docs/posters; it generates a compressed thumbnail per poster and rewrites the gallery index.md's grid-card images to use them (poster detail pages keep the full-size PNG)

Example 6: Pronounce Button

User: "Create a pronounce button for the term Mitochondria" Routing: "pronounce button" → references/pronounce-button-guide.md Action: Read pronounce-button-guide.md; run scripts/audio/generate-pronunciation.py; insert the button into glossary.md