Skip to content
Video & Audio
Skill

/podcast-visualizer

Workflow for creating a podcast visualizer with multi-track audio mixing and DOM-based synchronization. Use when building audio-reactive compositions.

From plugin
helios
13035 skills1 MCP

Claude Code

$ npx -y skills add BintzGavin/helios --skill podcast-visualizer --agent claude-code

SKILL.md

podcast-visualizer.SKILL.md
name: example-podcast-visualizer
description: Workflow for creating a podcast visualizer with multi-track audio mixing and DOM-based synchronization. Use when building audio-reactive compositions.

Podcast Visualizer Workflow

This workflow demonstrates how to build a podcast visualizer that mixes multiple audio tracks (e.g., background music, voiceover) and drives visualizations based on timing.

Quick Start

<!-- Background Music (Loops, Starts at 0s) -->
<audio src="music.mp3" loop data-helios-offset="0"></audio>

<!-- Voiceover (Starts at 2s) -->
<audio src="voice.wav" data-helios-offset="2"></audio>

<!-- Muted Track (For analysis only) -->
<audio src="sfx.wav" muted></audio>
const helios = new Helios({
  duration: 60,
  fps: 30,
  autoSyncAnimations: true // Required for DOM audio sync
});

// React to time
helios.subscribe((state) => {
  const time = state.currentFrame / state.fps;
  if (time >= 2) {
    showVoiceVisualizer();
  }
});

Key Patterns

1. DOM-Based Audio Mixing

The Helios Renderer (in `dom` mode) automatically discovers `<audio>` and `<video>` elements in your DOM and mixes them into the final video.

  • **Discovery:** Any element present in the DOM is eligible.
  • **Attributes:**
  • `src`: The audio source.
  • `loop`: If present, the audio loops.
  • `muted`: If present, the audio is excluded from the mix (useful for logic-only tracks).
  • `volume`: Not supported as an attribute for mixing yet (defaults to 1.0). Use Renderer `audioTracks` option if precise volume control is needed, or bake it in.

2. Timing Control

Control when audio starts playing relative to the timeline using `data-helios-offset`.

<!-- Starts playing at T=5 seconds -->
<audio src="intro.mp3" data-helios-offset="5"></audio>
  • **Positive Offset (`5`):** Delays start by 5 seconds.
  • **Negative Offset (`-5`):** Starts playing immediately, but from the 5-second mark of the audio file (Seek).

3. Visual Synchronization

Use `helios.subscribe` to drive visual elements based on `currentFrame`. Since audio is handled by the browser/Renderer, you just need to ensure your visuals match the expected timing.

helios.subscribe(({ currentFrame, fps }) => {
  const time = currentFrame / fps;

  // Simple time-based trigger
  if (time > 10 && time < 20) {
    // Animate visualizer
  }
});

Common Issues

Browser Preview Sync

In the browser (Studio/Player), `data-helios-offset` is **NOT** automatically applied by the standard `<audio>` element. The `DomDriver` attempts to sync it, but precise start/stop behavior for offsets might vary compared to the frame-perfect Renderer.

**Workaround:** For perfect preview sync, you may need custom logic to `play()/pause()` audio elements in your `subscribe` loop, or rely on the Renderer verification.

Audio Format

Ensure your audio formats (MP3, WAV, AAC) are supported by the browser and FFmpeg.

Reference

  • Example: `examples/podcast-visualizer/`
  • Renderer: `packages/renderer/src/strategies/DomStrategy.ts`
Read more
@bintzgavin
Ships withhelios

Programmatic video creation with web technologies you already know. CSS animations just work.

13035 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
130
Star history of BintzGavin/helios on GitHub, a chart by star-history.com

Other skills on helios.

make-video

make-video

Make videos drawn with code: motion graphics, launch and explainer videos, animated shorts, animated charts and data, logo…

@bintzgavin@bintzgavinInstall Skill
core

core

Core API for Helios video engine. Use when creating compositions, managing timeline state, controlling playback, or subscribing…

@bintzgavin@bintzgavinInstall Skill
animated-video-philosophy

animated-video-philoso…

Story-first motion design philosophy for animated video: motion must earn its place; arc (establish, complicate, resolve); show…

@bintzgavin@bintzgavinInstall Skill
motion-styles

motion-styles

Opt-in library of established visual styles for code-drawn Helios videos: style cards (colour rules, type, motion grammar, a…

@bintzgavin@bintzgavinInstall Skill
canvas

canvas

Patterns for using Helios with Vanilla Canvas API. Use when building high-performance 2D/3D animations without frameworks.

@bintzgavin@bintzgavinInstall Skill

More skills from other plugins.

captions-overlay

captions-overlay

Overlay doctrine for captions in HyperFrames videos — the caption MODEL (drop / rail / embed) and the rule that captions are an…

@heygen-com@heygen-comInstall Skill
acestep

acestep

AI music generation with ACE-Step 1.5 — background music, vocal tracks, covers, stem extraction for video production. Use when…

@calesthio@calesthioInstall Skill
seedance-antislop

seedance-antislop

This skill should be used when a Seedance 2.0 prompt contains generic AI filler, hollow superlatives, vague cinematic language,…

@emily2040@emily2040Install Skill

Questions about podcast-visualizer.

Which coding agents can use podcast-visualizer?
podcast-visualizer installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.