Skip to main content
Glama
tomatitito

Git Commit Video Walkthrough Generator

by tomatitito

Git Commit Video Walkthrough Generator

A command-line tool that generates narrated video walkthroughs of git commits, staged/unstaged changes, or entire codebases with AI-powered analysis and explanations.

Features

  • πŸŽ₯ Automatic video generation from git commits, diffs, or codebases

  • πŸ€– AI-powered code analysis using Claude (Anthropic) or Gemini (Google)

  • πŸ—£οΈ Natural text-to-speech narration

  • 🎨 Syntax-highlighted code visualization

  • πŸ“Š Multiple presentation styles (beginner, technical, overview)

  • ⚑ Standalone CLI - no external services required

  • πŸ”‘ Direct LLM API integration (Anthropic, Google AI)

Installation

Prerequisites

  • FFmpeg: Required for video compilation

    • macOS: brew install ffmpeg

    • Linux: apt install ffmpeg

    • Windows: Download from ffmpeg.org

  • Node.js/Bun: For running the CLI

    • Recommended: Bun 1.0+ (curl -fsSL https://bun.sh/install | bash)

    • Or Node.js 20+

  • LLM API Key: You need an API key from one of these providers:

Install from Source

# Clone the repository git clone https://github.com/yourusername/code-walkthrough-cli.git cd code-walkthrough-cli # Install dependencies bun install # Build TypeScript bun run build # Optional: Create compiled binary bun run build:bin

Setup API Keys

Set your API key as an environment variable:

# For Anthropic Claude export ANTHROPIC_API_KEY="your-api-key-here" # Or for Google Gemini export GOOGLE_API_KEY="your-api-key-here" # Add to your shell profile (~/.zshrc, ~/.bashrc) to persist echo 'export ANTHROPIC_API_KEY="your-api-key-here"' >> ~/.zshrc

Usage

Basic Usage

# Analyze a specific commit git-commit-video abc123 # Analyze staged changes git-commit-video --staged # Analyze unstaged changes git-commit-video --unstaged # Analyze entire codebase git-commit-video --codebase

Options

git-commit-video <commit-hash> [options] Options: --repo <path> Path to git repository (default: current directory) --output <path> Output video path (default: ./walkthrough.mp4) --style <style> Presentation style: beginner, technical, overview (default: technical) --theme <theme> Visual theme: dark, light, github (default: dark) --llm <provider> LLM provider: anthropic, google (default: anthropic) --model <name> Specific model to use (default: provider's latest) --help, -h Show help

Examples

# Generate video for commit with technical style git-commit-video abc123 --style technical # Analyze staged changes with light theme git-commit-video --staged --theme light --output ./staged-changes.mp4 # Analyze entire codebase using Google Gemini git-commit-video --codebase --llm google --style overview # Use specific repository path git-commit-video abc123 --repo /path/to/repo --output ./my-video.mp4

Target Types

  • Specific Commit: git-commit-video <commit-hash>

  • Staged Changes: git-commit-video --staged

  • Unstaged Changes: git-commit-video --unstaged

  • Entire Codebase: git-commit-video --codebase

Presentation Styles

  • beginner: Detailed explanations, slower pace, educational tone

  • technical: Precise, focused on implementation details

  • overview: Quick, high-level summary of changes

Visual Themes

  • dark: Dark background (ideal for code)

  • light: Light background

  • github: GitHub-style syntax highlighting

How It Works

The CLI follows a three-stage pipeline:

  1. Extract Git Data: Analyzes commits, diffs, or codebase structure

  2. LLM Analysis: Calls Claude/Gemini API to analyze code and generate narration script

  3. Video Generation: Creates frames, generates audio, compiles into MP4

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Git Data β”‚ --> β”‚ LLM Analysis β”‚ --> β”‚ Video Gen β”‚ β”‚ Extraction β”‚ β”‚ (API Call) β”‚ β”‚ (Frames+TTS)β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Configuration

API Key Configuration

You can provide your API key in multiple ways (in order of precedence):

  1. Environment Variable (recommended):

    export ANTHROPIC_API_KEY="your-key" # or export GOOGLE_API_KEY="your-key"
  2. Command-line Argument:

    git-commit-video abc123 --api-key "your-key"
  3. Config File (~/.git-commit-video/config.json):

    { "anthropicApiKey": "your-key", "googleApiKey": "your-key", "defaultLlm": "anthropic", "defaultStyle": "technical", "defaultTheme": "dark" }

LLM Providers

Anthropic Claude (default):

  • Best for code analysis

  • Models: claude-3-5-sonnet-20241022, claude-3-opus-20240229

  • Get API key: console.anthropic.com

Google Gemini:

  • Fast and cost-effective

  • Models: gemini-1.5-pro, gemini-1.5-flash

  • Get API key: ai.google.dev

Project Structure

. β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ cli.ts # CLI entry point β”‚ β”œβ”€β”€ index.ts # Core application logic β”‚ β”œβ”€β”€ stages/ β”‚ β”‚ β”œβ”€β”€ analysis.ts # LLM analysis via API β”‚ β”‚ β”œβ”€β”€ script.ts # Script generation via API β”‚ β”‚ └── video.ts # Video generation pipeline β”‚ β”œβ”€β”€ extractors/ β”‚ β”‚ β”œβ”€β”€ commit.ts # Extract commit info β”‚ β”‚ β”œβ”€β”€ staged.ts # Extract staged changes β”‚ β”‚ β”œβ”€β”€ unstaged.ts # Extract unstaged changes β”‚ β”‚ └── codebase.ts # Extract codebase info β”‚ β”œβ”€β”€ llm/ β”‚ β”‚ β”œβ”€β”€ anthropic.ts # Anthropic API integration β”‚ β”‚ β”œβ”€β”€ google.ts # Google AI integration β”‚ β”‚ └── types.ts # LLM provider interface β”‚ β”œβ”€β”€ types/ β”‚ β”‚ β”œβ”€β”€ state.ts # Type definitions β”‚ β”‚ └── analysis.ts # Analysis types β”‚ └── utils/ β”‚ β”œβ”€β”€ prompts.ts # LLM prompts for analysis β”‚ └── args.ts # CLI argument parsing β”œβ”€β”€ dist/ # Compiled JavaScript β”œβ”€β”€ bin/ β”‚ └── git-commit-video # Compiled binary (optional) └── video_output/ # Generated videos (default)

Development

# Watch mode (auto-rebuild on changes) bun run watch # Run CLI locally bun run dev # Build TypeScript bun run build # Build standalone binary bun run build:bin # Run tests bun test

Architecture

This CLI application uses a straightforward pipeline:

  1. User runs CLI command with target (commit, staged, unstaged, codebase)

  2. CLI extracts code/commits from git repository

  3. CLI calls LLM API (Anthropic/Google) to analyze code

  4. LLM returns structured analysis (JSON)

  5. CLI calls LLM API again to generate narration script

  6. LLM returns timed script with narration

  7. CLI generates video frames, audio, and compiles final MP4

All processing happens locally - only the LLM analysis is done via API calls.

Video Generation Pipeline

  1. Analysis: Code is analyzed to understand what it does

  2. Script: A narrated script is generated based on analysis

  3. Frames: HTML frames are created with syntax-highlighted code

  4. Screenshots: Puppeteer captures PNG screenshots of each frame

  5. Audio: Text-to-speech generates narration audio

  6. Compilation: FFmpeg combines frames and audio into MP4

Output

The generated video includes:

  • Introduction with project overview

  • Section-by-section code walkthrough

  • Syntax-highlighted code snippets

  • Professional narration

  • Conclusion summary

Example output structure:

walkthrough.mp4 # Final video temp_frames/ # Temporary frame images (auto-deleted) temp_audio.mp3 # Temporary audio (auto-deleted)

Troubleshooting

"API Key Not Found" Error

Make sure you've set your API key:

export ANTHROPIC_API_KEY="your-key" # or export GOOGLE_API_KEY="your-key"

Add it to your shell profile to persist across sessions.

"FFmpeg Not Found" Error

Install FFmpeg:

  • macOS: brew install ffmpeg

  • Linux: apt install ffmpeg

  • Windows: Download from ffmpeg.org and add to PATH

Verify installation: ffmpeg -version

"Invalid JSON Response" Error

The LLM returned malformed JSON. This can happen with very large diffs. Try:

  • Analyzing a smaller commit

  • Using a different LLM provider (--llm google)

  • Using a more capable model (--model claude-3-opus-20240229)

No Audio in Video

The CLI uses system text-to-speech. If TTS fails, the video will be generated without audio (silent).

To improve TTS quality, install edge-tts:

pip install edge-tts

Puppeteer Issues

Puppeteer downloads Chromium automatically. If it fails:

# Reinstall dependencies rm -rf node_modules bun install

Rate Limiting

If you hit API rate limits, the CLI will automatically retry with exponential backoff. For large codebases, consider:

  • Using --style overview for shorter analysis

  • Splitting analysis into multiple commits

  • Using a higher rate limit tier with your LLM provider

Cost Estimates

Typical API costs (approximate):

Target Type

Tokens

Anthropic (Claude)

Google (Gemini)

Small commit (~10 files)

~3K

$0.01

$0.00

Medium commit (~50 files)

~15K

$0.05

$0.01

Large commit (~200 files)

~60K

$0.20

$0.03

Entire codebase (small)

~20K

$0.07

$0.01

Entire codebase (large)

~100K

$0.35

$0.05

Use --dry-run to see estimated costs before execution.

License

MIT

Contributing

Contributions welcome! Please ensure:

  • TypeScript code compiles without errors

  • Follow existing code style

  • Update documentation for new features

  • Add tests for new functionality

Roadmap

  • Support for more LLM providers (OpenAI, Cohere)

  • Custom TTS voices

  • Interactive mode with live preview

  • Video editing features (trim, merge sections)

  • Export to different formats (GIF, WebM)

  • GitHub Actions integration

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomatitito/code-walkthrough-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server