← Files FrameoARCHIVED FILE

skills/character-sheet/SKILL.md

4.09 KB · Oct 10, 2026 · 06:03 UTC

↓ Download file

---
name: character-sheet
description: "A consistent character across views and expressions, on the canvas so every later image and video can keep the same face."
---

Needs: a description or a photo; the style (photoreal, anime, 3D, editorial)
Credits: about 90–130 (5–7 images at ~18 each)
Time: 10 minutes

## When

Before any multi-shot work with a recurring person or mascot: a series, a brand
character, a game or story cast. `script-to-video` calls this for its cast.

## Ask first

1. **Who** — a photo (`show_upload` for files on the user's device, `import_media_url` for a web link; images attached to the chat do not reach Frameo, and `create_upload_url` is for clients that send the file themselves) or a description: age, build, hair, clothes, one
   distinguishing detail.
2. **Style** — photoreal, editorial, anime, 3D, game concept.
3. **Views** — the default is front, three-quarter, profile, full body, two expressions.

## Steps

**Before any paid step.** The project: `list_projects` (or `create_project`) gives the `project_id`
and, when the project has several modules, the `module_id`; every call below that takes a project —
`estimate_cost` included — gets that same pair; without it those tools answer `project_needed`. The
quote: one `estimate_cost(items=[…])` prices a stage in one call, with the same project, model,
size and number of `image_urls` or `reference_image_urls` (`reference_count`) as each generate call, and returns a `quote_id` per item plus the total. Each generate call
then passes its own item's `quote_id` and `confirmed_by_user=true`. A quote is single-use and lasts
15 minutes, so a long plan is priced stage by stage, right before each stage runs; a stage that
comes to more than the user approved is asked about again first. Generate calls return
`generation_ids`; `wait_task` returns the links, and `show_generations` shows each stage's running
and finished work in one card where the chat app displays Frameo cards: all the stage's ids at
once, before its first `wait_task`, and the finished result with `final: true`.

**The plan first.** Before the first paid call, the plan goes to the user in the chat as plain
text: what will be made, in order, one line per generation (for a script, the shot list; for a
set, each shot), with each line's credits and the total. The credits come from
`estimate_cost(items=[…])`, up to 10 items a call, so a long plan takes several calls; those
quotes may expire unused, since each stage is quoted again right before it runs. Nothing is
generated until the user says yes. The user can drop or change lines; a changed line is priced
again.

**Canvas rows.** Every `generate_image` here takes `placement_kind="character"` and `placement_group=<the character's name>`, so the sheet is one row on the character board, and later shots that use it as a reference get rows of their own.

**1. The anchor (~18).** `generate_image`: front view, neutral expression, plain background,
in the style; `image_urls=[photo]` when given. `wait_task`, show it; this is the face
everything else follows — iterate here, not later.

**2. The views (~18 each).** `generate_image` per view, each with its own quote, with
`image_urls=[anchor]` first and the view in the prompt ("three-quarter view, same person,
same clothes"). Keep the background plain. `wait_task` for the links.

**3. The references.** The anchor and views stay on the project canvas; their links, anchor
first, are what later generations take as `image_urls` / `reference_image_urls`.

**4. Save it to the cast (free).** `save_character` with the character's name and the anchor
first, then the views in `image_urls`, six images at most (the most a saved character keeps;
with more views, the six that show the face and outfit best): later work in the project finds it with
`list_characters`, and it shows in the Frameo app's character panel.

## Done

The anchor and its views on the canvas in one row, with their links for later shots, and the
character in the project's cast.
`open_in_frameo` on the result opens the project in the Frameo app, where every take sits on
the canvas, ready for retakes and edits.

## Files

None.

SHA-256: 3fdfc0364ee8042ccd25d65c7baedf8a46c76934f7a168314fce33ecff470982