makevoid/motion-graphics-animated-lesson-plugin

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

See the code

See what people are saying

SourceMessageScoreDate

I gave Opus 5.5 one prompt and it made 10 animated lessons. The topics and editing are spot on. (r/ClaudeAI)

I suggested a few subjects, but didn’t prompt each lesson. Claude researched the web, picked the angles, created the characters, wrote the lessons and chose every cut. I wanted good information with hooks that make you keep watching. What surprised me most was its taste. Built with my open-source…

0

Oct 1, 2026

README

Motion Graphics Animated Lesson

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

Install and invoke

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:

DRAFT Readme

Characters

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.

Assets to regenerate

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.

Preserved templates and 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.

Runtime and verification

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.

Minor notes

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.

License

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!

External services and data sharing

The local MCP server and CLI use these external services:

  • Fal API and storage (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 schemas (fal.ai/api/openapi/queue/openapi.json): model identifiers for schema lookup.
  • Web research: search queries and reference URLs go to Claude's configured search provider and visited sites.
  • Setup and updates: package requests go to RubyGems, npm, and PyPI (or configured mirrors); plugin installation and updates contact GitHub.

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.

makevoid/motion-graphics-animated-lesson-plugin

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

See the code

See what people are saying

SourceMessageScoreDate

I gave Opus 5.5 one prompt and it made 10 animated lessons. The topics and editing are spot on. (r/ClaudeAI)

I suggested a few subjects, but didn’t prompt each lesson. Claude researched the web, picked the angles, created the characters, wrote the lessons and chose every cut. I wanted good information with hooks that make you keep watching. What surprised me most was its taste. Built with my open-source…

0

Oct 1, 2026

README

Motion Graphics Animated Lesson

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

Install and invoke

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:

DRAFT Readme

Characters

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.

Assets to regenerate

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.

Preserved templates and 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.

Runtime and verification

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.

Minor notes

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.

License

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!

External services and data sharing

The local MCP server and CLI use these external services:

  • Fal API and storage (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 schemas (fal.ai/api/openapi/queue/openapi.json): model identifiers for schema lookup.
  • Web research: search queries and reference URLs go to Claude's configured search provider and visited sites.
  • Setup and updates: package requests go to RubyGems, npm, and PyPI (or configured mirrors); plugin installation and updates contact GitHub.

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.

Languages

Ruby

59.6%

JavaScript

16.3%

Python

15.7%

Swift

8.5%