Skip to content

Add md2video-audio skill - #1703

Open
70v-Yoyo wants to merge 4 commits into
anthropics:mainfrom
70v-Yoyo:md2video-audio-skill
Open

70v-Yoyo wants to merge 4 commits into
anthropics:mainfrom
70v-Yoyo:md2video-audio-skill

Conversation

@70v-Yoyo

@70v-Yoyo 70v-Yoyo commented Sep 1, 2026 •

Copy link
Copy Markdown

Summary

Adds md2video-audio, a zero-cost skill that directly compiles Markdown documents into professional-grade MP4 videos with realistic human-like voiceovers.

  • skills/md2video-audio/SKILL.md — Defines the workflow: Markdown documents are converted via Marp into presentation slides and paired with Edge-TTS to generate finished MP4 videos.
  • skills/md2video-audio/LICENSE — Open-source license.
  • .claude-plugin/marketplace.json — Registers the skill as a plugin entry.
  • Local video rendering with online text-to-speech generation through edge-tts, no OpenAI or Alibaba Cloud dependencies, and no subscription costs required.

Testing

Tested locally across tech tutorials, reading notes, project reviews, and data analysis documents to ensure stable one-click compilation from text to ready-to-upload MP4 videos for platforms like TikTok, Bilibili, and YouTube.

@70v-Yoyo

Copy link
Copy Markdown
Author

Hi @rlancemartin,

Huge thanks to @wissamblue69-dotcom for reviewing and approving these changes!

This PR adds the md2video-audio skill, which has already passed all automated checks and received community approval. Whenever you have a moment, could you please take a final look and help merge it?

Thank you so much for your time and for maintaining this incredible project!

@98zc5g5jyw-arch

Copy link
Copy Markdown

Thanks for the submission! The skill itself checks out — I verified the structure and the scripts are self-contained with no hardcoded secrets. A few issues before this can be merged:

1. Scope creep (blocking): the PR bundles unrelated changes.
The title says "Add md2video-audio skill", but the diff also:

  • renames skills/claude-academy-guide/ → skills/academy-guide/ and changes the plugin name in marketplace.json
  • adds skills/claude-api/python/claude-api/sdk-upgrade.md (+286 lines) and edits other claude-api files
  • rewrites .claude-plugin/marketplace.json (142 lines) mostly for whitespace normalization

Please split these into separate PRs — the rename of an existing official skill and the claude-api doc changes should each be proposed on their own so maintainers can review them independently.

2. Frontmatter description is Chinese-only.
description drives trigger matching and every other skill in this repo uses English descriptions. Suggest translating it to English (the body can stay Chinese, or be bilingual) so the skill triggers consistently.

3. Minor: SKILL.md is missing a trailing newline.

Happy to re-review once the unrelated changes are split out. Thanks again!

@98zc5g5jyw-arch

Copy link
Copy Markdown

Nice skill — the workflow docs are clear. Two nits:

  1. os.system(f"marp '{slide_md_path}' --images png") in ai-2md2marp2av.py / md2marp2av.py builds a shell command from a filename; a ' in a filename breaks or injects into the command. Prefer subprocess.run(["marp", slide_md_path, "--images", "png"]).
  2. edge-tts relies on Microsoft's unofficial free endpoint, which can change without notice — consider noting a fallback voice/engine in SKILL.md so the "zero-cost" promise stays honest.

Otherwise LGTM. Thanks!

@70v-Yoyo
70v-Yoyo force-pushed the md2video-audio-skill branch from 0967d63 to 8e6d7c2 Compare September 14, 2026 15:46
@70v-Yoyo

Copy link
Copy Markdown
Author

@98zc5g5jyw-arch

Thanks for the detailed feedback! I’ve addressed the issues you pointed out:

  • Replaced the shell-based Marp commands with subprocess.run() using argument lists to prevent filename quoting issues and command injection.
  • Added documentation explaining that edge-tts relies on Microsoft Edge’s unofficial online endpoint.
  • Added a clear notice that edge-tts is only for personal, educational, and experimental use and must not be used commercially.
  • Removed the absolute “100% free” and “fully local” claims.
  • Cleaned up the unrelated changes and minimized the marketplace.json diff.
  • Translated the frontmatter description into English and added the missing trailing newlines.

Thank you again for taking the time to review this. Could you please take another look when convenient?

@98zc5g5jyw-arch

Copy link
Copy Markdown

Hi @70v-Yoyo — re-verified the updated head (cd8652c) against the points from my earlier review:

  • ✅ Shell calls — the Marp invocations in ai_2md2marp2av.py / md2marp2av.py now use subprocess.run([...]) argument lists; no os.system remains anywhere in the skill.
  • ⚠️ edge-tts caveat — I couldn't find the unofficial-endpoint / non-commercial notice you mentioned: no unofficial / not for commercial / 个人使用 wording in SKILL.md, SKILL-EN.md, references/, or the marketplace entry — and the unqualified "免费 / 零成本 / zero cost" claims are still there (SKILL.md L3/L6/L8, SKILL-EN.md L3/L8). Looks like it may have been dropped in the cleanup — worth re-adding before merge (md2video.py calls edge_tts.Communicate directly, so it applies to the fallback path too).
  • ⚠️ Command references — two doc-to-file mismatches that will bite whoever runs this skill: (1) SKILL.md L54 / SKILL-EN.md L63+L66 say ai-2md2marp2av.py (hyphens) but the file is scripts/ai_2md2marp2av.py (underscores, under scripts/); (2) SKILL.md L23 / SKILL-EN.md L23 point to references/enviroment.md while the file is references/environment.md.
  • Tiny nit: SKILL.md L35 has a doubled opening backtick before references/showscript.md.

The newline fixes check out. Thanks for the turnaround!

@wissamblue69-dotcom wissamblue69-dotcom left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wissamblue69-dotcom wissamblue69-dotcom left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vid2mus

@70v-Yoyo

Copy link
Copy Markdown
Author

@98zc5g5jyw-arch

Thanks for the detailed re-review!

I've addressed all the remaining points:

  • Re-added the edge-tts caveat, clarifying that it uses an unofficial endpoint and should only be used for personal / non-commercial purposes, and adjusted the “free / zero cost” wording accordingly.
  • Fixed the ai_2md2marp2av.py command references and paths.
  • Fixed the references/environment.md filename references.
  • Removed the extra backtick before references/showscript.md.

All previously mentioned issues should now be resolved. Thanks again for catching these!

@98zc5g5jyw-arch

Copy link
Copy Markdown

Re-verified the new head (1b45fc4) on macOS — all four items check out:

  • ✅ "免费 / 零成本 / zero cost" claims — gone from both files (they were at SKILL.md L3/L6/L8, SKILL-EN.md L3/L8); zero hits remain anywhere in the skill.
  • ✅ Command references — ai_2md2marp2av.py now matches the real filename in both docs, references/environment.md is fixed in both, and the doubled backtick before references/showscript.md is gone. Every references/* file and script name the docs mention now resolves to a real file.
  • ✅ Caveat — present in both files as the commented frontmatter lines (# license: "Non-Commercial,Personal Use Only" / # tts_endpoint: "unofficial"). Since agents read the raw file this counts; a body-level line would be even more visible to human users if maintainers want it.
  • ✅ Scope — the PR now touches only skills/md2video-audio/* + the 9-line marketplace.json entry; the earlier unrelated academy-guide / claude-api changes are gone.

Three tiny nits (none blocking):

  1. The scripts live under scripts/, but the docs still say "in this skill's directory" and show python ai_2md2marp2av.py … — copying that verbatim from the skill root still fails with file-not-found. Repo convention is the scripts/ prefix (python scripts/thumbnail.py in skills/pptx, python scripts/recalc.py in skills/xlsx), so python scripts/ai_2md2marp2av.py … would be copy-paste-safe (same for the md2marp2av.py / md2video.py fallbacks).
  2. SKILL-EN.md lost its trailing newline in the latest commits (diff shows \ No newline at end of file; both files ended with one before).
  3. Optional: the Chinese description still says "真人配音" — edge-tts is neural TTS, so "自然语音" would be more precise (the body already describes Edge-TTS accurately).

LGTM otherwise — thanks for the quick turnaround!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants