← HiggsfieldCONTENT HISTORY

Update to Higgsfield

Snapshot Sep 30, 2026 · 23:18 UTC · version 2.1.0

Collection source: not recorded for this historical snapshot. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED · RULE-BASED ANALYSIS

Supporting file metadata differs

Newly listed paths: agents/openai.yaml. This compares saved file lists, not package contents; a different collection source can change the list.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Supporting files

Before

[{"relative_path":"references/product-intake.md","size_in_bytes":6573},{"relative_path":"references/soul-v2-ugc-character.md","size_in_bytes":43041},{"relative_path":"references/subtitles.md","size_in_bytes":5465},{"relative_path":"refer...

After

[{"relative_path":"agents/openai.yaml","size_in_bytes":220},{"relative_path":"references/product-intake.md","size_in_bytes":6573},{"relative_path":"references/soul-v2-ugc-character.md","size_in_bytes":43041},{"relative_path":"references/...

Compare saved observations

Download comparison JSON
Full technical diff · 1 changed fields

changed /included_files

BEFORE
[
  {
    "relative_path": "references/product-intake.md",
    "size_in_bytes": 6573
  },
  {
    "relative_path": "references/soul-v2-ugc-character.md",
    "size_in_bytes": 43041
  },
  {
    "relative_path": "references/subtitles.md",
    "size_in_bytes": 5465
  },
  {
    "relative_path": "references/ugc-tutorial-boards.md",
    "size_in_bytes": 51084
  },
  {
    "relative_path": "references/ugc-tutorial-clip-prompt.md",
    "size_in_bytes": 52137
  }
]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 220
  },
  {
    "relative_path": "references/product-intake.md",
    "size_in_bytes": 6573
  },
  {
    "relative_path": "references/soul-v2-ugc-character.md",
    "size_in_bytes": 43041
  },
  {
    "relative_path": "references/subtitles.md",
    "size_in_bytes": 5465
  },
  {
    "relative_path": "references/ugc-tutorial-boards.md",
    "size_in_bytes": 51084
  },
  {
    "relative_path": "references/ugc-tutorial-clip-prompt.md",
    "size_in_bytes": 52137
  }
]
Full snapshot data
{
  "name": "ugc-tutorial-video",
  "description": "Produce a UGC tutorial where one visible creator demonstrates realistic step-by-step use of a specific product and every step has a baked \"Step N — Heading\" label. Use when tutorial, how-to, or step-by-step intent and creator/UGC framing are explicit. Missing product or duration is an intake gap. Do not use for ordinary reviews, unboxings, try-ons, product-only ads, SaaS walkthroughs, generic ads, scripts, or footage edits.\n",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 220
    },
    {
      "relative_path": "references/product-intake.md",
      "size_in_bytes": 6573
    },
    {
      "relative_path": "references/soul-v2-ugc-character.md",
      "size_in_bytes": 43041
    },
    {
      "relative_path": "references/subtitles.md",
      "size_in_bytes": 5465
    },
    {
      "relative_path": "references/ugc-tutorial-boards.md",
      "size_in_bytes": 51084
    },
    {
      "relative_path": "references/ugc-tutorial-clip-prompt.md",
      "size_in_bytes": 52137
    }
  ],
  "skill_md_contents": "---\nname: ugc-tutorial-video\ndescription: >\n  Produce a UGC tutorial where one visible creator demonstrates realistic\n  step-by-step use of a specific product and every step has a baked\n  \"Step N — Heading\" label. Use when tutorial, how-to, or step-by-step intent\n  and creator/UGC framing are explicit. Missing product or duration is an intake\n  gap. Do not use for ordinary reviews, unboxings, try-ons, product-only ads,\n  SaaS walkthroughs, generic ads, scripts, or footage edits.\n---\n\n## Activation analytics\n\nWhen using this skill for a new user request, call `track_skill_activation` once with `{\"skill_name\":\"ugc-tutorial-video\"}` at the earliest opportunity that preserves widget-first and exclusive-tool turns; defer to a later turn when required. Do not repeat for polling, retries, references, or continuation of the same request. If tracking is unavailable or fails, continue the task without retrying. Send only the skill name.\n\n# UGC tutorial video\n\nProduce one hosted 9:16 MP4 with one locked creator identity. Each board is a\n21:9 sheet of four vertical 9:16 slots; every slot depicts one physical product\nstep and displays exactly one `Step N — Heading` caption. One Seedance clip\nturns a board into four internal hard cuts.\n\n## Runtime contract\n\n- Use only tools exposed by the current OpenAI host and Higgsfield MCP.\n- Ask with `ask_user_input` when exposed, `ask_user_input_v3` only when that\n  exact variant exists, otherwise one concise normal-chat question. Never use\n  legacy elicitation names.\n- Import ChatGPT attachments once with `media_upload_and_confirm` and keep each\n  confirmed `media_id`.\n- Authorized HTTPS product images may seed image generation directly. Before\n  video generation convert the chosen product URL once into a confirmed image\n  UUID using `media_upload`, sandbox download+PUT, then `media_confirm`.\n- Run ffmpeg, Python, downloads, probes, transcription, assembly, and uploads\n  only through `sandbox_exec`.\n- Reserve sandbox outputs before producing them; PUT in that same command and\n  confirm only after HTTP 200.\n- Caption scripts are preinstalled at\n  `$HF_WORKFLOWS/ugc-tutorial-video/scripts/`.\n- Use `generate_image_batch` and `generate_video_batch`, at most six requests\n  per call, stable `{index, params}` entries, and `params.count:1`.\n- Wait through `jobs_wait` in groups of at most eight with\n  `timeout_seconds:15`. Poll only active or retryable lookup-failed jobs.\n- Never pass a batch entry without a job ID to `jobs_wait`; retry only rejected\n  or failed indices.\n- For `unlim_choice`, ask its message and resubmit unchanged with the user's\n  `use_unlim` choice.\n- Never substitute a different model for a locked unavailable model.\n\n## Hard rules\n\n- Product usage analysis is mandatory. Never invent a capability or impossible\n  action.\n- Use one `character_media_id` for every board and clip.\n- Step numbering is global: board J contains steps `4*(J-1)+1` through `4*J`.\n- Each slot displays exactly one English Title Case caption in the form\n  `Step N — Heading`; no other generated text is allowed.\n- The last ~0.5–1s of the final cut of the final board contains a brief\n  talking-head CTA. It is not a fifth step and never a board caption.\n- Generate boards sequentially; submit video only after all prompts are ready.\n- De-slop every board while preserving existing step captions. Raw fallback is\n  allowed only after both Seedream attempts fail.\n- English is the default for step labels, dialogue, CTA, and prompt content.\n- Optional extra hook/subtitles are post-render only.\n\n## Duration and step count\n\n| Total duration | Boards | Clip durations | Total steps |\n| --- | ---: | --- | ---: |\n| 4–15s | 1 | total duration | 4 |\n| 16–19s | 2 | balance both to at least 4s | 8 |\n| 20–30s | 2 | 15, remainder | 8 |\n| 31–45s | 3 | 15, 15, remainder | 12 |\n| 46–60s | 4 | 15, 15, 15, remainder | 16 |\n| >60s | ceil(D/15) | 15 each, final clip at least 4s | 4N |\n\n## Phase 0 — Intake\n\nParse product photo or URL, duration, user instructions/manual/usage notes,\nattached creator photo or desired gender, approved claims, language, accent,\nand explicit setting or appearance overrides. Ask once for missing product,\nduration (offer 10s/15s/30s/45s), and creator photo/gender. Offer accent/quirk\nonly if the brief already signals it. Never ask about models, boards, aspect\nratios, resolution, audio, split, transitions, or identity training.\n\n## Phase 1 — Normalize the product and steps\n\nRead `references/product-intake.md`. Resolve `product_reference`, confirmed\n`product_video_reference`, canonical product description, tier, category,\nmechanics, visible side, and absent features.\n\nBuild `total_steps = 4*N` chronological, physically realistic usage steps. If\nthe natural sequence is shorter, add real preparation and finishing steps; if\nlonger, merge adjacent micro-actions. Preserve a user-supplied director step\nlist one-to-one. Produce `step_captions[]`, each exactly\n`Step N — 1–4 Word Heading`, and split into groups of four.\n\n## Phase 2 — Lock the creator\n\nIf a creator photo is attached, import it once and use it unchanged.\n\nOtherwise read `references/soul-v2-ugc-character.md`, write one clean creator\nprompt with no product, and submit:\n\n```json\n{\"requests\":[{\"index\":0,\"params\":{\"model\":\"soul_2\",\"prompt\":\"<creator prompt>\",\"count\":1,\"aspect_ratio\":\"3:4\",\"quality\":\"2k\"}}]}\n```\n\nWait until terminal and lock the returned job ID and URL as the character. Do\nnot regenerate mid-run.\n\n## Phase 3 — Write the monologue\n\nUse roughly 12–20 words for ≤10s, 20–28 for 11–12s, and 28–35 for 13–15s.\nSplit into N board segments and four step beats per segment. Explain what the\ncreator is physically doing in concise conversational English. Tutorial steps,\nnot a generic story arc, are the spine. Remove AI-tell phrases, repetition, and\nunsupported claims.\n\nReserve ~0.5–1s at the end for `Link in bio.`, `Follow me.`, or `Subscribe!`.\nIf timing is tight, shorten the instructional line rather than dropping a step.\nSave the exact monologue to `output/script.txt` during assembly.\n\n## Phase 4 — Generate boards sequentially\n\nRead `references/ugc-tutorial-boards.md`. For K=1..N submit one stable-index\n`generate_image_batch` request using `gpt_image_2`, 21:9, 2k, high quality,\nand media order product, character, then cleaned previous board for K>1. Match\nevery `@ImageN` declaration and pass this board's four captions.\n\nWait until terminal before K+1. Keep the returned job ID and result URL.\n\n### Mandatory de-slop pass\n\nFor each raw board, take the completed `result_url` returned by `jobs_wait` and\ncall `generate_image_batch` once with `seedream_v5_pro`, that HTTPS result URL\nwith canonical role `image`, 21:9, 2k, and this exact prompt:\n\n> KEEP EXACTLY the framing, composition, slot layout, camera distances, poses,\n> subjects, product AND any on-frame step captions of this horizontal storyboard\n> sheet and every one of its side-by-side vertical slots — no reframe, no zoom,\n> no crop, no re-layout, no change to the scene, to any person's face / hair /\n> body, to the product design, or to existing on-frame text. CHANGE ONLY\n> micro-realism, applied identically in every slot: true-to-life pore-level skin\n> with natural texture and fine vellus hair, real material detail, even natural\n> daytime light with gentle highlight roll-off and faint true sensor noise, a\n> flat authentic iPhone photo, deep focus. PRESERVE each face's exact shape /\n> width / proportions 1:1 — do NOT squeeze / narrow / slim / stretch any face.\n> AVOID AI-slop: waxy plastic skin, airbrushed poreless skin, beauty-filter\n> smoothing, over-saturation, HDR glow / bloom / halos, oversharpening,\n> teal-orange grade, shallow depth of field, bokeh, cinematic / DSLR look. Keep\n> the product blank / unbranded, no NEW added text, no watermark.\n\nThe OpenAI generation route imports that URL as a concrete `media_input` and\nnormalizes the generic image role to Seedream's `image_references` wire field.\nNever pass the raw board job ID to this i2i call.\n\nReplace raw board refs with the cleaned output. Moderation failure: retry once\nwith `seedream_v5_lite`, then retain raw rather than stall. Use cleaned K-1 as\nthe previous board for K.\n\n## Phase 5 — Write and submit clips\n\nRead `references/ugc-tutorial-clip-prompt.md`. Write every prompt before video\nsubmission. Carry K, N, duration, `BOARD_TUTORIAL_STEPS`, four step captions,\nmonologue segment verbatim, `is_last_board`, creator/product continuity, and\napproved claims.\n\nRequire confirmed `product_video_reference`. Submit stable K requests through\n`generate_video_batch`, at most six per call:\n\n```json\n{\"requests\":[{\"index\":1,\"params\":{\"model\":\"seedance_2_5\",\"prompt\":\"<clip prompt>\",\"count\":1,\"aspect_ratio\":\"9:16\",\"resolution\":\"1080p\",\"duration\":15,\"mode\":\"omni_reference\",\"generate_audio\":true,\"medias\":[{\"value\":\"<clean_board_job_id>\",\"role\":\"image\"},{\"value\":\"<character_media_id>\",\"role\":\"image\"},{\"value\":\"<product_video_reference>\",\"role\":\"image\"}]}}]}\n```\n\nSeedance 2.5 supplies native speech with `mode:\"omni_reference\"` and\n`generate_audio:true`. Never call `generate_audio`. Wait for every\njob and retry only failed indices.\n\n## Phase 6 — Frozen-frame QA\n\nInspect evenly spaced frames, product close-ups, and 2–3 mid-word frames.\nRequire correct product mechanics, one product, at most two hands, consistent\nstate and scale, clean face/lips, readable unchanged step captions, and no new\ntext. Fix and rerun only the failed clip.\n\n## Phase 7 — Assemble and export\n\nFor N=1, use the accepted clip URL. For N≥2, reserve `final.mp4` and run one\nself-contained sandbox command that downloads clips in K order, writes the\nconcat manifest, stream-copies hard cuts, verifies with `ffprobe`, and PUTs the\nresult. Confirm only after HTTP 200. On detached-command deadline, use bounded\nforeground calls; never use `nohup`.\n\n## Phase 8 — Optional extra text and delivery\n\nIf unanswered, ask once for extra `Subtitles`, `Hook`, `Both`, or `No text`\n(default), plus a post-package choice. Read `references/subtitles.md`. Preserve\nthe top step labels; subtitles stay in the bottom safe zone. Add a top hook only\nwhen it visibly clears the step text.\n\nReturn one confirmed hosted video URL and duration. A requested post package is\nchat-only: caption, 3–5 hashtags, pinned comment, and loop note.\n\n## References\n\n- `references/product-intake.md`: product normalization\n- `references/soul-v2-ugc-character.md`: creator prompt\n- `references/ugc-tutorial-boards.md`: four-slot 21:9 labeled board\n- `references/ugc-tutorial-clip-prompt.md`: four-cut tutorial prompt and CTA\n- `references/subtitles.md`: optional extra post-render text\n\nNever load sibling UGC references.\n"
}

SHA-256: 2231bfc9444ec012ce518cc2e4a4e3983eed981884f07d9be53c166bd1c01987