Skip to main content
Short videos of a person talking about the app are one of the cheapest ways to test a hook. With Appeeky Spec, each video starts as a brief in the repo: a persona, a script and a scene. It is reviewed in a pull request like a listing change, made after the merge, and measured with a smart link. There are two ways to make the clip: Both make the clip the same way: a still of the persona in the scene, then a talking video with the script in their voice.

Files

Personas

A persona is the creator in the video. Make one in Appeeky (Personas and clips) and pull it:
A persona needs a look (reference images) picked in Appeeky before it can make clips. personas.yaml says ready: true when it can, and ugc pull marks the others (no look yet). clips.jsonl lists the clips made with each persona: script, caption, status, and the social post when one was made from it. For --local, you can instead keep a persona in the repo, with its images next to it:
looks is required. Up to six images are used. Personas in the repo work only with --local.

Write a brief

Spec adds status, the clip id and the cost when the clip is made. Leave them out of a new brief.

Make clips through Appeeky

Always look at the cost first:
Then make them:
It makes a clip from each brief still marked as a draft and marks the brief status: generating with the clipId and credits. It stops before spending anything when a brief names an unknown persona (run ugc pull), when a persona has no look yet, or when there are not enough credits for every brief.

Make clips on your own fal key

The persona comes from appeeky/ugc/personas/ first, then from Appeeky when APPEEKY_API_KEY is set. An Appeeky persona’s cover image is its look. fal bills your account directly, and no Appeeky credits are used. The clip is saved to .appeeky/media/<brief>.mp4 (gitignored). The brief records status: generated, clipFile, fal’s videoUrl and costUsd. Use the videoUrl in a social draft’s media: to post it.

Asking before paying

Both ways quote first and ask before they spend. --dry-run only quotes. --yes skips the question; without it, a script with no terminal makes nothing. The push workflow passes --yes because the merge is the approval.

Review and send

  1. A pull request adds briefs under appeeky/ugc/briefs/, often next to a listing change or a social draft.
  2. The pull request report lists the clips the merge would make, with persona, length and script.
  3. You merge.
  4. The push workflow from init --ci (or the Docker push routine) runs ugc generate --yes, adding --local when FAL_KEY is set, and commits the updated briefs. Clips made with FAL_KEY are kept with the workflow run.
The weekly agent writes briefs and may quote them with --dry-run, but is never allowed to make clips.

Measure

Run each video as an experiment with a smart link, so its installs and revenue are counted:
Put the printed link in the post or bio. verify fills in the result from the link when it is due, and --playbook adds it to appeeky/playbook.md, so the next brief starts from what worked. See Attribution for the iOS caveat. The appeeky-ugc specialist reads past UGC experiments, link results, personas and the words users use in reviews, and proposes the next video. The co-founder review writes it as a brief when a persona is ready. Related: Social posts · Experiments and screenshots · On your own keys