Product image → 9:16 ad
Checks the photo, offers to extend it to a vertical frame, drafts two or three camera moves, then makes a new take of your pick on Fast.
Try asking“Make a 9:16 ad from this product photo. Quote it first.”
One skill teaches your agent three Pershot workflows: a product image into a 9:16 ad, a UGC-style talking ad, and a batch from a spreadsheet. It quotes every job and waits for your yes before it spends a credit.
Connecting your own AI agent is open to every account and needs no key. Developer API keys, for automating your own work from code, are by application.
Each workflow drafts cheaply on Mini at 480p and runs only the version you pick on Fast at 720p.
Checks the photo, offers to extend it to a vertical frame, drafts two or three camera moves, then makes a new take of your pick on Fast.
Try asking“Make a 9:16 ad from this product photo. Quote it first.”
A generic person, never a real one, holds the product and says your line in their own voice, shot like a phone video.
Try asking“A 10-second talking ad for our serum. The line: it sinks in fast.”
Checks every row, prices the whole sheet, submits it as a batch with a total cap, and exports results by SKU.
Try asking“Here is products.csv. One 5-second clip per row, drafts first.”
In every workflow: quote, confirm, generate. The skill shows the credits and dollars for exactly what will run, waits for your yes, and sends each job with a price cap and an idempotency key, so a retry never charges twice.
The same zip works everywhere: it holds one skill folder with SKILL.md at its root.
Download the zip and unpack it into your personal skills folder, or into .claude/skills in a repository to share it with your team.
mkdir -p ~/.claude/skills
unzip ~/Downloads/pershot-video.zip -d ~/.claude/skills/Connect the MCP server, then type /mcp in Claude Code and sign in. It spends your creative balance.
claude mcp add --transport http pershot https://mcp.pershot.app/mcpAsk for a video. Claude picks up the skill from the request, or run it by name.
/pershot-video Make a 9:16 ad from ./product.png. Quote it firstTurn on "Code execution and file creation" in Settings, Capabilities.
Open Customize, then Skills. Choose +, Create skill, Upload a skill, and pick the zip.
Add the MCP server as a custom connector. Skills you upload also reach Claude Code when you sign in with the same account.
Unpack the zip into ~/.agents/skills, or into .agents/skills in a repository.
mkdir -p ~/.agents/skills
unzip ~/Downloads/pershot-video.zip -d ~/.agents/skills/Connect the MCP server and sign in with codex mcp login. It spends your creative balance.
codex mcp add pershot --url https://mcp.pershot.app/mcp
codex mcp login pershotRestart Codex if the skill does not appear, then type $ and the skill name to call it. Prefer AGENTS.md? The zip includes one to paste into yours.
$pershot-video make a 9:16 ad from product.png. Quote it firstPlain Markdown you can read and edit. Your brand's prompt rules can go straight into SKILL.md.
pershot-video/SKILL.mdpershot-video/AGENTS.mdpershot-video/LICENSEpershot-video/agents/openai.yamlpershot-video/reference/api.mdpershot-video/reference/mcp.mdpershot-video/workflows/product-to-ad.mdpershot-video/workflows/spreadsheet-batch.mdpershot-video/workflows/ugc-talking-ad.md---
name: pershot-video
description: Make short videos with Pershot (Seedance 2.0 Mini and Fast, Qwen-Image) on the user's own account, through its MCP tools or /v1 API. Use when the user wants a 9:16 ad from a product image, a UGC-style talking ad, or a batch of videos from a spreadsheet. Always quotes the price and waits for the user's yes before spending credits.
license: MIT
---
# Pershot video workflows
You help the user make short videos with Pershot: Seedance 2.0 Mini for cheap drafts, Seedance 2.0 Fast for finals, and Qwen-Image for stills and first frames. You work on the user's own Pershot account, as the user's own AI agent, and spend their creative balance like the studio does. Credits are the user's money: 1 credit = US$0.01.
## Rules that always apply
1. **Quote, confirm, generate.** Never call a spending tool or endpoint until you have shown the user the quoted credits and dollars for exactly what you will run, and they said yes. A yes covers only what you showed.
2. **Cap every job.** Pass the `quote_id` you showed (valid 10 minutes) or a `max_credits` equal to the confirmed amount. Never raise a cap without asking.
3. **One idempotency key per job.** Make a fresh key for each new job. On a retry after a timeout or network error, send the same key again: it returns the same job and never charges twice.
4. **Draft cheap, finish once.** Draft variants on Mini at 480p; run the one the user picks on Fast at 720p.
5. **Sign in as the user's agent, and keep it secret.** Over MCP the client signs in for you. With a shell, sign in by device login: the user confirms a short code in their browser and you receive a sign-in of your own on their account, which spends their creative balance like the studio ([reference/api.md](reference/api.md), "Sign in: device login"). Keep that sign-in in the `API_KEY` environment variable. Never write a sign-in, a connection code or a key into a prompt, a file, a commit or the chat. Developer API keys (`sk_…`) are by application; never ask the user for one, and use one only if the user already put it in `API_KEY`.
6. **Stop when money runs out.** On `insufficient_credits`, stop. The user has two balances that never cover each other, and `details.account` names the short one: `creative` (the studio, MCP, connection codes and device login) or `api` (a developer API key, by application). Ask the user to top up that balance at https://pershot.app/app/billing, or to raise the cap when `details.limit` is not `balance`. Never switch credentials, models or quality silently to fit a budget.
7. **Respect people and brands.** Faces of real people, celebrities and other companies' brands need the user's permission. If the quote's pre-check says `warn` or `block`, tell the user before anything runs. A refused job (`content_rejected`) is not charged.
8. **Hand over results promptly.** Result links are signed and expire after 24 hours. Give the links and tell the user to download what they keep.
## Connect
- **MCP (preferred):** the server at https://mcp.pershot.app/mcp. Tools: `list_models`, `get_model`, `get_pricing`, `quote`, `plan_auto`, `plan_image_auto`, `use_preset`, `create_upload`, `generate_video`, `generate_image`, `get_job`, `wait_for_job`, `cancel_job`, `get_balance`. Only `generate_video` and `generate_image` spend credits. Setup and details: [reference/mcp.md](reference/mcp.md).
- **HTTP API:** base https://api.pershot.app/v1, header `Authorization: Bearer $API_KEY` with the device-login sign-in, which spends the user's creative balance. The credential decides which balance pays: a developer API key (`sk_…`, by application) would spend the separate developer API balance instead. Endpoints and examples: [reference/api.md](reference/api.md). OpenAPI: https://pershot.app/api/v1/openapi.json
## The loop, every time
1. **Plan** the job with the user: model, resolution, duration, aspect ratio, how many variants.
2. **Quote** it: MCP `quote` (pass the prompt too, for the content pre-check) or `POST /v1/quotes`.
3. **Show** "N credits (≈ $X)" per job and the total, plus any pre-check note. Ask for a yes.
4. **Generate** with the `quote_id` (or `max_credits`) and a new idempotency key.
5. **Wait**: MCP `wait_for_job` (up to 60 s per call, repeat) or poll `GET /v1/jobs/{id}` every few seconds. `unknown` means the outcome is being checked with the model: keep waiting, do not resubmit.
6. **Report** status, credits charged and the result links. A job that makes no video (it failed, or the model refused it) or whose result a safety check blocked has its credits refunded automatically. A video that is made is charged, even if the user does not like it: offer another take, quoted and confirmed like the first. If a file is broken, the user reports it in the studio, and it is refunded after a check.
## Workflows
- Product image → 9:16 ad: [workflows/product-to-ad.md](workflows/product-to-ad.md)
- UGC talking ad: [workflows/ugc-talking-ad.md](workflows/ugc-talking-ad.md)
- Spreadsheet batch: [workflows/spreadsheet-batch.md](workflows/spreadsheet-batch.md)
## Writing prompts
- Three layers, in this order: subject and action; camera (one move, with speed, height and lens); light and style.
- More than one beat: a timeline, "0–2 s: … 2–5 s: …", covering the whole duration.
- Images: refer to them as @image1, @image2 and say what each is for ("keep the label from @image1").
- End with one short "Avoid:" line. Put spoken lines in quotes and say who speaks.
- Full guide: https://pershot.app/guides/seedance-prompting
## Limits to plan around
- Video: 4 to 15 whole seconds; 480p or 720p; 16:9, 9:16 or 1:1; audio on or off at the same price.
- Images: 1K or 2K; edit models need `image_url`; generate models reject it.
- Up to 9 reference images (API); images up to 10 MB (JPEG, PNG, WebP).
- Seedance first frames and reference images: 300 to 6000 px on each side, width ÷ height 0.4 to 2.5. An upload outside that is refused before anything is charged; resize or extend it first.
- Every limit per model, who checks it and what happens past it: the table at the end of [reference/api.md](reference/api.md), or `limits` in `GET https://api.pershot.app/v1/models`.
- 60 requests a minute per key; a few jobs run at once per account, the rest wait in the queue.
Not inside: API keys, tokens, webhook secrets or account details. The skill uses your MCP connection, or a sign-in it gets by device login and keeps in the API_KEY environment variable.
No. It quotes every job, shows you the credits and dollars, and waits for your yes. Each job then carries that amount as a cap, so it can never cost more than you approved.
Seedance 2.0 Mini for drafts at 480p and Seedance 2.0 Fast for finals at 720p, plus Image Mini or Image Fast to extend or clean up a product photo.
Yes. It is plain Markdown. Change the workflows, add your own prompt rules, or delete what you do not need.
Yes. With a shell it calls the /v1 API directly, signed in to your own account by device login, and spends your creative balance. Developer API keys are by application and spend the separate developer API balance. reference/api.md shows every request.
In your MCP connection, or in an environment variable on your machine. Never in the skill files, and the skill tells the agent never to print or save it. It needs no API key.