From readweave
Analyze a podcast series across multiple episodes. Discovers episodes from an RSS feed or multiple audio files, traces recurring themes and evolving ideas, and produces a unified HTML slide presentation following the show's intellectual arc.
npx claudepluginhub irfanabduhu/rune --plugin readweave[podcast RSS feed URL or paths to multiple audio files]# Podcast Skill You will create one output from the following podcast source: $ARGUMENTS - A unified **HTML slide presentation** (`[podcast-name]-podcast.html`) The presentation traces how ideas develop, recur, and deepen across a podcast series — treating the show as a body of work rather than isolated episodes. Follow the six phases below in order. --- ## Checkpoint System Before starting, check for existing checkpoints in `.readweave/[podcast-slug]/` (derive slug from the podcast name — lowercase, kebab-case, drop articles). **Read the checkpoint reference**: Use the Glob tool to ...
/podcastAnalyze a podcast series across multiple episodes. Traces recurring themes and evolving ideas into a markdown file.
/podcastGenerate a podcast from document(s) with full control over style, audience, voices, and options
You will create one output from the following podcast source: $ARGUMENTS
[podcast-name]-podcast.html)The presentation traces how ideas develop, recur, and deepen across a podcast series — treating the show as a body of work rather than isolated episodes.
Follow the six phases below in order.
Before starting, check for existing checkpoints in .readweave/[podcast-slug]/ (derive slug from the podcast name — lowercase, kebab-case, drop articles).
Read the checkpoint reference: Use the Glob tool to find **/checkpoints.md within this plugin's installation directory, then read it for the full format specification.
Resume logic — check in reverse order:
annotations.md exists → load it and skip to Phase 6 (HTML generation)selection.md exists → load it and skip to Phase 5 (annotations)extraction-[episode-slug].md files exist → load them and skip to Phase 3 (arc mapping). If only some episodes have extraction checkpoints, extract only the missing ones.If resuming, report: "Found checkpoint for [phase]. Resuming from [next phase]..."
If the user's input contains --fresh, ignore all checkpoints and start from scratch.
Save after each phase — write the checkpoint file in the format specified by the checkpoint reference before proceeding to the next phase.
If the input is an RSS feed URL:
If the input is a podcast page URL (not RSS):
<link rel="alternate" type="application/rss+xml">If the input is multiple audio files:
ffprobe -v quiet -print_format json -show_format "$AUDIO_PATH" 2>/dev/null
Report: "Found N episodes of [Podcast Name]. The series spans [date range]."
If more than 15 episodes, suggest focusing on a subset and ask the user to confirm which episodes to include.
Launch parallel agents (one per episode, or group 2-3 short episodes per agent). Each agent:
Downloads the audio (if URL): curl -L -o /tmp/episode-XXXXXX.[ext] "[audio_url]"
Transcribes using Whisper (try methods in order):
whisper "$AUDIO_PATH" --model medium --language en --output_format txt --output_dir /tmp/whisper-out-XXXXXX
If Whisper is unavailable, inform the user: "Whisper is required for audio transcription. Install with: pip install openai-whisper"
Cleans the transcript: Remove filler, fix speech-to-text errors, normalize punctuation. Apply the same cleanup rules as the watch/listen skills (false starts, stammer repetitions, filler chains, hedge piles, echo phrases).
Detects speakers: Identify host vs. guest(s) through conversational patterns and show notes.
Divides into logical sections based on topic shifts and conversation flow.
For each episode, extracts 5-10 candidate passages with:
Records for each episode:
Same seven passage types as the listen skill (thesis crystallizations, key arguments, striking examples, provocations, dialogue sparks, honest admissions, distillation moments), plus:
extraction-[episode-slug].md per episode to .readweave/[podcast-slug]/ with all candidate passages, episode metadata, speaker identification, and per-episode context.Map the episode sequence: For each episode in chronological order, identify what it contributes that previous episodes did not. What question does it address, what concept does it introduce or deepen?
Identify recurring themes: Find 3-7 thematic threads that run across multiple episodes:
Identify the host's arc: Over a series of conversations, hosts often develop their own evolving perspective. Trace this where visible.
Note pivot points: Episodes where the show shifts direction — new topic areas, format changes, or conversations that reframe what came before.
Determine conceptual weight: Not all episodes contribute equally. A landmark interview might get 6-8 slides; a lighter episode might get 2-3 slides.
Show the discovered structure: the podcast's themes, recurring threads, and key episodes. Ask if they want to:
Proceed with the user's selection.
Select 3-8 excerpts per episode from the candidate pool, scaled by conceptual weight. Favor passages that:
Order excerpts within each thread by conceptual progression — start with the most foundational formulation and build toward the most mature or provocative.
Plan cross-episode connections: Identify moments where a passage in one episode echoes, extends, or challenges a passage from another. These become cross-reference margin notes.
Plan cross-thread connections: Identify 2-3 moments where threads intersect.
Cleaning repetitive words from excerpts:
Apply the same cleanup as the listen/watch skills: remove false starts, stammer repetitions, filler chains, hedge piles, echo phrases, auto-caption stutters, and confirming ticks. Keep rhythm words and rhetorical repetitions that serve emphasis.
selection.md to .readweave/[podcast-slug]/ with all selected excerpts, thread analysis, cross-episode connections, and conceptual weight allocation.For each selected excerpt, write 2-3 margin notes.
This voice also applies to all commentary prose: overview slides, transition slides, synthesis slides, and discussion questions.
annotations.md to .readweave/[podcast-slug]/ with all annotated excerpts (including cross-episode notes), overview prose, and discussion questions.This phase uses the Scaffold-Batch-Assemble pattern. Read **/chunked-html-generation.md within this plugin's installation directory for the full specification.
Podcast-specific batch planning: One content batch per thread or episode cluster (max 8 slides each). Structural batches: opening (title, episode map, arc overview) and closing (discussion, closing).
**/study-template.html within this plugin's installation directory, then read it with the Read tool.**/study-design-guide.md within this plugin's installation directory, then read it.{{STUDY_TITLE}} → a title capturing the show's intellectual arc (e.g., "Conversations on Craft" or the podcast's own title if strong){{SIDEBAR_SUBTITLE}} → "Host Name" or "Podcast Name"{{BOOKS_SUBTITLE}} → episode count and thread count (e.g., "Twelve Episodes Across Four Threads")<div class="slides-wrapper">:Slide 0 — Title: class="slide active no-margin" — the podcast title, host, episode count, date range, and a unifying quotation from the series. Uses study-title-page class. Includes begin-hint.
Slide 1 — The Episodes: class="slide no-margin" — overview of all episodes in the study. Uses .book-card elements repurposed for episodes: each shows the episode title, guest (if any), date, and one-sentence description. Listed chronologically.
Slide 2 — The Threads: class="slide no-margin" — the show's intellectual threads mapped visually. A diagram showing the themes, which episodes participate in each, and how threads interrelate.
Slides 3 through N — Content slides (the bulk): A mix of:
class="slide"): Direct transcript excerpts with margin notes. The page-chapter label includes the episode and speaker: "Episode Title · [Guest Name] · ~15:30". Use data-book attribute with the thread number for color coding.class="slide evolution-slide"): Side-by-side comparison of how different guests answer the same question, or how the host's framing of an idea shifts across episodes. Uses .evolution-panel elements.class="slide no-margin book-transition"): Brief orienting slide when focus shifts to a new thread. Shows thread name, episode count, and a one-sentence framing.class="slide no-margin"): Analysis of cross-episode patterns — how the host's understanding evolves, where guests agree or disagree, what the accumulated conversations reveal.Slide N+1 — Discussion: class="slide no-margin" — 6-8 questions, prioritizing questions that span episodes or trace the show's cumulative insight. Uses .discussion-q elements.
Slide N+2 — Closing: class="slide no-margin" — the show's intellectual project distilled + a final quotation + attribution with podcast name, host, and episode list.
data-title attributeclass="active"page-chapter labels on excerpt slides MUST include the episode title and speaker for orientationpage-source should include the episode title and datedata-book attribute to map threads to the study template's color system<span class="speaker">[Name]:</span> for speaker attribution in dialogue excerptsSave as [podcast-name]-podcast.html. Derive the name from the podcast title: lowercase, kebab-case, drop articles.