xhs-video-workflow

Convert Markdown notes into vertical GSAP kinetic typography videos with ChatTTS voiceover.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/Migeking/video-production-skills --skill xhs-video-workflow-migeking
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: xhs-video-workflow
Source: https://github.com/Migeking/video-production-skills/tree/main/xhs-video-workflow
Command: npx skills add https://github.com/Migeking/video-production-skills --skill xhs-video-workflow-migeking

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires ChatTTS, soundfile, edge-tts, playwright, torch, torchaudio, hyperframes.

What problem does it solve? Turning a written Xiaohongshu (RED) note into an engaging vertical video normally requires manual storyboarding, animation work, voiceover recording, and video editing. This Skill automates the entire pipeline from Markdown content to a finished 1080x1920 MP4 with synchronized narration and background music. ## Core Features & Use Cases - End-to-end video pipeline: Analyzes a Markdown note, designs an 8-13 slide storyboard, builds GSAP-animated HTML slides with an industrial-neon design system, and renders a vertical MP4 via HyperFrames. - Deterministic TTS voiceover: Generates per-slide WAV narration with ChatTTS using a fixed seed (42) for reproducible results, then extracts durations into timing.json for precise audio-slide synchronization; Edge TTS is supported as a fallback. - Audio mixing and quality gates: Integrates per-slide voice clips plus looping BGM at volume 0.15 from a licensed Kevin MacLeod library, enforces lint checks, ffprobe verification, and a 20-point quality checklist. - Use Case: A content creator pastes a Markdown note about workplace management, and the Skill produces a 90-second kinetic typography video with Chinese voiceover, glass-morphism slide design, and background music ready for Xiaohongshu upload. ## Quick Start Use the xhs-video-workflow skill to turn my Markdown note into a vertical kinetic typography video with ChatTTS voiceover and background music.

Frequently Asked Questions about xhs-video-workflow

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I turn a Markdown note into a vertical video for Xiaohongshu?

Feed the Markdown note into the pipeline: it analyzes the content into an 8-13 slide storyboard, builds GSAP-animated HTML slides at 1080x1920, generates ChatTTS voiceover per slide, and renders an MP4 with HyperFrames. Total runtime is roughly 35-45 minutes.

How do I generate Chinese TTS voiceover with ChatTTS for videos?

Use ChatTTS with source set to huggingface and a fixed seed of 42 for consistent output across runs. Write numbers as Chinese words (e.g., 百分之八十 instead of 80%) so they are pronounced correctly, and export each segment as a 24kHz WAV file.

ChatTTS vs Edge TTS for video narration, which should I use?

ChatTTS is the primary engine, offering offline generation and reproducible results via fixed seeds. Edge TTS is the fallback when ChatTTS is unavailable or a Microsoft voice like zh-CN-XiaoxiaoNeural is preferred, but its output must be manually split into per-slide segments.

Why are all my HyperFrames slides blank after rendering?

Blank slides are caused by a missing CSS rule: you must add .slide.clip{opacity:1!important} or HyperFrames renders nothing visible. Also verify the GSAP script tag appears only once, since duplicate inclusion breaks the animation timeline.

How do I sync audio narration with slide transitions in HTML videos?

Extract each WAV duration with soundfile into a timing.json file, then set each audio element's data-start to its slide's start time plus 0.3 seconds. This offset lets the GSAP fade-in finish before the narration begins.

What are the limitations of this video generation pipeline?

The pipeline does not include auto-publishing to Xiaohongshu and requires local dependencies including Python 3.8+, Node 18+, ffmpeg, ChatTTS, and Playwright. Dynamic APIs like Date.now() or Math.random() are forbidden in slides because they break deterministic rendering.