本文へ移動
cccskills
無料GitHub で公開

video-podcast-maker

Use when the user gives a topic and wants an automated topic-driven narrated explainer, podcast, or knowledge-summary video (Bilibili / YouTube / Xiaohongshu / Douyin / WeChat Channels), or asks to learn visual design patterns from a reference video/image. Trigger when the user mentions creating a knowledge video, narrated explainer, video podcast, or animated infographic-style video from a topic — even if they don't say "video podcast" explicitly. Also trigger when the user wants to regenerate, re-render, rebuild, update, or iterate on a narrated video this skill already produced — e.g. they edited the script/prompt, changed the visuals, or swapped the background music and want the final video remade (reuse the existing videos/{name}/ directory, never start a new project). Do NOT trigger for generic video editing, trimming, format conversion, color grading, or non-narrative video tasks. Produces 4K video via research → script → TTS → Remotion → MP4 + BGM.

インストール方法を見る

含まれるファイル(102)

  • SKILL.md19.3 KB
  • .env.example662 B
  • .python-version5 B
  • .skillspector-baseline.yaml9.8 KB
  • AGENTS.md1.6 KB
  • assets/bilibili-triple-black.mp41.3 MB
  • assets/bilibili-triple-white.mp41.4 MB
  • assets/perfect-beauty-191271.mp36.7 MB
  • assets/snow-stevekaldes-piano-397491.mp32.4 MB
  • LICENSE1.0 KB
  • package.json1.1 KB
  • phonemes.template.json9.6 KB
  • prefs_schema.json16.5 KB
  • references/design-guide.md20.2 KB
  • references/design-learning.md3.7 KB
  • references/natural-narration.md8.7 KB
  • references/platform-matrix.md4.0 KB
  • references/script-polish.md15.2 KB
  • references/troubleshooting.md19.5 KB
  • references/visual-taste.md11.5 KB
  • references/workflow-assets.md13.7 KB
  • references/workflow-production.md24.3 KB
  • references/workflow-publish.md10.1 KB
  • references/workflow-script.md16.5 KB
  • references/zh-polyphones.md3.4 KB
  • requirements.txt344 B
  • scripts/_state.py3.2 KB
  • scripts/align_timing_from_srt.py21.9 KB
  • scripts/assets.py15.4 KB
  • scripts/audit_beat_sync.py15.5 KB
  • scripts/audit_components.py4.4 KB
  • scripts/check_prereqs.py6.2 KB
  • scripts/cli_envelope.py5.1 KB
  • scripts/cli.py13.4 KB
  • scripts/components.py8.2 KB
  • scripts/generate_shorts.py15.4 KB
  • scripts/generate_tts.py20.2 KB
  • scripts/get_pref.py2.2 KB
  • scripts/learn_design.py39.2 KB
  • scripts/migrate_prefs.py7.7 KB
  • scripts/resolve_backend.py264 B
  • scripts/resolve_bgm_path.py1.3 KB
  • scripts/tts/__init__.py43 B
  • scripts/tts/backends/__init__.py4.6 KB
  • scripts/tts/backends/base.py879 B
  • scripts/tts/backends/native.py19.7 KB
  • scripts/tts/markers.py1.5 KB
  • scripts/tts/phonemes.py4.9 KB
  • scripts/tts/sections.py8.1 KB
  • scripts/tts/srt.py7.2 KB
  • scripts/tts/voice_advisor.py5.1 KB
  • scripts/verify_output.py32.6 KB
  • templates/components/AnimatedBackground.tsx6.6 KB
  • templates/components/animations.tsx7.7 KB
  • templates/components/AssetImage.tsx2.2 KB
  • templates/components/AssetVideo.tsx2.0 KB
  • templates/components/AudioWaveform.tsx3.6 KB
  • templates/components/ChapterProgressBar.tsx3.1 KB
  • templates/components/CodeBlock.tsx1.8 KB
  • templates/components/ComparisonCard.tsx2.6 KB
  • templates/components/DataBar.tsx2.1 KB
  • templates/components/DataTable.tsx2.4 KB
  • templates/components/DiagramReveal.tsx12.8 KB
  • templates/components/ErrorBoundary.tsx1.5 KB
  • templates/components/FeatureGrid.tsx2.4 KB
  • templates/components/FlowChart.tsx4.6 KB
  • templates/components/Icon.tsx2.1 KB
  • templates/components/IconCard.tsx1.6 KB
  • templates/components/iconMap.ts4.2 KB
  • templates/components/index.ts2.2 KB
  • templates/components/layouts.tsx1.6 KB
  • templates/components/LottieAnimation.tsx3.3 KB
  • templates/components/MediaSection.tsx3.1 KB
  • templates/components/OverlayLayer.tsx1.2 KB
  • templates/components/QuoteBlock.tsx1.8 KB
  • templates/components/SectionLayouts.tsx18.3 KB
  • templates/components/ShortCTACard.tsx1.2 KB
  • templates/components/ShortIntroCard.tsx1.3 KB
  • templates/components/StatCounter.tsx2.2 KB
  • templates/components/Subtitles.tsx5.7 KB
  • templates/components/Timeline.tsx4.3 KB
  • templates/components/useAssets.ts2.8 KB
  • templates/components/useTiming.ts2.6 KB
  • templates/podcast_en.txt1.7 KB
  • templates/podcast_zh.txt1.9 KB
  • templates/podcast.txt1.7 KB
  • templates/presets/kinetic-typography/colors.json1.7 KB
  • templates/presets/kinetic-typography/motion.json796 B
  • templates/presets/kinetic-typography/README.md3.8 KB
  • templates/presets/kinetic-typography/Thumbnail.tsx.template4.2 KB
  • templates/presets/kinetic-typography/Video.tsx.template16.0 KB
  • templates/presets/kinetic-typography/voice.json931 B
  • templates/README.md4.3 KB
  • templates/remotion.config.ts117 B
  • templates/Root.tsx7.2 KB
  • templates/ShortVideo.tsx5.0 KB
  • templates/Thumbnail.tsx2.7 KB
  • templates/Video.en.tsx14.6 KB
  • templates/Video.tsx14.7 KB
  • tsconfig.json337 B
  • tsconfig.templates.json188 B
  • user_prefs.template.json3.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Recommended: Load Remotion Best Practices

This skill benefits from remotion-best-practices (not bundled) for the full Remotion pattern library. It is optional — minimum rules are below if absent.

  • Pi: read the loaded skill at remotion-best-practices (listed in available skills).
  • Claude Code: invoke remotion-best-practices skill/tool before proceeding.

Not installed? Get it from remotion-dev/skills (docs: remotion.dev/docs/ai/skills).

If remotion-best-practices is not installed, minimum rules: chromium must be available, always wrap 4K content in <Scale4K>, use <TransitionSeries> with linearTiming, and treat audio as the master clock.

Video Podcast Maker

Automated pipeline for 4K Bilibili horizontal knowledge videos from a topic. Coding agent + TTS backend + Remotion + FFmpeg.

Contents


Bootstrap

Resolve SKILL_DIR to the directory containing this SKILL.md:

  • Pi: the agent knows the skill path from the loaded skill list — set SKILL_DIR to that directory before running commands.
  • Claude Code: ${CLAUDE_SKILL_DIR} is auto-populated.
SKILL_DIR="${SKILL_DIR:-${CLAUDE_SKILL_DIR}}"

# Prerequisites (CLIs + backend env vars)
python3 "${SKILL_DIR}/scripts/check_prereqs.py"

Updates flow through the skills CLI (npx skills update video-podcast-maker -g); direct git-clone installs use git pull per the README. This skill performs no update checks.

Prereqs failures — see README.md for setup. The check is backend-aware (resolves TTS_BACKEND env → user_prefs.json global.tts.backend → edge default), so only env vars required by the active backend are validated.

First video in a new project? Prefer reusing an existing Remotion project with node_modules/ already installed — creating a fresh project downloads ~2.2 GB of npm packages plus a 90 MB Chrome headless shell (one-time per project). If the user has a project from a previous video, use it. If a fresh project is necessary, run npm install in the background while you do Steps 1-4 (topic research and script writing).

All rendering goes into videos/{name}/ — every output.mp4, final_video.mp4, and thumbnail_*.png lands directly in the per-video directory. Never render to an out/ or dist/ directory; the --public-dir videos/{name}/ convention keeps everything self-contained.

TTS engine — two local backends, no external skill:

  • edge (default) — free, no key, via edge-tts.
  • azure — needs AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (Microsoft Speech SDK).

Each synthesizes in-house (scripts/tts/backends/native.py) — pronunciation (display → spoken → back to display for subtitles) and phoneme application are built in. check_prereqs.py validates the active backend's env vars.

Multi-platform TTS? The former ttscn component skill that provided the 9-backend matrix is no longer a dependency of this skill. If you want those platforms, install Agents365-ai/ttsCN separately and call it directly — this skill ships only edge + azure.

Design Learning shortcut: If the user provides a reference video/image or asks to save/list/delete style profiles, see references/design-learning.md instead of running the workflow below.


Execution Modes

Detect Auto Mode (default) vs Interactive Mode at workflow start — the Auto-default decision table and per-request overrides are in references/workflow-script.md.


Regenerating an Existing Video

If videos/{name}/ already exists and the user is iterating on a finished or in-progress video, reuse that directory. Do NOT start a new project or a new videos/{newname}/.

Pick the smallest re-run for what actually changed:

ChangedRe-runReuses (don't redo)
Narration script (podcast.txt)Step 7 (TTS) → Step 8 preview → render+mixtopic research + section design
Visuals only (components, layout, colors)Step 8 preview → render+mixaudio (podcast_audio.wav / timing.json)
Background music onlyRe-mix BGMoutput.mp4 (no re-render)
Subtitles onlyStep 10.1 finalizeoutput.mp4 / video_with_bgm.mp4

Any re-run that changes what the viewer sees or hears re-enters the Step 8 gate: apply the change, let Studio hot-reload, and wait for a fresh explicit "render 4K" — the previous confirmation does not carry over. A script change shifts every downstream timestamp, so always regenerate timing.json through TTS — never hand-edit it. After any re-run, re-verify:

python3 ${SKILL_DIR}/scripts/verify_output.py videos/{name}/

Workflow

Iterating on a finished video? If videos/{name}/ already exists, see Regenerating an Existing Video above for the minimal re-run — do NOT start at Step 1.

At Step 1 start, create one task per step in your agent's tracker. Mark in_progress on start, completed on finish. Files in videos/{name}/ are the durable record — if interrupted, inspect the directory to determine where to resume.

#StepOutputPhase file
1Define topic directiontopic_definition.mdworkflow-script.md
2Research topictopic_research.mdworkflow-script.md
3Design 5-7 sections(in-memory)workflow-script.md
4Write narration scriptpodcast.txtworkflow-script.md
4.5Pronunciation pre-flight (zh-CN)phonemes.jsonworkflow-script.md
5Asset plan & resolveassets/manifest.jsonworkflow-assets.md
6Generate thumbnails (16:9 + 4:3)thumbnail_*.pngworkflow-production.md
7Generate TTS audiopodcast_audio.wav, timing.jsonworkflow-production.md
8Remotion composition + Studio preview—workflow-production.md
9Render 4K + mix BGMoutput.mp4, video_with_bgm.mp4workflow-production.md
10Publish info + verify outputpublish_info.md, final_video.mp4workflow-publish.md
11Generate vertical shorts (optional)shorts/workflow-publish.md

Mandatory stops (bold rows above):

  • Step 8 — Studio review. MUST launch npx remotion studio and wait for user feedback before rendering. NEVER render 4K until the user explicitly confirms ("render 4K" / "render final"). A reply containing adjustment requests is not confirmation — apply the changes, let Studio hot-reload, and ask again. Every round of adjustments needs its own fresh confirmation before Step 9.
  • Step 10 — verify_output.py. MUST pass before declaring the video done. Exit 0 = green; exit 2 = warnings still publishable. Auto-fixes common omissions (creates final_video.mp4 if missing). Validates publish info (title, description, tags, chapters) against the platform matrix — generate it in Steps 5.5 and 10.2. For machine-readable output add --format json.

Pre-render audit (recommended) — before Step 8:

python3 ${SKILL_DIR}/scripts/audit_beat_sync.py <Video.tsx> <timing.json>

Flags beats that drift > 1.5s from narration.

Auto Mode: visual self-review. When running in Auto Mode (no user watching Studio), render 3-5 key frame stills before asking for render confirmation:

npx remotion still src/remotion/index.ts <CompositionId> videos/{name}/_review_001.png --public-dir videos/{name}/ --frame=<midpoint_frame>

Pick frames at: hero title (~10% in), a dense section midpoint, and the outro. Read the stills back as images and run the design-guide.md and visual-taste.md checklists against actual rendered output. Catch overflow, contrast, and layout regressions before the 4K render. Delete _review_*.png after review.

Validation Checkpoints

After StepCheck
7 (TTS)podcast_audio.wav plays · timing.json covers all sections · SRT is UTF-8
9 (Render)output.mp4 is 3840×2160 · audio-video sync · no black frames
10 (Verify)verify_output.py exits 0 (or 2 with reviewed warnings)

Hard Rules

RuleRequirement
Single ProjectAll videos under videos/{name}/ in user's Remotion project. NEVER create a new project per video.
4K Output3840×2160 (or 2160×3840 vertical), use scale(2) wrapper over 1920×1080 design space
Audio SyncAudio (podcast_audio.wav + podcast_audio.srt) is the master clock. timing.json MUST be generated from the real TTS output, never hand-estimated. Before rendering, final video duration must match audio within ±0.5s. See Audio-Master Clock & Sync.
ThumbnailMUST generate both 16:9 (1920×1080) AND 4:3 (1200×900) — see design-guide.md
Studio Before RenderMUST launch remotion studio for review. NEVER render 4K until user explicitly confirms. Adjustment feedback ≠ confirmation — apply, hot-reload, ask again.
--public-dirEvery Remotion command uses --public-dir videos/{name}/. All output files (output.mp4, final_video.mp4, thumbnails) go directly into videos/{name}/ — never an out/ or dist/ dir.

Visual minimums (text sizes, content width, safe zones, animation safety) live in references/design-guide.md. MUST load before Step 8.

Audio-Master Clock & Sync

Golden rules

  1. Audio is the master clock. Every slide start, subtitle, chapter, and animation beat is derived from podcast_audio.wav and podcast_audio.srt.
  2. Generate timing from TTS, not from text estimates. Pipeline: podcast.txt → generate_tts.py → podcast_audio.wav + podcast_audio.srt + timing.json → composition → render.
  3. Never hand-write timing.json before audio exists. If you already have curated slides, run align_timing_from_srt.py to anchor them to the real SRT.
  4. Compensate TransitionSeries overlap. TransitionSeries renders sum(section.duration_frames) - (N-1) * transitionFrames frames. Scale every section proportionally to keep the rendered length equal to timing.total_frames. Do not stuff all overlap frames into the first section. The corrected pattern is in templates/Video.tsx.

Mandatory sync checkpoints

WhenCheck
After Step 7 (TTS)timing.json.total_duration matches podcast_audio.wav within ±0.5s
Before renderVideo.tsx scales all sections for transition overlap
After renderfinal_video.mp4 duration matches podcast_audio.wav within ±0.5s
Step 10 (verify)verify_output.py exits 0 and reports green on audio/timing

If any checkpoint fails, stop. Do not publish.

Output Specs

ParameterHorizontal (16:9)Vertical (9:16)
Resolution3840×2160 (4K)2160×3840 (4K)
Frame rate30 fps30 fps
EncodingH.264, 16MbpsH.264, 16Mbps
AudioAAC, 192kbpsAAC, 192kbps
Duration1-15 min60-90s (highlight)

Per-Video Layout

project-root/                           # Remotion project root
├── src/remotion/                       # Remotion source (Root.tsx, compositions, index.ts)
├── videos/{video-name}/                # Per-video directory
│   ├── topic_definition.md             # Step 1
│   ├── topic_research.md               # Step 2
│   ├── podcast.txt                     # Step 4: narration script
│   ├── phonemes.json                   # Step 4.5: zh-CN pronunciation overrides
│   ├── assets/manifest.json            # Step 5: per-section asset registry
│   ├── publish_info.md                 # Step 10: title/description/tags
│   ├── podcast_audio.wav               # Step 7: TTS audio
│   ├── podcast_audio.srt               # Step 7: subtitles
│   ├── timing.json                     # Step 7: timeline (drives animations)
│   ├── thumbnail_*.png                 # Step 6
│   ├── output.mp4                      # Step 9: 4K render
│   ├── video_with_bgm.mp4              # Step 9: with BGM
│   ├── final_video.mp4                 # Step 10: final output
│   └── bgm.mp3                         # Background music
└── remotion.config.ts

--public-dir per video

Every Remotion command uses --public-dir videos/{name}/ — each video's assets stay in its own directory, enabling parallel renders:

npx remotion studio src/remotion/index.ts --public-dir videos/{name}/
npx remotion render ... videos/{name}/output.mp4 --public-dir videos/{name}/ --video-bitrate 16M
npx remotion still ... videos/{name}/thumbnail.png --public-dir videos/{name}/

Naming

  • Video name {video-name}: lowercase English, hyphen-separated (e.g. reference-manager-comparison)
  • Section name {section}: lowercase English, underscore-separated, matches [SECTION:xxx]
  • Thumbnails (16:9 AND 4:3 both required): thumbnail_remotion_16x9.png + thumbnail_remotion_4x3.png (or _ai_ prefix for AI-generated)

Additional Resources

Load on demand — do NOT load all at once:

FileLoad when
references/workflow-script.mdSteps 1-4 (topic → script) + Execution Modes (Auto vs Interactive)
references/natural-narration.mdLoad before Step 4 script writing — anti-slop rules for spoken narration (kill list, structural tells, checklist)
references/script-polish.mdLoad after Step 4 draft is written — deep editing toolkit with 24 EN+ZH before/after patterns, evidence boundaries, quality rubrics
references/workflow-assets.mdStep 5, or when the user supplies images/clips or wants stock/AI media
references/workflow-assets.mdA section needs a data-chart/infographic animation beyond the component library (transparent overlay via Hyperframes)
references/workflow-production.mdSteps 5.5-9.5 (publish info draft → thumbnails → TTS → Remotion → render → BGM mix)
references/workflow-publish.mdSteps 10-11 (publish info, verify, shorts)
references/platform-matrix.mdPlatform-specific behavior (thumbnails, chapters, outro, publish info, shorts)
references/design-guide.mdMUST load before Step 8 — visual minimums, typography, animation safety
references/visual-taste.mdLoad before Step 8 alongside design-guide — design dials, anti-default rules, visual modes, section rhythm
references/design-learning.mdUser provides a reference video/image, or manages style profiles
references/troubleshooting.mdChoosing Azure voice/style, debugging hoarse/glitchy audio
references/troubleshooting.mdOn error, script/CLI discovery, or user asks about preferences/BGM
templates/presets/kinetic-typography/Bold type-driven preset (opinion / argument / declaration videos)

All scripts are reachable through one dispatcher — start with python3 ${SKILL_DIR}/scripts/cli.py --help; full routes and envelope error codes: references/troubleshooting.md.


User Preferences

Mutable state (user_prefs.json, phonemes.json) lives in ~/.video-podcast-maker/ — safe from skill updates. Auto-migrated from the skill directory on first run. Run "show preferences" to view, or "set X Y" to change. Full commands: references/troubleshooting.md.


Troubleshooting

See references/troubleshooting.md on errors, BGM options, preference learning, design-learning issues.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Minimal personal narrated-video pipeline — a topic becomes a talking-head-free explainer MP4 (1080p or 4K) via script → Azure TTS (SSML) → Remotion. Use when the user wants a quick narrated video from a topic without the full video-podcast-maker machinery (no extra skills, no thumbnails/shorts/publish matrix). Do NOT trigger for heavy production needs — use video-podcast-maker for those.

日本語の概要は準備中です。原文の説明を表示しています。

Agents365-ai/video-podcast-maker1,6752026年10月2日 更新

Smallest personal narrated-explainer-video pipeline (spoken narration over visuals, not an audio podcast), fully tool-agnostic and autonomous by default — topic → research ∥ asset collection → script → TTS → video → 4K render ∥ publish info + cover. The skill defines the pipeline logic and self-verified checkpoints; any TTS backend and any video tool (Remotion, HyperFrames, CapCut, ...) work, and how much human oversight to apply is set by the working project's AGENTS.md/CLAUDE.md, not here. Use when the user wants a quick personal narrated video with minimal steps, whether or not they name the tool stack. Do NOT trigger for audio-only podcasts, written episodic content, or heavy multi-format production.

日本語の概要は準備中です。原文の説明を表示しています。

Agents365-ai/video-podcast-maker1,6752026年10月2日 更新

Agents365-ai のスキルをすべて見る

このスキルの問題を報告する