Anygen-selected-skills podcast-highlights-deck
Create a highly visual, editorial long-scroll HTML microsite from a podcast episode. Use when the user gives a podcast link (Apple Podcasts/Spotify/RSS/direct MP3/YouTube) and asks for: (1) 8–12 curated highlights (not full transcript), (2) per-highlight playable original audio clips, (3) multilingual language toggle (e.g., English/Japanese/Chinese) applied globally across UI and content, (4) premium typography-led layout inspired by an editorial deck with a sticky table-of-contents rail.
git clone https://github.com/AnyGenIO/anygen-selected-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/AnyGenIO/anygen-selected-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/selected-skills/ramseychen1997/podcast-highlights-deck" ~/.claude/skills/anygenio-anygen-selected-skills-podcast-highlights-deck && rm -rf "$T"
selected-skills/ramseychen1997/podcast-highlights-deck/SKILL.mdPodcast Highlights Deck
(Internal skill id:
podcast-highlights-deck)
What it creates
Create a premium editorial long-scroll highlight deck with a sticky TOC rail, multilingual toggle, and original audio clips.
Workflow
Inputs
- podcast_url: episode page URL (Apple/Spotify/RSS/YouTube/direct MP3)
- languages: list of language codes, e.g.
,en
,jazh
Output
- A static website (Vite build) with:
- editorial hero (no full-bleed podcast artwork)
- sticky left rail: metadata + language toggle + table of contents
- 8–12 highlight sections
- per-highlight audio clip playback (original audio)
- global language switching (no mixed-language UI)
Workflow (execute in order)
1) Acquire audio (source-of-truth)
Prefer a direct audio URL (RSS
<enclosure>). Recommended approach:
- Use
to find the show’s RSS feed (queries like:search_web
, or the Apple show id + RSS)."<show name>" RSS feed - Use
to fetch the RSS XML.get_web_page_contents - Parse RSS to locate the exact episode and extract:
- title
- publish date
- duration (if present)
- cover image
- enclosure mp3 URL
If RSS is unavailable:
- If YouTube exists, use
to download audio.yt-dlp - If a platform blocks direct audio access, ask the user for the RSS link or direct mp3.
Download audio to a working folder (example):
podcast_work/episode.mp3
2) Transcribe with timestamps
Primary:
- Run
.anygen-speech-to-text episode.mp3 -o transcript -f json,md,srt
Fallback (if the tool fails):
- Split audio into chunks with
(10 min chunks)ffmpeg - Use OpenAI Whisper (
) withwhisper-1response_format="verbose_json" - Merge segments by adding time offsets
You need a machine-readable file like:
containing segments withtranscript/episode_verbose.json
,start
,endtext
3) Curate 8–12 highlights (do NOT dump transcript)
Selection philosophy:
- Prefer fewer, stronger highlights.
- Only use quotes that exist in the transcript.
For each highlight, produce:
(h1..h12)id
+start
timestamps in seconds (from transcript)end- title (translate later)
- quote (English, exact or lightly cleaned)
- context (1 sentence)
- takeaway (editorial interpretation)
4) Translate + global UI copy
For every supported language:
- Translate titles, context, takeaway, and quote (transcreation; keep meaning + tone).
Important behavior:
- In non-English modes, show translated quote as primary.
- Preserve a connection to English:
- show “Original (English)” as a secondary expandable panel.
Also translate all UI strings:
- hero framing
- sidebar labels
- buttons (“Play clip”, “Back to top”, etc.)
- closing section labels
5) Clip original audio per highlight
Use the bundled script:
python scripts/clip_audio.py --audio episode.mp3 --highlights highlights.json --out-dir site_assets
Conventions:
- add ~2s padding before/after for natural listening
- output:
…site_assets/audio/h1.mp3
6) Build the site with the bundled editorial template
Use
website_init to create a new site project.
Then copy assets into the project:
src/assets/highlights.jsonsrc/assets/cover.jpgsrc/assets/audio/*.mp3
Then replace template files from this skill:
→assets/template/Home.tsxsrc/pages/Home.tsx
→assets/template/index.csssrc/index.css
→ projectassets/template/index.htmlindex.html
Notes:
- The template expects
schema similar tohighlights.json
.assets/template/highlights.schema.example.json - Ensure
is set from the language toggle.document.documentElement.dataset.lang
7) Bundle and deliver
Run
website_bundle and deliver the generated dist/index.html.
Template assets in this skill
: editorial layout + global language switching + expandable English originalassets/template/Home.tsx
: Swiss‑brutalist paper/ink theme + language font stacksassets/template/index.css
: Google Fonts includes Instrument Serif, Manrope, IBM Plex Mono, and Noto JP/SCassets/template/index.html
: reference structureassets/template/highlights.schema.example.json