agentleFS
samsational-codesamsational-code/business-skills/podcast-episode-analyzer/SKILL.md

podcast-episode-analyzer

Skill0 starsChanged 2 months agoMITView on GitHub

Turn any podcast episode or long-form video into a skimmable, citation-backed HTML brief — every person, company, product, and organization discussed, the claims made about each with speaker attribution and timestamps, explicit numbers, and the episode's main themes. For anyone who listens to podcasts for research: founders, product managers, marketers, sales and BD teams, consultants, researchers, journalists, recruiters, strategists, and investors. Use whenever the user provides a podcast link (YouTube, Spotify, Apple Podcasts, or other public source) or a transcript and wants it analyzed — e.g. "analyze this podcast", "break down this episode", "what companies/people were discussed", "pull the key claims from this episode", "turn this episode into a brief", "what did they say about X" — or pastes a podcast URL with a company, product, person, topic, or theme focus. Trigger even when the user just drops a podcast URL. Produces a neutral, sourced HTML report — never fabricates content from show notes alone, and never turns claims into recommendations. Do NOT use for formal presentation-plus-Q&A transcripts such as earnings calls, all-hands, or keynotes — use the presentation-transcript-extractor skill. Do NOT use for learning a topic from scratch — use the teach-me skill.

  • Installs packages

The file

Show its rules and text

We split this skill into the rules it gives an agent

21 rules. About 0 are common, 19 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈19

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If a focus is provided (e.g.

    line 48
  2. Distinctive:

    Follow this order. The goal is a real transcript of what was actually said — never hallucinate podcast content from show notes alone.

    line 52
  3. Distinctive:

    If the user provides a transcript, use it as the primary source.

    line 54
  4. Distinctive:

    If the user provides a YouTube URL or ID and code execution is available, run the bundled extraction script first:

    line 55
  5. Distinctive:

    If no usable transcript or video version is found, tell the user verbatim:

    line 68
  6. Distinctive:

    Use public web research to supplement — never to invent podcast claims.

    line 78
  7. Distinctive:

    Do not use web research to put words in a speaker's mouth.

    line 86
  8. Distinctive:

    Do not summarize every casual mention.

    line 105
  9. Distinctive:

    Every material claim must be attributed.

    line 120
  10. Very specific:

    Never attribute a claim to the guest if it was made by the host.

    line 129
  11. Distinctive:

    Always call out explicit numbers shared in the episode.

    line 133
  12. Distinctive:

    Only extract numbers explicitly stated in the podcast/transcript.

    line 137
  13. Distinctive:

    Do not calculate new figures unless the math is simple and clearly shown.

    line 138
  14. Distinctive:

    If a figure sounds important but is vague, flag it as qualitative rather than inventing a number.

    line 139
  15. Distinctive:

    Do not give recommendations.

    line 145
  16. Distinctive:

    If file creation is available, save to:

    line 157
  17. Distinctive:

    If file creation is not available, return the full HTML in the response.

    line 161
  18. Distinctive:

    Do not fabricate numbers, tickers, timestamps, names, or quotes.

    line 177
  19. Distinctive:

    If the transcript is incomplete, say so.

    line 178
  20. Distinctive:

    If an entity mention is ambiguous (two companies with the same name, a person referred to by first name only), flag the ambiguity.

    line 179
  21. Very specific:

    If a stance is unclear, use Undefined.

    line 180

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Podcast Episode Analyzer

Turn a podcast episode or long-form video into a skimmable, citation-backed HTML brief. The user listens to podcasts for research — competitive intel, market and customer insight, idea discovery, expert perspective, hiring and partnership leads, or investment ideas — and wants what was actually said, organized so it can be skimmed in under five minutes.

The job is to analyze the episode through an analytical lens: identify every person, company, product, and organization discussed; extract the claims made about each and classify their direction; attribute every claim to guest or host; capture explicit numbers; and organize the output by entity and theme.

This skill does not turn claims into recommendations (buy/sell, adopt/avoid, hire/pass) and does not add model-generated advice. The output helps the user understand what was said, why it matters, and what to research next.

Accepted Inputs

The user may provide any of:

  • YouTube URL
  • Spotify podcast URL
  • Apple Podcasts URL
  • A podcast episode URL from another public source
  • An optional transcript (pasted or uploaded)
  • An optional focus: a company, product, person, topic, sector, or theme
  • An optional lens: the user's purpose (e.g. "I'm evaluating this vendor", "competitive intel on Acme", "sales talking points", "investing lens")

If a focus is provided (e.g. "focus on what they said about pricing"), prioritize those entities in the analysis but still index everything material. If a lens is provided, phrase the interpretation sections for that purpose; otherwise use a neutral analytical lens.

Step 1: Get a Usable Transcript

Follow this order. The goal is a real transcript of what was actually said — never hallucinate podcast content from show notes alone.

  1. If the user provides a transcript, use it as the primary source.
  2. If the user provides a YouTube URL or ID and code execution is available, run the bundled extraction script first:

    pip install youtube-transcript-api --break-system-packages -q   # yt-dlp optional, improves reliability
    python scripts/fetch_youtube_transcript.py "<url-or-id>"          # add --json for structured output

    The script tries the caption API, then yt-dlp, and prints a timestamped transcript on success. If it exits non-zero with a line beginning FALLBACK:, read that line and act on it:

    • network-blocked / access-blocked — the environment firewalls YouTube (common in hosted sandboxes) or YouTube is throttling. Do not re-run the script. Go straight to step 3.
    • no-transcript — captions are disabled or the video is restricted. Go to step 3.

    Disclose the exact track the script reports (manual / auto-generated / translated) as the transcript source.

  3. If the script is unavailable or returned FALLBACK, or the user gave a Spotify / Apple Podcasts / other URL, search the public web for: the episode page, a published transcript (publishers often post the full transcript on their site, blog, or show notes), a re-uploaded video version, and the publisher's show notes. A publisher-posted transcript is the most authoritative fallback — fetch it and use it as the primary source.
  4. If no usable transcript or video version is found, tell the user verbatim:

    I could not find a usable transcript or YouTube version for this episode. Please submit a YouTube link or transcript.

    Then stop — do not generate a report from show notes alone.

Always disclose the transcript source used in the report. If the transcript is partial or low quality, say so.

Step 2: Public Web Research (supplement only)

Use public web research to supplement — never to invent podcast claims. Podcast claims must come from the transcript. Use the web for:

  • Guest bio (current role, organization, prior experience, area of expertise, what they are known for)
  • Host / podcast context when relevant
  • Company or product identification when a name is ambiguous
  • Basic entity validation (does this company exist, what does it do, is it public or private)
  • Public vs. private company status and ticker, only when obvious

Do not use web research to put words in a speaker's mouth.

Step 3: Build the Guest Bio (context and incentives)

Write a concise bio using two inputs: how the guest describes themselves in the episode, and publicly available information from the web. Focus on current role, organization, domain of expertise, prior relevant experience, why their perspective matters, and any incentives, biases, or context that may shape their views — e.g. they sell the product category they are praising, they are promoting a book or a fund, they compete with a company they criticize, or they are speaking about a former employer.

Step 4: Extract Entities

Identify:

  • People (other than host and guest) who are discussed substantively
  • Companies — public and private
  • Products, services, tools, and platforms
  • Organizations, institutions, and government bodies
  • Parent companies and subsidiaries when relevant
  • Books, frameworks, studies, or reports — only when they carry a claim the user would want to check

For public companies, include ticker and exchange only when obvious or easily verifiable. If uncertain, write Ticker unclear. Do not force ticker mapping for ambiguous company names.

Do not summarize every casual mention. Focus on mentions that carry a claim, a number, or a judgment.

Step 5: Extract and Classify Claims

For each entity, extract the guest's or host's claims and classify the overall stance:

  • Favorable — the speaker's substance is positive about the entity (it works, it's winning, it's well run, it's worth adopting)
  • Critical — the speaker's substance is negative (it's failing, overrated, risky, losing ground)
  • Mixed — sounds favorable but includes meaningful criticism, or vice versa
  • Undefined — mentioned factually, no clear directional view

A stance can be favorable or critical without the words "good," "bad," "recommend," or "avoid." Infer the label from the substance — but label the inference clearly as an inference.

Step 6: Attribution Standard

Every material claim must be attributed. For each claim or major point capture:

  • Speaker: guest or host
  • Speaker name when available
  • Timestamp when available
  • Short supporting quote or paraphrase (keep quotes brief)
  • Favorable / Critical / Mixed / Undefined label
  • Why the label was assigned

Never attribute a claim to the guest if it was made by the host. If attribution is unclear, write Speaker unclear.

Step 7: Extract Numbers

Always call out explicit numbers shared in the episode. Examples: revenue and growth rates, user or customer counts, pricing, market size, market share, churn and retention, conversion rates, headcount, costs, margins, funding raised, valuations, timelines, capacity, survey and study results, percentages of any kind.

Rules:

  • Only extract numbers explicitly stated in the podcast/transcript.
  • Do not calculate new figures unless the math is simple and clearly shown.
  • If a figure sounds important but is vague, flag it as qualitative rather than inventing a number.

Step 8: Apply Analytical Framing

For each entity, think about what a careful reader wants to know: What is it? What is the claim? What is the speaker's variant view versus the conventional one? What is the key debate? What number supports or weakens the claim? What is the time horizon if implied? What would need to be verified before acting on it? What could prove the claim wrong? What does this mean for the user's stated lens, if one was given?

Do not give recommendations. Do not add model-generated advice.

Step 9: Produce the HTML Report

Generate a standalone, print-friendly HTML report using the template in assets/report_template.html. Read that file, then fill every {placeholder} with extracted content and remove any sections that genuinely have no content (rather than padding them).

Requirements:

  • HTML only, inline CSS, print-friendly, no JavaScript, no external images. Tables encouraged.
  • Easy to skim in under five minutes.
  • Analyst tone: precise, neutral, skeptical, useful.

If file creation is available, save to:

reports/{podcast_slug}_{episode_slug}_brief.html

If file creation is not available, return the full HTML in the response.

Report sections (in order)

  1. Episode Snapshot — podcast name, episode title, episode URL, platform, episode date (if available), transcript source used, host name, guest name, guest organization/affiliation, one-sentence episode summary.
  2. Guest Bio and Context — self-description from the episode, public bio summary, current role, prior relevant experience, domain or perspective, why this view may matter, potential bias or incentive context.
  3. Top Themes — a table of 5–10 themes phrased as specific, checkable statements rather than topic labels. Columns: Theme | Entities mentioned | Directional tone | Why it matters | Best supporting quote or timestamp. (Example phrasings: "Enterprise buyers are consolidating vendors and cutting point solutions"; "Hospital systems are shifting outpatient procedures to ambulatory centers"; "Usage-based pricing is losing ground to seat-plus-platform bundles"; "Private credit remains attractive but underwriting dispersion is widening".)
  4. Entity Index — a table of every entity discussed. Columns: Entity | Type (Person/Company/Product/Org) | Public/Private and ticker (if obvious) | Category or sector | Speaker | Stance label | Main theme | Numbers mentioned | Follow-up priority (High/Medium/Low). Follow-up priority reflects how much substantive, checkable content appeared — not whether the entity is good or bad.
  5. Entity-by-Entity Analysis — for each entity: type, status, category, speaker(s), stance label, main theme; a "What was said" paragraph in plain English; a supporting-evidence table (Speaker | Timestamp | Quote or paraphrase | Label | Reason for classification); a numbers table (Figure | Value | Period | Speaker | Timestamp | Why it matters), or the line "No explicit figures were mentioned." if none; an "Interpretation" paragraph (what the claim implies about the entity's position, quality, trajectory, competition, economics, or leadership — or, if the user gave a lens, what it implies for that purpose); and 3–7 open questions to research next.
  6. Cross-Episode Takeaways — most important favorable signal, most important critical signal, most important number mentioned, most interesting lesser-known entity, most actionable research lead, biggest unresolved question.
  7. Source Notes — podcast URL, transcript source, public sources used for guest bio, public sources used for entity validation.

Quality Rules

  • Be concise but complete.
  • Paraphrase first. The transcript is a single copyrighted source, so the default in every "supporting evidence" cell is a paraphrase plus a timestamp — not a verbatim quote. Reserve direct quotation for a small number of meaning-critical phrases across the whole report, each kept short (well under 15 words) and clearly attributed. Never reconstruct large stretches of the episode through stacked quotes.
  • Do not fabricate numbers, tickers, timestamps, names, or quotes.
  • If the transcript is incomplete, say so.
  • If an entity mention is ambiguous (two companies with the same name, a person referred to by first name only), flag the ambiguity.
  • If a stance is unclear, use Undefined. If it cuts both ways, use Mixed.
  • Analyst tone throughout: precise, neutral, skeptical, useful.

Final Response to User

After creating the report, briefly tell the user: which episode was analyzed, the transcript source used, the number of entities indexed and how many carry a directional stance, the single most actionable research lead, and where the HTML file was saved (if applicable). Do not include a recommendation unless explicitly requested.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.