tokenlab-photoreal-stills
Make realistic photos of people, places, food, interiors, and scenes from a written brief with TokenLab image models. Use when the user says "a realistic photo of ...", "looks like a real photograph",
Files3
View on GitHubSKILL.mdskills/tokenlab-photoreal-stills/SKILL.md
GitHubPhotoreal Stills
Make images that look like real photographs. The prompt does most of the work: subject, action, place, light, and camera, in that order.
Inputs to collect
- Subject and action: who or what, doing what.
- Place and time: setting, time of day, weather, season.
- Look: documentary, editorial, stock, cinematic, or a film look.
- Format: aspect ratio or pixel size per use (16:9 hero, 4:5 feed, 1:1 card), and image count.
- Limits: no real, named people without consent; no brand logos the user does not own.
Models
<!-- tokenlab:models:start --> <!-- Generated from the live catalog by scripts/sync_models.py. Do not edit; change preferredModels in catalog.json. -->| Operation | Model | Pick | Use |
|---|---|---|---|
text-to-image |
flux-2-pro |
default | General photoreal |
text-to-image |
flux-2-max |
alternative | Highest-detail hero image (not live-tested) |
text-to-image |
seedream-5.0-pro |
alternative | Photoreal, alternative look (not live-tested) |
text-to-image |
krea-2-large |
alternative | Photoreal, alternative look (not live-tested) |
text-to-image |
stable-image-ultra |
alternative | Photoreal, alternative look (not live-tested) |
text-to-image |
flux-2-klein-9b |
alternative | Low-cost draft |
This list refreshes daily from the live catalog. Preferred models come first; otherwise models are ranked by their 24-hour success rate. Before a call, confirm the model with GET /v1/models/{model} and read its price from GET /v1/models/{model}/pricing.
How to choose:
- General photoreal: FLUX.2. Its top tier gives the most detail for a hero image.
- Alternative look: Seedream, Krea, or Stable Image Ultra.
- Low-cost draft: a FLUX.2 Klein model.
All use /v1/images/generations. Send operation: "text-to-image" when the contract lists operation (Stable Image Ultra lists only prompt and aspect_ratio). Exact fields come from each model's contract.
Workflow
Run each call with tokenlab-run (contract → estimate → call → poll → result). Commands below use its helper, ../tokenlab-run/scripts/tokenlab_run.py, a path relative to this skill's folder. If you installed this skill without tokenlab-run, send the same requests with curl. --wait stops after 100 s; a longer task keeps running, so continue with the resume command it prints.
- Read the contract. Note the size field:
resolutionasWIDTHxHEIGHT,aspect_ratio,width/height, or none. Send only listed fields. - Estimate the cost from
GET /v1/models/{model}/pricing: price per image times the image count. - Write the prompt (see Technique). Set the frame size for the use.
- Read the response. A sync response has
data[].url. A response withstatus: "pending"is a task: pollGET /v1/tasks/{id}every 5–10 s untilcompletedorfailed. In tests, a FLUX.2 model returned a task withoutasync: true. - Check the result against the Quality bar. Re-run with a changed prompt, not the same one, when a detail is wrong.
- Return the result URLs, the model, the task IDs, and the prompt you sent.
Technique
- Order the prompt by priority. Black Forest Labs' FLUX.2 guide: "Subject + Action + Style + Context", and word order matters because the model pays more attention to what comes first.
- Aim for 30–80 words. The FLUX.2 guide calls this range usually ideal. Go longer only for complex scenes.
- Name the camera, lens, and light. "Shot on Fujifilm X-T5, 35mm f/1.4" gives a more real result than "professional photo" (FLUX.2 guide). Add the light: "warm tungsten stall lights", "overcast soft daylight", "low sun from behind".
- Use positive words, not negatives. FLUX.2 does not support negative prompts. Say "sharp focus throughout", not "no blur".
- Colors by hex. For brand colors on FLUX.2, tie the code to an object: "the awning is color #1F6F5C".
- Skin and hands. Ask for "natural skin texture" and keep hands in a simple pose, such as holding one object. Check fingers in every result.
- Frame size. On the FLUX family,
resolutiontakes pixels: a FLUX.2 Klein model with1344x768returned 1344 × 768. A wrong value returns400withparam: "resolution". P-Image listswidth/height, but a 768 × 768 test returned 1024 × 1024; use it for square drafts. - Draft cheap, then finish. Explore the composition with a low-cost model, then run the chosen prompt on the default for the final image.
Quality bar
- Looks like a photo: real light falloff, believable depth of field, no plastic skin, no painted look.
- Hands, teeth, eyes, and text-like shapes in the background have no obvious errors.
- Light direction and color are the same on the subject and the background.
- The frame size and aspect ratio fit the use.
- No real person's likeness or brand mark that the user did not ask for.
Related skills
tokenlab-run: the call, poll, and result mechanics.tokenlab-product-photography: a product as the subject.tokenlab-text-in-image: readable words in the image.tokenlab-character-consistency: the same person across a series.tokenlab-edit-image: change an existing photo.tokenlab-prompting: prompt craft per model family.