# AI Game Ad Generator

> Agent skill on puras — published by puras. Turn a game's store link — or whatever media you have — into a finished, captioned mobile-game video ad. Paste an App Store / Google Play URL or drop screenshots and gameplay footage, and it builds a thumb-stopping UA creative (hook, mid payoff, and CTA end card) with burned-in captions for sound-off feeds. A store-link-to-video and gameplay-to-ad generator for mobile-game user acquisition.

- **Skill path:** `puras/game-ad-studio/game-ad-generator`
- **Skillpack:** Game Ad Studio (`game-ad-studio`)
- **Skillpack ID:** `0dac04f5-5e73-44d7-8c47-adc9977250e5`
- **Deployment version:** v76
- **Human page:** https://puras.co/skills/puras/game-ad-studio/game-ad-generator
- **API base:** `https://api.puras.co`

## Description

Turn a game's store link — or whatever media you have — into a finished, captioned mobile-game video ad. Paste an App Store / Google Play URL or drop screenshots and gameplay footage, and it builds a thumb-stopping UA creative (hook, mid payoff, and CTA end card) with burned-in captions for sound-off feeds. A store-link-to-video and gameplay-to-ad generator for mobile-game user acquisition.

## Try it free

AI Game Ad Generator has a free in-browser playground on its page (https://puras.co/skills/puras/game-ad-studio/game-ad-generator) — load an example or bring your own inputs and run it with a Google sign-in. No credit card, no subscription; runs are usage-based after the free try.

## Input schema

```json
{
  "type": "object",
  "required": [
    "brief"
  ],
  "properties": {
    "logo": {
      "type": "image",
      "description": "The game's logo / icon (transparent PNG preferred). Shown on the end card."
    },
    "brief": {
      "type": "text",
      "maxLength": 2000,
      "description": "What the game is, who it's for, and the angle you want. Can also carry a full creative direction — an ad scenario / shot list, specific gameplay moments, a hook, spoken lines, on-screen text, pacing, tone, or CTA — which the ad then executes (it only invents what you leave open). An App Store / Google Play link on its own also works."
    },
    "style": {
      "enum": [
        "auto",
        "bold",
        "playful",
        "minimal",
        "premium"
      ],
      "type": "string",
      "default": "auto",
      "description": "Visual tone of the end card. `auto` decides from the game's genre."
    },
    "cta_text": {
      "type": "string",
      "default": "Play Now",
      "maxLength": 24,
      "minLength": 2,
      "description": "End-card button text, e.g. \"Play Now\", \"Install\"."
    },
    "language": {
      "type": "string",
      "maxLength": 12,
      "description": "Optional language code for the script / voiceover (e.g. \"en\", \"tr\"). Empty = the brief's language."
    },
    "template": {
      "enum": [
        "auto",
        "fail_to_success",
        "save_the_character",
        "talking_creator",
        "reaction_pip",
        "screen_record_pov",
        "satisfying_asmr",
        "before_after",
        "pattern_interrupt",
        "custom"
      ],
      "type": "string",
      "default": "auto",
      "description": "Which winning ad structure to build. `auto` picks the best fit for your media + genre; `custom` composes a bespoke one. Templates are starting points, not rails. See references/creative-playbook.md for what each does.\n"
    },
    "game_name": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional. The game's name (otherwise read from the store listing / brief)."
    },
    "brand_color": {
      "type": "color",
      "description": "Accent color for the end card / caption highlight. Derived from the logo / art if empty."
    },
    "screenshots": {
      "type": "array",
      "items": {
        "type": "image"
      },
      "maxItems": 10,
      "minItems": 0,
      "description": "Gameplay screenshots / key art. Used as demo footage source, end-card references, and to read the art style."
    },
    "aspect_ratio": {
      "enum": [
        "9:16",
        "1:1",
        "16:9"
      ],
      "type": "string",
      "default": "9:16",
      "description": "Output frame — 9:16 (vertical), 1:1 (square), or 16:9 (landscape)."
    },
    "gameplay_videos": {
      "type": "array",
      "items": {
        "type": "video"
      },
      "maxItems": 5,
      "minItems": 0,
      "description": "Screen recordings of real gameplay. The strongest proof of gameplay — used as the hero footage of the ad."
    },
    "duration_seconds": {
      "type": "integer",
      "default": 15,
      "maximum": 60,
      "minimum": 8,
      "description": "Target length of the ad, including the end card. 15 s is the sweet spot; longer ads stitch extra segments."
    }
  }
}
```

## Output schema

```json
{
  "type": "object",
  "properties": {
    "video": {
      "type": "video",
      "description": "The finished ad creative (ends on the end card) — the single playable video on drive. The playground renders it with a <video> player.\n"
    }
  }
}
```

## Examples

### Play Store URL → Video Ad Creative

Paste a Google Play / App Store link and get a finished, captioned vertical ad — the game's name, art, and rating are pulled from the listing.

Inputs:

```json
{
  "brief": "https://play.google.com/store/apps/details?id=com.supercell.brawlstars&hl=en",
  "aspect_ratio": "9:16"
}
```

Outputs:

```json
{
  "video": "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/examples/game-ad-studio/game-ad-generator/3961bb36/out-videos-0-video_url.mp4"
}
```

### Screenshot + Logo → 15s Cozy Puzzle Ad

One Merge Dragons screenshot, a logo, and a two-line brief — the router picks the template and cuts a captioned 15-second vertical ad.

Inputs:

```json
{
  "logo": "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/mergedragons_logo.webp",
  "brief": "Merge Dragons — cozy merge puzzle. Merge eggs and trees, heal the land, hatch dragons. For relaxed puzzle players.",
  "template": "auto",
  "screenshots": [
    "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/mergedragons_screenshot.webp"
  ],
  "duration_seconds": 15
}
```

Outputs:

```json
{
  "video": "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/examples/game-ad-studio/game-ad-generator/07b8c3aa/out-videos-0-video_url.mp4"
}
```

### Three Screenshots → Competitive Strategy Ad

Clash of Clans art and a one-line brief become a captioned 9:16 ad aimed at competitive strategy players.

Inputs:

```json
{
  "logo": "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/coc_logo.webp",
  "brief": "Clash of Clans — build your village, train troops, raid rivals. Competitive strategy players.",
  "screenshots": [
    "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/coc_ss1.webp",
    "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/coc_ss2.webp",
    "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/coc_ss3.webp"
  ]
}
```

Outputs:

```json
{
  "video": "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/examples/game-ad-studio/game-ad-generator/595d12db/out-videos-0-video_url.mp4"
}
```

## Use this skill

puras runs this skill on its own backend — you send inputs and get the result back. Three ways to call, fastest first:

### 1. MCP server — recommended for coding agents, no API key

Connect the puras MCP server; auth is OAuth in the browser on first call, so there is nothing to paste.

```bash
claude mcp add --transport http puras https://mcp.puras.co/mcp
```

Any MCP client works — point it at `https://mcp.puras.co/mcp` (HTTP transport). Then ask the agent to run `game-ad-generator` from skillpack `puras/game-ad-studio` with your inputs.

### 2. CLI / Python SDK — `pip install puras`

```bash
pip install puras
puras login            # or set PURAS_API_KEY
puras run puras/game-ad-studio/game-ad-generator -i key=value
```

From Python:

```python
import puras

client = puras.Client()   # PURAS_API_KEY from env
result = client.run("puras/game-ad-studio/game-ad-generator", {"brief":"https://play.google.com/store/apps/details?id=com.supercell.brawlstars&hl=en","aspect_ratio":"9:16"})
```

### 3. HTTP API

`wait=true` blocks until the run reaches a terminal status and returns the result inline.

```bash
curl -X POST "https://api.puras.co/v1/jobs?skillpack=puras/game-ad-studio&wait=true" \
  -H "Authorization: Bearer $PURAS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"skill":"game-ad-generator","inputs":{"brief":"https://play.google.com/store/apps/details?id=com.supercell.brawlstars&hl=en","aspect_ratio":"9:16"}}'
```

Mint an API key (for CLI / SDK / API) from https://puras.co/api-keys.

## Pricing

Runs are billed usage-based from your workspace credit balance — the cost of a job is the sum of the model token (and any media) usage it incurs. There is no per-call platform fee. The playground and the job result report the exact cost of each run.

- Pricing page: https://puras.co/pricing
- Machine-readable model price registry: `https://api.puras.co/v1/pricing`
