← 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/saas-clip-prompt.md","size_in_bytes":5239},{"relative_path":"references/saas-monologue.md","size_in_bytes":11090},{"relative_path":"references/saas-ugc-character.md","size_in_bytes":6488},{"relative_path":"r...

After

[{"relative_path":"agents/openai.yaml","size_in_bytes":201},{"relative_path":"references/saas-clip-prompt.md","size_in_bytes":5239},{"relative_path":"references/saas-monologue.md","size_in_bytes":11090},{"relative_path":"references/saas-...

Compare saved observations

Download comparison JSON
Full technical diff · 1 changed fields

changed /included_files

BEFORE
[
  {
    "relative_path": "references/saas-clip-prompt.md",
    "size_in_bytes": 5239
  },
  {
    "relative_path": "references/saas-monologue.md",
    "size_in_bytes": 11090
  },
  {
    "relative_path": "references/saas-ugc-character.md",
    "size_in_bytes": 6488
  },
  {
    "relative_path": "references/screen-broll-and-composite.md",
    "size_in_bytes": 7728
  },
  {
    "relative_path": "references/subtitles.md",
    "size_in_bytes": 5842
  },
  {
    "relative_path": "references/ugc-character.md",
    "size_in_bytes": 63979
  },
  {
    "relative_path": "references/website-capture.md",
    "size_in_bytes": 6021
  }
]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 201
  },
  {
    "relative_path": "references/saas-clip-prompt.md",
    "size_in_bytes": 5239
  },
  {
    "relative_path": "references/saas-monologue.md",
    "size_in_bytes": 11090
  },
  {
    "relative_path": "references/saas-ugc-character.md",
    "size_in_bytes": 6488
  },
  {
    "relative_path": "references/screen-broll-and-composite.md",
    "size_in_bytes": 7728
  },
  {
    "relative_path": "references/subtitles.md",
    "size_in_bytes": 5842
  },
  {
    "relative_path": "references/ugc-character.md",
    "size_in_bytes": 63979
  },
  {
    "relative_path": "references/website-capture.md",
    "size_in_bytes": 6021
  }
]
Full snapshot data
{
  "name": "ugc-website-video",
  "description": "Produce a finished creator-led UGC video about a website, web app, online service, store, or product page, using real captured screenshots while a talking-head creator narrates. Use for SaaS UGC, site tours, app tours, or requests where the supplied page must appear. Do not load this skill for text-only scripts, outlines, or walkthrough plans, even if they mention UGC or SaaS; do not use it merely as a scriptwriting reference. Missing URL or duration is an intake gap. Do not use for product-only ads, unboxings, tutorials, try-ons, website editing, generated UI, scripts, or footage edits.\n",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 201
    },
    {
      "relative_path": "references/saas-clip-prompt.md",
      "size_in_bytes": 5239
    },
    {
      "relative_path": "references/saas-monologue.md",
      "size_in_bytes": 11090
    },
    {
      "relative_path": "references/saas-ugc-character.md",
      "size_in_bytes": 6488
    },
    {
      "relative_path": "references/screen-broll-and-composite.md",
      "size_in_bytes": 7728
    },
    {
      "relative_path": "references/subtitles.md",
      "size_in_bytes": 5842
    },
    {
      "relative_path": "references/ugc-character.md",
      "size_in_bytes": 63979
    },
    {
      "relative_path": "references/website-capture.md",
      "size_in_bytes": 6021
    }
  ],
  "skill_md_contents": "---\nname: ugc-website-video\ndescription: >\n  Produce a finished creator-led UGC video about a website, web app, online service,\n  store, or product page, using real captured screenshots while a talking-head\n  creator narrates. Use for SaaS UGC, site tours, app tours, or requests where\n  the supplied page must appear. Do not load this skill for text-only scripts,\n  outlines, or walkthrough plans, even if they mention UGC or SaaS; do not use\n  it merely as a scriptwriting reference. Missing URL or duration is an intake gap. Do\n  not use for product-only ads, unboxings, tutorials, try-ons, website editing,\n  generated UI, 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-website-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 website video\n\nProduce one hosted 9:16 MP4. A single talking-head creator remains on camera and\nspeaks continuously. Real mobile screenshots from the supplied URL appear as\nlarge static overlay cards. There are no storyboards and no generated UI.\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 creator photos or user screenshots once through\n  `media_upload_and_confirm` and keep their confirmed IDs and URLs.\n- Run browser capture, ffmpeg, Python, downloads, probing, transcription,\n  compositing, and uploads only through `sandbox_exec`.\n- The sandbox is ephemeral. Reserve every output that must survive with\n  `media_upload` before the command, PUT it from the same command, then call\n  `media_confirm` after HTTP 200.\n- Capture and caption scripts are preinstalled at\n  `$HF_WORKFLOWS/ugc-website-video/scripts/`.\n- Use `generate_image_batch` and `generate_video_batch`, stable\n  `{index, params}` entries, `params.count:1`, and at most six requests per call.\n- Wait through `jobs_wait` in groups of at most eight and\n  `timeout_seconds:15`. Poll only active or retryable lookup-failed jobs.\n- Never pass an entry without `job_id` to `jobs_wait`; retry only rejected or\n  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- Screen content is always real captured pixels from the supplied site or\n  screenshots the user supplied. Never generate, restyle, animate, or invent UI.\n- Never ask the user to record their screen. Never use web search or an\n  unrelated source to fill missing page content.\n- Creator stays on camera and supplies the continuous audio spine. Screenshot\n  cards overlay the creator; they are never full-screen or scrolling.\n- Body clips are visually product-free. A physical product may appear only in\n  the closer and only from a real image on the supplied page.\n- Use the same `character_media_id` in every clip and never regenerate it.\n- Captions are on by default. Only an explicit “no captions” request skips them.\n- Capture failure on the first attempt triggers one user choice immediately:\n  send screenshots or make a talking-head-only version. Do not silently retry.\n- Hide models, job IDs, internal phases, and intermediate files.\n\n## Duration\n\n| Total duration | Clips | Clip durations |\n| --- | ---: | --- |\n| 4–15s | 1 | total duration |\n| 16–19s | 2 | balance both to at least 4s |\n| 20–30s | 2 | 15, remainder |\n| 31–45s | 3 | 15, 15, remainder |\n| 46–60s | 4 | 15, 15, 15, remainder |\n| >60s | ceil(D/15) | 15 each, final clip at least 4s |\n\n## Phase 0 — Intake and routing\n\nParse required URL, duration, attached creator photo or desired gender,\nappearance/location overrides, site type/audience/surface, language, approved\nclaims, and `caption_mode`: `Both` default, `Subtitles`, or `Hook`.\n\nStay in this skill when the user names SaaS UGC/site tour or wants the supplied\npage visible. A product-page URL stays here when its page appears onscreen.\nHand off to product-side UGC only when the page will not appear.\n\nAsk once for missing URL, duration (offer 10s/15s/30s/45s), creator input, and\ncaption mode when unspecified. Do not offer generated UI, scrolling, full-screen\nscreens, model choices, aspect ratios, audio choices, or clip-count forks.\n\n## Phase 1 — Capture the site\n\nRead `references/website-capture.md`. Reserve image upload slots before capture.\nRun the preinstalled mobile Chromium capture in one self-contained\n`sandbox_exec`, producing and uploading:\n\n- one full-page mobile capture for the section map;\n- 6–10 useful dedicated stills when available: hero/product, features,\n  dashboard/search/editor, reviews, specs, pricing, or plans.\n\nConfirm successful uploads and keep their hosted URLs. Skip nav/footer/logo\nfiller. Build an ordered section map; the same order drives monologue beats and\noverlay cards.\n\nOn error, bot wall, login gate, blank result, or fewer than three usable cards,\nask immediately: `I'll send screenshots` or `Make it without the site`. If real\nscreenshots do not arrive, continue talking-head-only and disclose that in the\nfinal report.\n\n## Phase 2 — Lock the creator\n\nIf the user attached a creator photo, import it and use it unchanged. Skip the\ngenerated-seed de-slop pass.\n\nOtherwise read `references/ugc-character.md` and\n`references/saas-ugc-character.md`, settle fresh variety rolls, write a clean\nproduct-free creator prompt, 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, then take the completed creator `result_url` returned by\n`jobs_wait` and de-slop the generated seed with one `generate_image_batch`\nrequest: `seedream_v5_pro`, that HTTPS result URL with canonical role `image`,\n3:4, 2k, and this exact prompt:\n\n> KEEP EXACTLY the framing, composition, pose, subject and identity of this\n> vertical portrait — no reframe, no zoom, no crop, no change to the person's\n> face / hair / body / clothing. CHANGE ONLY micro-realism: true-to-life\n> pore-level skin with natural texture and fine vellus hair, real material\n> detail, even natural daytime light with gentle highlight roll-off and faint\n> true sensor noise, a flat authentic iPhone selfie, deep focus. PRESERVE the\n> face's exact shape / width / proportions 1:1 — do NOT squeeze / narrow / slim /\n> stretch the face. AVOID AI-slop: waxy plastic skin, airbrushed poreless skin,\n> beauty-filter smoothing, over-saturation, HDR glow / bloom / halos,\n> oversharpening, teal-orange grade, shallow depth of field, bokeh, cinematic /\n> DSLR look. No 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 creator job ID to this i2i call.\n\nOn moderation failure retry once with `seedream_v5_lite`; then keep the raw\ncreator. Lock the final creator ID for every clip.\n\n## Phase 3 — Write monologue and card plan\n\nRead `references/saas-monologue.md`. Write in English unless explicitly changed.\nUse hook → site solves it → result/action. The first body beat names the site;\nlater body beats follow captured card order; the closer contains no card.\n\nTarget 22–26 words for ≤10s, 28–33 for 11–12s, and 35–40 for 13–15s, with\nvaried 2.4–2.7 words/second delivery. Save exact `output/script.txt`, a ≤6-word\n`output/hook.txt`, and ordered `{section_label, words}` beats.\n\n## Phase 4 — Generate talking-head clips\n\nRead `references/saas-clip-prompt.md`. Write every clip prompt before submission.\nEach is one continuous shot: no board, slot, cut, site/UI visual, or product in\nbody clips. Restate locked identity, medium 9:16 framing, centered head, US\naccent, varied lively pace, phone-mic audio, matching ambience, and no music.\n\nFor a physical-product closer, extract one real product image only from the\nsupplied page, convert it to a confirmed Higgsfield image UUID, and add it as the\nsecond media. If no usable product image exists, use a neutral closer gesture.\n\nSubmit all N requests through `generate_video_batch`, at most six per call:\n\n```json\n{\"requests\":[{\"index\":1,\"params\":{\"model\":\"seedance_2_5\",\"prompt\":\"<one-shot prompt>\",\"count\":1,\"aspect_ratio\":\"9:16\",\"resolution\":\"1080p\",\"duration\":15,\"mode\":\"omni_reference\",\"generate_audio\":true,\"medias\":[{\"value\":\"<character_media_id>\",\"role\":\"image\"}]}}]}\n```\n\nThe physical closer adds `product_closer_reference` with role `image`. If that\ncloser is moderated, retry only it without product media, with the same creator.\nNever regenerate the creator.\n\nBefore submission reject any body prompt containing `Hard cut`, `Cut 1`,\n`slot`, `board`, a product visual, or a rendered website/UI/screen/browser.\n\n## Phase 5 — Frozen-frame QA\n\nInspect each accepted clip at evenly spaced and 2–3 mid-word frames. Require one\ncreator, at most two hands, stable identity, clean lips, no generated UI, no\nbody product, and no baked text. Fix and rerun only the failed clip.\n\n## Phase 6 — Composite\n\nRead `references/screen-broll-and-composite.md`. Reserve the final video upload,\nthen run one self-contained sandbox command that downloads clips and confirmed\ncard images, concatenates clips in stable order, and overlays cards at authored\nword-time anchors:\n\n- no card during first ~1–2s hook or closer;\n- each card ~1.2–1.5s with ~0.3–0.5s clean-face gap;\n- contain-fit inside ~0.78W × ≤0.60H, centered and shifted slightly up;\n- keep the bottom ~15% clear for captions;\n- copy audio and encode video once.\n\nWith no site cards, concatenate the talking-head clips only. The phase is not\ncomplete until `output/final.mp4` exists and was PUT successfully.\n\n## Phase 7 — Captions\n\nRead `references/subtitles.md`. Captions are on by default. Use word-level\nWhisper timing from final audio and burn the selected `Both`, `Subtitles`, or\n`Hook` layers in one pass. Never infer timings. If no speech is found, burn\nnothing and deliver the clean final. PUT and confirm the chosen final video.\n\n## Phase 8 — Deliver and optionally publish\n\nReturn one confirmed hosted video URL and duration. State when site capture was\nunavailable and the output is talking-head-only.\n\nThen ask once whether to publish to TikTok. On yes, use the current sequence:\n`tiktok_accounts` → `tiktok_connect` if needed → `tiktok_prepare_publish` →\nonly after the user's explicit confirmation, `tiktok_publish` →\n`tiktok_publish_status`. Never publish without explicit approval.\n\n## References\n\n- `references/website-capture.md`: real-page capture and failure gate\n- `references/ugc-character.md`: creator prompt\n- `references/saas-ugc-character.md`: SaaS casting and clip carry\n- `references/saas-monologue.md`: spoken arc and card ordering\n- `references/saas-clip-prompt.md`: continuous talking-head prompt\n- `references/screen-broll-and-composite.md`: screenshot overlay recipe\n- `references/subtitles.md`: default caption burn\n\nNever load sibling product-side UGC references.\n"
}

SHA-256: 2f3ab8b160d478c9241dff1d06cbd119be191e8c6ca620d7d14e72a2af088c2c