Opus 5.5 / Sonnet 5.5 plugin for creating narrated cartoon lessons from a topic, paper, repository or script
Ruby
0
49 commits
updated Oct 1, 2026
Version 0.2.0.
A Claude Code plugin for creating narrated cartoon lessons from a topic, paper, repository or script. It combines character acting with p5 diagrams, code, captions and camera moves, then adds music ducked under dialogue, a theatrical curtain call and animated credits.
The plugin includes its reusable artwork, curtain still images, animation and timing recipes and all five original music beds.
NOTE: The project is in beta and this readme still needs to be rewritten by a human (e.g. me :)) - In the meantime you could download it, fire Claude Code in a local directory containing this repo and ask Claude to set it up including all dependencies. You should be up and running in little time.
I will try to complete the readme for manual setup soon.
Enjoy
See 10 examples on X: (1-9) https://x.com/makevoid/status/2105673599046598834
10: https://x.com/makevoid/status/2105311203715153972?s=46
From a local checkout in Claude Code:
claude --plugin-dir /absolute/path/to/motion-graphics-animated-lesson-plugin
Invoke /motion-graphics-animated-lesson:motion-graphics-animated-lesson, or ask for a cartoon animated lesson. Configure FAL_AI_API_KEY through the plugin configuration UI for generation; the animated-lesson MCP server holds the key. Local reuse/rendering does not need a generation call. Developer CLI usage can receive the key from the environment.
Example brief:
Make a three-minute lesson explaining database indexes. Use the professor and developer, show a worked example, reuse the classroom and original intro/ending music, and end with a callback joke and curtain-call credits.
A new lesson begins without a song:
ruby .claude/skills/motion-graphics-animated-lesson/scripts/mv.rb init \
--project /absolute/new-lesson --prompt-file /absolute/brief.md
ruby .claude/skills/motion-graphics-animated-lesson/scripts/mv.rb --project /absolute/new-lesson setup
Then research/script/plan, record existing production authorization, generate the dialogue through MCP, build narration and measured scene timing, produce/review scenes, assemble, mix and deliver. Optional --song imports an existing narration master. audio/song.wav and gen:music retain their historical names but represent narration and its section cuts; background beds use music:bed.
Here follows a draft readme that will be updated soon for human consumption:
The default lecturer is Professor. Otto, voiced by George voice on ElevenLabs Eleven v4. The default character is a young male developer ( the voice uses Liam ). Their original identity sheets and voice settings are preserved. These are the only bundled characters. Either role can be omitted or replaced by the prompt.
The five curtain/character MP4s and the optional agent-lab background are omitted to keep the plugin within directory size limits. Regenerate only those needed for a lesson, inside the initialized project, before rendering scenes that use them. The character sheets, curtain stills, classroom, developer room, props, ending guides and five music beds remain bundled. See the omitted asset list and regeneration instructions. Generation requires a configured Fal API key and production authorization; initialization does not generate media.
All five original music beds (intro, class, blackboard, devroom and titles) are bundled as 192 kbps CBR MP3s. Use MP3 for any new bundled audio. Initialized projects default to those local files, with the intro and titles intended for the opening and ending. Set measured segment ranges and run music:bed locally. The source tracks stay unchanged; looping, fades and narration ducking happen in the mix.
Ending templates preserve 1920×1080/24fps layout, curtain folds/open/closed states, takeaway/source card, title card, alternating character/voice credits, two-column production credits and final joke. Future lessons reuse the layout and image references while supplying their own facts, cast and actual production credits.
Ruby 3.2+, Bundler, FFmpeg/ffprobe, ImageMagick, Python 3, Node.js 22+ and Chrome. Ruby invokes all media backends. Optional Swift effects require macOS 14+ and Swift 5.9+. Fal adapters include ElevenLabs Eleven v4 TTS, ElevenLabs Music v2.5, GPT Image 2.5 Sunburst and MiniMax H3 Max; fetch current schemas before generation.
rake test
# or PROFILE=core / media / swift
PROFILE=core rake test
Routine tests use local media and mocked network calls. Paid live tests are opt-in. See verification guidance.
Fonts are not bundled: each project selects TTF/OTF fonts installed on your machine (see project fonts). New projects are self-contained; the original directory is not required.
The toolkit code is MIT licensed. Preserved user-supplied artwork and model outputs retain their original provenance and applicable terms. System fonts selected into a project keep their own licenses.
Feel free to contribute to this repo and enjoy using this plugin!
The local MCP server and CLI use these external services:
queue.fal.run, rest.alpha.fal.ai, and provider-returned media URLs): authentication, prompts, narration/lyrics, settings, and selected images/audio/video for generation, transcription, and stem separation. Uploaded media links may be accessible to anyone with the link; the plugin does not automatically delete remote assets.fal.ai/api/openapi/queue/openapi.json): model identifiers for schema lookup.Editing, rendering, mixing, and exports run locally. Project files retain briefs, scripts, media, and generation metadata, including personal data supplied in that content. No maintainer telemetry or automatic social publishing is included. Normal Claude conversation and tool-result handling still applies.
Ruby
59.6%
JavaScript
16.3%
Python
15.7%
Swift
8.5%
Opus 5.5 / Sonnet 5.5 plugin for creating narrated cartoon lessons from a topic, paper, repository or script
Ruby
0
49 commits
updated Oct 1, 2026
Version 0.2.0.
A Claude Code plugin for creating narrated cartoon lessons from a topic, paper, repository or script. It combines character acting with p5 diagrams, code, captions and camera moves, then adds music ducked under dialogue, a theatrical curtain call and animated credits.
The plugin includes its reusable artwork, curtain still images, animation and timing recipes and all five original music beds.
NOTE: The project is in beta and this readme still needs to be rewritten by a human (e.g. me :)) - In the meantime you could download it, fire Claude Code in a local directory containing this repo and ask Claude to set it up including all dependencies. You should be up and running in little time.
I will try to complete the readme for manual setup soon.
Enjoy
See 10 examples on X: (1-9) https://x.com/makevoid/status/2105673599046598834
10: https://x.com/makevoid/status/2105311203715153972?s=46
From a local checkout in Claude Code:
claude --plugin-dir /absolute/path/to/motion-graphics-animated-lesson-plugin
Invoke /motion-graphics-animated-lesson:motion-graphics-animated-lesson, or ask for a cartoon animated lesson. Configure FAL_AI_API_KEY through the plugin configuration UI for generation; the animated-lesson MCP server holds the key. Local reuse/rendering does not need a generation call. Developer CLI usage can receive the key from the environment.
Example brief:
Make a three-minute lesson explaining database indexes. Use the professor and developer, show a worked example, reuse the classroom and original intro/ending music, and end with a callback joke and curtain-call credits.
A new lesson begins without a song:
ruby .claude/skills/motion-graphics-animated-lesson/scripts/mv.rb init \
--project /absolute/new-lesson --prompt-file /absolute/brief.md
ruby .claude/skills/motion-graphics-animated-lesson/scripts/mv.rb --project /absolute/new-lesson setup
Then research/script/plan, record existing production authorization, generate the dialogue through MCP, build narration and measured scene timing, produce/review scenes, assemble, mix and deliver. Optional --song imports an existing narration master. audio/song.wav and gen:music retain their historical names but represent narration and its section cuts; background beds use music:bed.
Here follows a draft readme that will be updated soon for human consumption:
The default lecturer is Professor. Otto, voiced by George voice on ElevenLabs Eleven v4. The default character is a young male developer ( the voice uses Liam ). Their original identity sheets and voice settings are preserved. These are the only bundled characters. Either role can be omitted or replaced by the prompt.
The five curtain/character MP4s and the optional agent-lab background are omitted to keep the plugin within directory size limits. Regenerate only those needed for a lesson, inside the initialized project, before rendering scenes that use them. The character sheets, curtain stills, classroom, developer room, props, ending guides and five music beds remain bundled. See the omitted asset list and regeneration instructions. Generation requires a configured Fal API key and production authorization; initialization does not generate media.
All five original music beds (intro, class, blackboard, devroom and titles) are bundled as 192 kbps CBR MP3s. Use MP3 for any new bundled audio. Initialized projects default to those local files, with the intro and titles intended for the opening and ending. Set measured segment ranges and run music:bed locally. The source tracks stay unchanged; looping, fades and narration ducking happen in the mix.
Ending templates preserve 1920×1080/24fps layout, curtain folds/open/closed states, takeaway/source card, title card, alternating character/voice credits, two-column production credits and final joke. Future lessons reuse the layout and image references while supplying their own facts, cast and actual production credits.
Ruby 3.2+, Bundler, FFmpeg/ffprobe, ImageMagick, Python 3, Node.js 22+ and Chrome. Ruby invokes all media backends. Optional Swift effects require macOS 14+ and Swift 5.9+. Fal adapters include ElevenLabs Eleven v4 TTS, ElevenLabs Music v2.5, GPT Image 2.5 Sunburst and MiniMax H3 Max; fetch current schemas before generation.
rake test
# or PROFILE=core / media / swift
PROFILE=core rake test
Routine tests use local media and mocked network calls. Paid live tests are opt-in. See verification guidance.
Fonts are not bundled: each project selects TTF/OTF fonts installed on your machine (see project fonts). New projects are self-contained; the original directory is not required.
The toolkit code is MIT licensed. Preserved user-supplied artwork and model outputs retain their original provenance and applicable terms. System fonts selected into a project keep their own licenses.
Feel free to contribute to this repo and enjoy using this plugin!
The local MCP server and CLI use these external services:
queue.fal.run, rest.alpha.fal.ai, and provider-returned media URLs): authentication, prompts, narration/lyrics, settings, and selected images/audio/video for generation, transcription, and stem separation. Uploaded media links may be accessible to anyone with the link; the plugin does not automatically delete remote assets.fal.ai/api/openapi/queue/openapi.json): model identifiers for schema lookup.Editing, rendering, mixing, and exports run locally. Project files retain briefs, scripts, media, and generation metadata, including personal data supplied in that content. No maintainer telemetry or automatic social publishing is included. Normal Claude conversation and tool-result handling still applies.
Ruby
59.6%
JavaScript
16.3%
Python
15.7%
Swift
8.5%