change-voicelisted
Install: claude install-skill novoads/claude-code-ads
# Change Voice
One video in. The same video out, with the speech re-performed by a voice you chose.
The picture never moves. The timing never moves. What changes is who is speaking, and
the entire craft of this skill is in three decisions the endpoint cannot make for you:
**which voice**, **which spans of audio to replace**, and **whether the result is
actually good**. The HTTP call in the middle is one request.
**Every HTTP mechanic here belongs to the pack, not to this skill.** Auth, strict
bodies, status codes, rate limits and error envelopes are written out once in
[`skills/novoads-api/SKILL.md`](../novoads-api/SKILL.md) and its
[`reference.md`](../novoads-api/reference.md). Read those for mechanics; this file
names the endpoint and the fields that matter to a re-voice.
## Before anything: this runs on a Novoads account
- **Base URL:** `https://api.novoads.ai/v1` (host overridable with `NOVOADS_BASE_URL` —
host only, you append `/v1`).
- **Auth:** `Authorization: Bearer $NOVOADS_API_KEY`, read from `.env` at the repo root.
- **Check:** `./scripts/check-novoads-env.sh`. If it is missing, run `./scripts/setup.sh`.
- **ffmpeg on your machine.** Hard dependency, not optional: the local speech check, the
casting measurement and the whole assembly are local ffmpeg work. `ffmpeg -version`
before you start.
- **Never** print API keys, commit `.env`, or paste a key into `MASTER_CONTEXT.md`.
> **REST key required. A Novoads MCP connector is not a substitute.** If
> `NOV