> An installable agent skill for AI Content Drop. Machine-readable copy: > https://aicontentdrop.com/skills/recreate-reference/SKILL.md. > Ships with the aicontentdrop package, and is listed in > /skills/index.json.

Recreating a reference with the video agent

A reference run is an ordinary drop that starts from something the person shows rather than something they describe. The agent reads the reference into words first — its class, shots, cast, look and lines — puts those words on the brief, and plans from them. Every made piece then comes back with a score and a verdict, and a piece the agent would redo is offered as a priced retry that nobody pays for until it is approved.

Two surfaces, one engine: the MCP tools analyze_reference, start_video_agent, get_video_agent_run and approve_video_agent_spend, or the CLI acd analyze, acd drop --reference, acd drop status and acd drop retry. Both call the same routes (POST /v1/engine/analyze, POST /v1/engine/chat, GET /v1/engine/runs/:id, POST /v1/engine/runs/:id/approve). Reading the reference costs nothing; only an approved step charges credits, and only when it succeeds.

1. When this is the right skill

Use it when the person hands over a clip or a still and wants something made in its manner: "recreate this", "like this ad but for my product", "match this look", "same shots, my brand". A request that only describes the result in words is the video-agent skill; a single clip from a prompt is generate_video after estimate_credit_cost.

When the reference tools are not listed on tools/list, or analyze_reference answers vision_unavailable, the reference read is not open for this account yet. Say so in one sentence and run the job as a plain drop from a written brief; do not describe the reference yourself and pass it off as a read.

2. The rights question, before anything is read

A video is read only once the person has said who holds its rights; for an image, ask too whenever it is clearly someone else's work.

Ask once, in words, and pass the answer exactly:

Over MCP the answer goes in rights_basis, on every read; with the CLI it is --rights. There is no default: a video sent without one is refused (rights_required), and the way past that refusal is to ask the person whose material it is, never to pick a basis.

Never choose a basis for the person, never infer it from the filename, and never retry a refused read with a different basis to get past the refusal. If the person cannot answer, do the job from a written brief instead.

3. Read the reference into words

MCP: analyze_reference with url, a public https link to the clip or image, and rights_basis, the person's answer. It stores the file privately while it is read (only the words are kept), costs no credits and is limited per day.

CLI:


acd analyze ./reference.mp4 --rights own_work --pretty
acd analyze https://example.com/clip.mp4 --rights licensed

The answer is words only: reference_id, kind, status, reference_url, the reference_class with a confidence, and the facts: a summary, shots (index, size, camera, action, tags), cast, look (register, palette, notes) and lines. The CLI prints the same words flat, with the class as class. No frame, thumbnail or file ever comes back, and nothing about the reference is kept beyond those words.

4. Start the run with the reference on the brief

MCP: start_video_agent with the goal in one sentence, reference_url exactly as the read returned it, and reference_class when the person confirmed or corrected the class. budget_credits is a ceiling for the whole run; set it only when the person gives a number. approval_mode: "confirm_each" makes every paid step ask.

CLI: one command reads the reference and starts the run:


acd drop "a 15-second vertical product ad in this style for Nimbus Tea" \
  --reference ./reference.mp4 --rights own_work --confirm-each --pretty

--reference takes a local file, a public https URL, or the reference_url of a reference already read. --lane auto (the default) lets the agent choose the recipe; marketing, cinematic, ugc or drama fixes it. --budget N is the ceiling. The command prints the run_id and what it saw; nothing is planned against a price and nothing is charged by starting.

The agent may answer with questions before it plans. Relay them as they are and send the answers with message_video_agent. Do not answer for the person.

5. Follow the run and read the scorecard

Poll get_video_agent_run every 15 seconds (CLI: acd drop status <run_id>). Report a change of phase or a finished piece, not every poll.


acd drop status <run_id> --notes --pretty

What a run of this kind carries beyond an ordinary drop:

Read the score as the agent's opinion, in words, and hand the reasons to the person with it. A score is not a promise of quality and never a reason to approve anything on the person's behalf.

6. Approve a retry by its exact quote

A second attempt is a step like any other: it carries its own quote and runs only after the person's yes. The surfaces call it Try the other model.

Ask in words, with the number read from the offer, never from memory:

> The agent rates the second shot 48 and offers to try it another way: up to > 36 credits, charged only if it succeeds. Go ahead?

Only after the person says yes, approve exactly what was offered:

Approving the same quote twice does nothing the second time. A declined offer leaves the piece as it was, with its score. One offer per piece: when it is gone, the piece stands.

7. Refusals

Refusal What it means What to do
vision_unavailable (403) The reference read is not open for this account Say so; run a plain drop from a written brief
analysis_cap (429, reset_at) Today's free reads are used Tell the person when it resets; do not retry before then
rights_required (400) A video reached the API with no rights basis (the CLI without --rights) Ask the rights question (section 2) and send the answer
too_large (413) / unsupported_type (415) Too large, or not an image or video the API reads Ask for a smaller file or a supported format
reference_storage_unavailable (503) The reference store is not ready Retry in a few minutes; nothing was read or charged
QUOTE_EXPIRED The retry's price lapsed; nothing was released Read the run again for the new quote_id; ask again if the number moved
QUOTE_MISMATCH That quote is not the one on that step Read the run again and pass task_id and quote_id exactly as given
ENTITLEMENT_REQUIRED The account cannot run this on its current plan Give the info_url it carries (https://aicontentdrop.com/plans) and nothing else about plans

What to hand back

What the agent saw (the class in plain words and the summary), the board link, each finished piece with its link, score and verdict, credits_spent for the whole run, and any retry still offered with its number, so the person can decide it on the website if they prefer.

---

Install the plugin: https://aicontentdrop.com/plugin · All skills: https://aicontentdrop.com/skills