Conversation
Wzdhehe
force-pushed
the
add-plugin-html2video-for-mcode
branch
3 times, most recently
from
September 17, 2026 15:13
0d50ebf to
7320ccd
Compare
Narrated-video pipeline: HTML slides with staged entrance animations, TTS voiceover measured with ffprobe, burned-in subtitles, deterministic frame-stepping capture, ffmpeg assembly, and ASR verification. - 11 Node scripts, no build step; works with mcode connectors or mmx-cli - 13 themes, 17 layout recipes, image framing primitives - Subtitles confined to their own windows (no overlap); 16:9 and 9:16 canvases - Research phase documented: source grading, cross-verification rules, notes template - Discloses dependencies, accounts, network destinations and data handling (bilingual README) - Validation: node scripts/validate.mjs -> OK (exit 0)
Wzdhehe
force-pushed
the
add-plugin-html2video-for-mcode
branch
from
September 17, 2026 15:23
7320ccd to
4104572
Compare
Add Plugin: html2video-for-mcode Narrated-video pipeline: HTML slides with staged entrance animations, TTS voiceover measured with ffprobe, burned-in subtitles, deterministic frame-stepping capture, ffmpeg assembly, and ASR verification. - 11 Node scripts, no build step; works with mcode connectors or mmx-cli - 13 themes, 17 layout recipes, image framing primitives - Subtitles confined to their own windows (no overlap); 16:9 and 9:16 canvases - Research phase documented: source grading, cross-verification rules, notes template, plus how to fetch official-site / press-release text (SPA rendering, PDF-first numbers) - Discloses dependencies, accounts, network destinations and data handling (bilingual README) - Validation: node scripts/validate.mjs -> OK (exit 0)
… them to the repo root) Add Plugin: html2video-for-mcode Narrated-video pipeline: HTML slides with staged entrance animations, TTS voiceover measured with ffprobe, burned-in subtitles, deterministic frame-stepping capture, ffmpeg assembly, and ASR verification. - 11 Node scripts, no build step; works with mcode connectors or mmx-cli - 13 themes, 17 layout recipes, image framing primitives - Subtitles confined to their own windows (no overlap); 16:9 and 9:16 canvases - Research phase documented: source grading, cross-verification rules, notes template, plus how to fetch official-site / press-release text (SPA rendering, PDF-first numbers) - Discloses dependencies, accounts, network destinations and data handling (bilingual README) - Validation: node scripts/validate.mjs -> OK (exit 0)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes
Add Plugin:
html2video-for-mcodeatplugins/Wzdhehe/html2video-for-mcode.A Skill that turns a topic, outline, or script into a narrated MP4: HTML slides with staged
entrance animations, a TTS voiceover, burned-in subtitles, and an ASR pass that verifies the
voiceover says what the script says.
User value
After installing, a MiniMax Code user can ask in plain language:
and get:
What makes it more than a slide exporter:
derived from the TTS audio via ffprobe, so the picture can never lag behind the voiceover.
is just a headline.
screen-recording.
images, external resources, or entrance animations without an animation class: the silent
failure modes that otherwise ship a broken-looking video while every script reports success.
Plugin submission checklist
plugins/<github-owner>/<plugin-name>.plugin.jsonname matches the Plugin directory.README.mdincludes a real example prompt and expected result (bilingual:README.md+README.zh-CN.md).LICENSEandplugin.jsondeclare an open-source license (MIT).(Node 18+, ffmpeg/ffprobe, Playwright Chromium; MiniMax API key or Token Plan for voice and
ASR; Windows/macOS/Linux; PowerShell caveat documented).
(
api.minimaxi.com/api.minimax.iofor ASR only when invoked; voice via mcode connectorsor
mmx-cli; image fetching only from URLs the user passes; no telemetry).are included. The ASR script reads its key from an environment variable or CLI flag at
runtime and never writes it.
TODOhas been replaced.npm run checkpasses.Evidence
The single failure is a Windows checkout artifact, not a content problem: that test creates a
symlink fixture, and creating symlinks on Windows requires Developer Mode or elevation
(
EPERM: operation not permitted, symlink …). It reproduces identically on a clean checkoutwithout this Plugin. CI runs on
ubuntu-latest, where it passes.npm run validate— the part ofnpm run checkthat inspects Plugins — passes with exit code 0.Manual end-to-end test (Windows, Node 24, ffmpeg-static):
plan-timings.mjs→ every slide duration andstage entrance time derived from measured audio.
check-slides.mjscorrectly rejects slides with undefined CSS variables (--coral-a/--coral-b),missing images, external font links, and
data-stagewithout an animation class; clean slides pass.capture.mjs --mode motionproduced 143 frames for an 8.6s slide; frame-diff (PSNR) confirms thestaged entrance actually renders at its scheduled time (
infbefore the entrance, ~14 dB across it).build-video.mjs --asrproduced a 14.20s MP4 matching the expected duration exactly, full decodeclean,
out/subs.srtgenerated, and per-sentence ASR parts produced.#FFB84Don white)is rejected with a non-zero exit code, a compliant one (
#C2410C) passes.traditional characters (Cantonese voice) and mismatched numbers fail with exit code 1.
Full disclosure of dependencies, network access, and data handling is in the Plugin README.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.