Skip to main content

video-analyst

Analyze videos from YouTube or TikTok and produce structured AI reproduction plans with Veo 3 video prompts, Nano Banana 2 image prompts, and natural voiceover text.

Downloads a video → analyzes it with Gemini 2.5 Flash → outputs a scene-by-scene reproduction plan with generation prompts, character reference sheets, and humanized voiceover in any language.

Install

As a CLI tool

# Clone and install
git clone https://github.com/getvrex/video-analyst.git
cd video-analyst
uv venv && uv pip install -e .

# Or with pip
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

As a Claude Code skill

# One-liner install
npx @getvrex/video-analyst install

# Or manually
git clone https://github.com/getvrex/video-analyst.git ~/.claude/skills/video-analyst
cd ~/.claude/skills/video-analyst && uv venv && uv pip install -e .

Via npm (for Claude Code skill)

npm install -g @getvrex/video-analyst

Setup

export GEMINI_API_KEY=your_key_here

Usage

# Full analysis in English (JSON output)
video-analyst analyze "https://youtube.com/watch?v=abc"

# Summary in Vietnamese, markdown output
video-analyst analyze "https://www.tiktok.com/@user/video/123" -m summary -l vi -f markdown

# With a visual style
video-analyst analyze "https://youtu.be/xyz" --style cyberpunk -l ja -f markdown

# Save to file
video-analyst analyze "https://youtube.com/shorts/abc" -o plan.json

# List available styles
video-analyst styles

Options

Flag Short Default Description
--mode -m full summary (condensed) or full (comprehensive)
--lang -l en Target language for voiceover (en, vi, ja, ko, zh, es, ...)
--style -s realistic Visual style preset for all prompts
--format -f json Output format: json or markdown
--output -o stdout Save output to file
--keep-video Keep downloaded video after analysis
--model gemini-2.5-flash Override Gemini model
--verbose -v Show detailed progress

Claude Code

If installed as a skill, use it directly in Claude Code:

/video-analyst https://youtube.com/watch?v=abc
/video-analyst https://www.tiktok.com/@user/video/123 --summary --lang vi

Visual Styles

18 predefined styles that apply consistently across all generation prompts:

Style Preview Description
realistic Ultra photorealistic — 35mm film, natural grain, no AI look (default)
cinematic Hollywood blockbuster — anamorphic, dramatic lighting, teal/orange
ghibli Studio Ghibli — hand-painted, lush backgrounds, whimsical
wes-anderson Symmetrical, pastel palette, meticulous production design
noir Film noir — high contrast B&W, dramatic shadows, 1940s
cyberpunk Neon-lit dystopia — magenta/cyan, rain-slicked streets
vintage-film 1970s analog — heavy grain, faded colors, Kodak film stock
anime Modern anime — sharp linework, vivid colors, dynamic angles
watercolor Soft painted — visible brush strokes, flowing colors, dreamy
documentary Raw handheld — 16mm film, natural light, authentic
kurzgesagt Flat design motion graphics — vibrant vector, rounded shapes, bold colors
synthwave 80s retro-futuristic — neon grids, chrome, sunset gradients, laser lines
comic-book Pop art — bold ink outlines, halftone dots, vivid primary colors
pixel-art Retro 16-bit gaming — chunky pixels, limited palette, nostalgic
paper-cutout Paper craft — layered cardstock, hand-cut edges, handmade charm
low-poly Faceted 3D geometry — crystalline surfaces, vibrant gradients, minimal
claymation Stop-motion clay — sculpted figures, fingerprint textures, warm lighting
vaporwave 90s surreal digital — pastel gradients, glitch effects, marble busts

Output Structure

VideoReproductionPlan
├── title                    # in target language
├── description              # video concept and hook
├── metadata_tags[]          # bilingual hashtags
├── viral_structure_notes    # hook analysis, content arc
├── characters[]
│   ├── character_name
│   ├── character_description    # identical across all scenes
│   └── t2i_reference_prompt     # Nano Banana 2, plain background, multi-angle
├── scenes[]
│   ├── scene_number
│   ├── duration_seconds         # 8, 16, or 24 (multiples of 8)
│   ├── generation_method        # "t2i_i2v" (characters) or "t2v" (environment only)
│   ├── video_prompt             # Veo 3, first 8s
│   ├── video_extend_prompt      # continuation if >8s
│   ├── t2i_prompt               # Nano Banana 2 reference image
│   ├── voiceover_text           # target language, humanized
│   ├── voiceover_duration_estimate_seconds
│   └── scene_description
└── cover_t2i_prompt         # thumbnail image prompt

Scene duration logic

  • Veo 3 generates 8s max per clip
  • 16s scene = 8s video looped 2x (ideal length)
  • 24s scene = 8s video + extend prompt for continuation
  • Ads, sponsors, and end cards are automatically filtered out

Generation methods

  • t2i_i2v: Any scene with characters → generate reference image first (Nano Banana 2), then animate (Veo 3). Ensures visual consistency.
  • t2v: Pure environmental/atmospheric scenes only → direct text-to-video.

Cost

Uses Gemini 2.5 Flash pricing. Token usage and USD cost are displayed after each run.

Per 1M tokens
Input (video + text) $0.30
Output $2.50

Typical cost: $0.05 – $0.15 per analysis depending on video length.

Requirements

  • Python 3.11+
  • ffmpeg in PATH (for video merging)
  • GEMINI_API_KEY environment variable

License

MIT

Metadata

Release files for video-analyst 1.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for video-analyst 1.6.1
File Size Uploaded
video_analyst-1.6.1.tar.gz 2.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for video-analyst 1.6.1
File Interpreter ABI Platform
video_analyst-1.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / video_analyst-1.6.1.tar.gz

Download URL video_analyst-1.6.1.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
39c9b70cb421e01ba0c4a6f0c4326f737abc222c10f501c772d0ded9f0afc5c7
BLAKE2b-256 checksum
How to use checksums
07bce7cc794d421ce6c030501e1513252904731e2a2e53a74a3e6139d7274cdf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / video_analyst-1.6.1-py3-none-any.whl

Download URL video_analyst-1.6.1-py3-none-any.whl
Size 27.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
516c37fc8a7fe23d6af2f0bff070a7697402c6e265f5c93d3674a9dc0a6b9234
BLAKE2b-256 checksum
How to use checksums
d5509cb06454a89d284d97c4668657288e80072e58421cbac09ba98a359bab89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.6.1 This release

2 release files

1.5.1

2 release files

1.5.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page