Skip to content

Ottomark

Ottomark helps game developers turn raw gameplay clips into ready-to-post UGC-style social videos by automatically generating character-driven scripts and dialogue with Gemini.

Core trick

Analyzes gameplay video with Gemini, then generates a character-voiced script, synthesized voiceover, and thumbnail for 9:16 reels.

Tags

Description

Ottomark helps game developers turn raw gameplay clips into ready-to-post UGC-style social videos by automatically generating character-driven scripts and dialogue with Gemini. It solves the problem of slow, expensive game marketing content creation by letting teams publish engaging videos faster and gather early player feedback sooner.
sumitdotml/ottomark★ 02 forksTypeScriptCreated Feb 21, 2026 · last push Feb 21, 2026

README excerpt

# Ottomark

Turn gameplay footage into scroll-stopping UGC reels — scripted, voiced, and thumbnailed by Gemini.

## What it does

Ottomark takes a raw gameplay video and produces ready-to-post short-form UGC commentary reels for Instagram and TikTok. The user uploads footage, picks (or creates) a character persona, and the system handles the rest: video analysis, script generation, voice synthesis, and thumbnail art. The output is a set of 9:16 vertical reels with AI-generated voiceover and styled thumbnails — content that looks like it came from a real creator, not a pipeline.

Game developers can use this to generate authentic-feeling marketing content for early builds without hiring creators or waiting for organic coverage.

## System architecture

```mermaid
flowchart TB
    subgraph Input
        A["🎮 Gameplay Video"]
        B["🧑‍🎤 Character Persona<br/><i>personality · voice · backstory</i>"]
    end

    subgraph Upload ["Gemini Files API"]
        C["Resumable Upload<br/><code>POST /upload/v1beta/files</code>"]
    end

    subgraph Analysis ["Stage 1 — Video Analysis"]
        D["<b>gemini-3-flash-preview</b><br/>12-category structured brief<br/><i>game identity · play-by-play · highlights<br/>hook analysis · tone · timestamps</i>"]
    end

    subgraph Script ["Stage 2 — Script Generation"]
        E["<b>gemini-3.x-pro</b> <i>(fallback chain)</i><br/>Reel type selection from 12-category taxonomy<br/>+ timestamped SRT dialogue"]
        F["<b>Refinement pass</b><br

Team