> ## Documentation Index
> Fetch the complete documentation index at: https://typecast.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Shorts generation

> Use the CLI from an AI agent to generate short-form narration, hooks, and alternate takes.

Short-form video work usually needs fast iteration: a hook, a few alternate reads, and a final audio file that can be dropped into an editor. The CLI is useful because an agent can turn script drafts into named audio assets without switching tools.

## Recommended flow

<Steps>
  <Step title="Ask the agent for a short script">
    Keep each line short enough for captions and editing.

    ```text theme={null}
    Write a 25-second Shorts script with:
    - one opening hook
    - three short beats
    - one call to action
    ```
  </Step>

  <Step title="Generate a scratch take">
    ```bash theme={null}
    cast "This is the fastest way to test a Typecast voice from your terminal." \
      --emotion smart \
      --out shorts-scratch.wav
    ```
  </Step>

  <Step title="Generate alternate hooks">
    ```bash theme={null}
    cast "Stop scrolling. Your app can speak in one command." \
      --emotion preset --emotion-preset happy --emotion-intensity 1.3 \
      --out hook-a.wav

    cast "Here is a terminal trick for instant AI voiceovers." \
      --emotion smart \
      --out hook-b.wav
    ```
  </Step>

  <Step title="Save final audio">
    ```bash theme={null}
    cast "$(cat shorts-script.txt)" \
      --voice-id tc_xxx \
      --emotion smart \
      --format mp3 \
      --out shorts-final.mp3
    ```
  </Step>

  <Step title="Generate captions from the same take">
    ```bash theme={null}
    cast "$(cat shorts-script.txt)" \
      --voice-id tc_xxx \
      --emotion smart \
      --out shorts-final.wav \
      --timestamps-out shorts-final.srt
    ```
  </Step>
</Steps>

## Agent prompt pattern

```text theme={null}
Create a short-form video voiceover.
Write the script first, then generate:
1. hook-a.wav
2. hook-b.wav
3. final.mp3
4. final.srt

Use the CLI. Keep filenames descriptive, generate captions from the same final script, and do not overwrite approved takes.
```

## Practical tips

| Goal                   | CLI option                                                        |
| ---------------------- | ----------------------------------------------------------------- |
| Faster delivery        | `--tempo 1.08` to `--tempo 1.18`                                  |
| More energetic read    | `--emotion preset --emotion-preset happy --emotion-intensity 1.2` |
| More natural context   | `--emotion smart --prev-text ... --next-text ...`                 |
| Editor-friendly output | `--out final.mp3 --format mp3`                                    |
| Subtitle import        | `--timestamps-out final.srt`                                      |
| Web preview captions   | `--timestamps-out final.vtt --timestamps-format vtt`              |
| Custom campaign voice  | `cast voices clone sample.wav --name "Campaign Voice"`            |
| Reproducible drafts    | `--seed 42`                                                       |

## What to automate

| Shorts task              | Recommended CLI feature                                            |
| ------------------------ | ------------------------------------------------------------------ |
| Opening hook A/B tests   | Separate `hook-a.wav`, `hook-b.wav` files                          |
| Captions for editing     | `--timestamps-out final.srt`                                       |
| Browser preview captions | `--timestamps-out final.vtt --timestamps-format vtt`               |
| Branded or creator voice | `cast voices clone` then use `--voice-id uc_xxx`                   |
| Fast review in a room    | Run `cast "short sentence"` without `--out` for immediate playback |

<Tip>
  Generate hooks as separate files. It makes it easier for the agent or editor to compare openings without regenerating the full narration.
</Tip>
