Skip to content

docs(demo): add 55s kinetic typography marketing video + reproducible pipeline#102

Merged
George-iam merged 1 commit intomainfrom
docs/demo-video-20260411
Apr 11, 2026
Merged

docs(demo): add 55s kinetic typography marketing video + reproducible pipeline#102
George-iam merged 1 commit intomainfrom
docs/demo-video-20260411

Conversation

@George-iam
Copy link
Copy Markdown
Contributor

Summary

Ships a silent 55-second 1920×1080 marketing video at docs/demo.mp4 plus a fully self-contained regeneration pipeline at docs/demo-video/. Ready for voiceover overlay in any editor, for use on the landing page hero and the external v0.2.7 announcement.

This is a net-new artifact — the existing terminal demo at docs/demo/ is untouched. Two demos for two jobs: the terminal GIF stays as the README hero (it shows the real CLI flow); this kinetic typography video is the social/marketing asset that works without a terminal.

Narrative

Primary value: persistent memory between sessions (hook A). Supporting beat: safety hooks (hook C). Follows the voiceover script we agreed on — see docs/demo-video/NARRATION.md for the source of truth.

Seven beats across 55 seconds

Range What appears on screen
0:00–0:05 ""Claude Code is brilliant —"" / ""for about forty-five minutes."" (emerald on line 2)
0:05–0:15 ""Then the window closes, and everything you taught it is gone."" + three staggered bullets
0:15–0:20 AXME Code (emerald, xl) + ""gives Claude persistent memory.""
0:20–0:30 axme_context money shot: four pill cards (Stack / Decisions / Memories / Safety) + large Previous Session Handoff card with real v0.2.7 context
0:30–0:40 ""Every new session opens with your full project context —"" + four emerald bullets
0:40–0:48 Safety money shot: \$ git push --force origin main mono strip → red slash → BLOCKED pill
0:48–0:55 ""One install. MIT licensed. Claude Code plugin."" + code.axme.ai

Implementation

Pure Python 3.9+ / Pillow / ffmpeg. No external service, no third-party editor, no build step beyond python3 docs/demo-video/render.py. Frames are generated in-memory and piped as raw RGB into ffmpeg libx264 over stdin — no temp PNG files on disk.

docs/demo-video/
├── NARRATION.md       source of truth: voiceover script + beat plan
├── render.py          ~470-line Pillow renderer, 7 beat functions
├── fetch-fonts.sh     one-shot downloader for Inter v4.0 + JB Mono v2.304
├── fonts/             bundled Inter Regular/Medium/Bold + JB Mono Regular
│                      + their SIL OFL licenses (~1.5 MB, committed for
│                      offline reproducibility)
└── .gitignore         excludes preview.mp4 (fast-iteration artifact)
docs/demo.mp4          final 55s render, 1.5 MB, H.264/yuv420p faststart

Regenerate

# first time only — populate fonts/
./docs/demo-video/fetch-fonts.sh

# render
python3 docs/demo-video/render.py                 # 55s @ 24fps (~40s wall)
python3 docs/demo-video/render.py --preview       # first 10s @ 12fps for iteration
python3 docs/demo-video/render.py --fps 30        # higher frame rate
python3 docs/demo-video/render.py --out path.mp4  # override output

Style

  • Canvas: 1920×1080 landscape
  • Background: #0a1210 → #04080a vertical gradient + radial vignette
  • Primary text: #f3f4f6 Inter Bold / Medium
  • Accent: #34d399 emerald (matches code.axme.ai brand)
  • Alert: #f87171 red, used only on the safety block
  • Code lines: JetBrains Mono Regular on a subtle dark strip
  • Animation: ease-out-cubic fade-in + 28px slide-up, staggered bullets

Fonts licensing

Both font families are bundled under SIL Open Font License 1.1, which explicitly permits redistribution (including as part of a larger software product). Licenses are committed alongside the TTF files: fonts/Inter-LICENSE.txt and fonts/JetBrainsMono-OFL.txt.

Test plan

  • python3 docs/demo-video/render.py renders 1320 frames @ 24fps → docs/demo.mp4 (1.5 MB, 55s)
  • ffprobe confirms duration = 55.00s, resolution = 1920×1080, H.264/yuv420p
  • Visual pass on key frames for all 7 beats (no text overflow, cards evenly spaced, BLOCKED pill renders correctly)
  • Iterated on Beat 4 overflow: shrunk card value text to fit within 396px pill width
  • Lay voiceover on top in editor of choice (Descript / DaVinci / CapCut / ffmpeg amerge)
  • Embed on code.axme.ai landing page hero (separate PR in axme-code-site)

Files

  • docs/demo.mp4 (new, 1.5 MB)
  • docs/demo-video/NARRATION.md (new)
  • docs/demo-video/render.py (new, 470 lines)
  • docs/demo-video/fetch-fonts.sh (new, executable)
  • docs/demo-video/.gitignore (new — excludes preview.mp4)
  • docs/demo-video/fonts/ (new — 4 TTF files + 2 license files, ~1.5 MB)

11 files, +941 lines.

🤖 Generated with Claude Code

Ships a silent 1920x1080 demo video at docs/demo.mp4 plus a fully
self-contained regeneration pipeline at docs/demo-video/. Ready for
voiceover overlay in any editor.

This is a net-new artifact alongside the existing terminal demo at
docs/demo/ — neither replaces the other. The terminal demo is for
the README hero GIF; this video is for the external v0.2.7
announcement and the landing page hero.

Narrative (A + C from our value matrix): persistent memory between
sessions as the primary hook, safety hooks as a supporting beat.

Seven beats across 55 seconds:
  0:00-0:05  "Claude Code is brilliant - for about forty-five minutes."
  0:05-0:15  "Then the window closes, and everything you taught it is
             gone." + three staggered bullets (decisions, conventions,
             yesterday's bug)
  0:15-0:20  "AXME Code gives Claude persistent memory."
  0:20-0:30  axme_context money shot: four pill cards (Stack /
             Decisions / Memories / Safety) + large Previous Session
             Handoff card
  0:30-0:40  "Every new session opens with your full project context"
             + four staggered emerald bullets
  0:40-0:48  Safety money shot: `git push --force origin main` mono
             strip, red slash, BLOCKED pill, supporting subtext
  0:48-0:55  "One install. MIT licensed. Claude Code plugin."
             code.axme.ai

Implementation: pure Python 3.9+ / Pillow / ffmpeg. No external
service, no third-party video editor, no build step beyond
`python3 docs/demo-video/render.py`. Frames are generated in memory
and piped as raw RGB into ffmpeg libx264 over stdin, so there are
no temp PNG files on disk.

docs/demo-video/ layout:
  NARRATION.md      source of truth for voiceover script + beat plan
  render.py         ~470-line Pillow renderer with 7 beat functions,
                    gradient background with vignette, card component,
                    envelope-based fade-in / slide-up animations
  fetch-fonts.sh    one-shot downloader for Inter v4.0 + JetBrains
                    Mono v2.304 (both SIL OFL, safe to redistribute)
  fonts/            bundled Inter-Regular/Medium/Bold + JetBrainsMono
                    Regular + their licenses, ~1.5 MB total, committed
                    so the video is fully reproducible offline
  .gitignore        excludes preview.mp4 (fast-iteration artifact)

Regenerate:
  python3 docs/demo-video/render.py              # 55s @ 24fps (~40s wall)
  python3 docs/demo-video/render.py --preview    # first 10s @ 12fps

Style: #0a1210 -> #04080a vertical gradient, Inter Bold / Medium,
#34d399 emerald accent matching code.axme.ai brand, #f87171 red only
on the safety block. Silent track - lay your own narration on top.

#!axme pr=none repo=AxmeAI/axme-code
@George-iam George-iam merged commit c5b7d12 into main Apr 11, 2026
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.

1 participant