← Files OmnekyARCHIVED FILE
skills/omneky-product-video/SKILL.md
5.9 KB · Oct 8, 2026 · 06:23 UTC
--- name: omneky-product-video description: >- Generate multi-scene product video ads from catalogue or a product URL. Use for product video, narrative picks, or Generate Now commercials. Keywords: product video, video ad, narrative, narrative_id, multi-scene, slim cards, target_duration, 30 credits, portrait, landscape, square. --- # Product video ads ## Activation analytics If the host exposes a skill-activation / analytics hook, call it once per new user request with this skill name; otherwise skip silently. Never invent a tracking tool. Omneky MCP does **not** expose `track_skill_activation`. ## Purpose Multi-scene product video commercials via `fetch_product_video_narratives` → user pick → `generate_product_video`. Fetch returns **slim cards** with a minted `narrative_id` (may also echo `id`); the full narrative is persisted server-side. Prefer passing **`narrative_id`** on generate so the server hydrates segments. Not a substitute for launch. ## When to use - Product video / multi-scene commercial requests - Narrative card selection flows - Generate Now (omit both `narrative_id` and `narrative`; pass `target_duration`) ## When not to use - Still image ads → `omneky-image-ads` - Treating Generate Now as “animation only” or as an auto-launch - Central-only video triggers / UGC / `edit_video` (not public) - Inventing segments, title-only `narrative` blobs, or fake `narrative_id`s ## OpenAI runtime contract - Use only tools from the current OpenAI host + Omneky MCP (`https://mcp.omneky.com/mcp`). Never invent tools. - Prefer native ChatGPT / host widgets and question UI for decisions. Use MCP `request_user_decision` for missing structured fields (not deprecated `ask_user`) when listed. Else follow `omneky-failure-modes` § Approval / plain-chat fallback. - When intake is incomplete, ask **one** concise chat question. Never invent a question tool. - Generate / Cancel turns: end the turn after showing the choice UI (or plain-chat Generate / Cancel); mutate only after affirmative Generate. - Never invent tokens; OAuth is host-managed. - **Prefer runtime `tools/list`:** if the live tool schema differs from this skill (e.g. `narrative_id` present/absent, `narrative` shape), follow the live schema over hardcoded skill copy. ## Non-negotiable output / safety contract - Credit callout before generate (~**30** credits for multi-scene video when submitted). Generate / Cancel via host UI or plain chat. Billing tools gating: `omneky-failure-modes` § Billing tools absent. - After narrative fetch, present **slim cards** for UI (`narrative_id` / `id`, title, hook, duration, description). On pick, prefer `generate_product_video` with **`narrative_id`** from the card (server hydrates `video_gen.segments`). Do **not** invent a partial narrative; do **not** invent an id. - Full `narrative` object with non-empty `video_gen.segments` is still OK when available, but **prefer `narrative_id`**. - Thin/string picks without a resolvable minted id → `narrative_unresolved` (no job, no credits) — re-fetch and re-pick; never invent segments or silently switch to Generate Now. - Generate Now: **omit both** `narrative_id` and `narrative`; pass `target_duration` 10–30 (default **12** when omitted by server). 10–15 short invent; 16–30 longform. Optional `hook` for Generate Now only. - `environment_setting` / `location_url` = optional HTTPS image URL only. - Widget owns `poll_video_generation`; agent uses one `get_generation_status(..., kind="video")` on text hosts next turn. - Ambiguous submit after optional client `job_id`: follow `omneky-failure-modes` § Ambiguous paid submit recovery. - Never claim success without completion. ## Staged workflow ### Stage 1 — Brand + product 1. Brand pick (`list_brands` / `get_brand_details`). 2. Product: `list_brand_products` / `get_product_details`, or import URL via `omneky-product-import` first. 3. Required generate args later: `product_image_urls`, `product_name`, `product_description`, `orientation` (`landscape`|`portrait`|`square`), `brand_id`, `company_id`. ### Stage 2 — Narratives (selected-story flow) 1. `fetch_product_video_narratives`. 2. Present slim cards from the fetch result (`narrative_id` / `id`, title, hook, duration, description). 3. Wait for pick; end turn after UI / plain-chat options. 4. Keep the chosen **`narrative_id`** (and card metadata) for Stage 3. ### Stage 3 — Credits + generate 1. Balance check if `get_account_credit_balance` is on `tools/list`; else operational ~30 callout (`omneky-failure-modes` § Billing tools absent). 2. Selected story: `generate_product_video` with **`narrative_id`** from the card + orientation mapping (`9:16` → `portrait`, `16:9` → `landscape`, `1:1` → `square`). Prefer omitting the fat `narrative` blob when the id is available. Still pass required product fields. 3. Generate Now (user skipped pick): omit both `narrative_id` and `narrative`; pass `target_duration` 10–30 (default 12); optional `hook`. ### Stage 4 — Completion + handoff 1. Poll rules as in `omneky-creative` / failure-modes Stage D. 2. Register + `omneky-launch-manage` only after Approve (paused default). ## Failure boundaries | Failure | Required response | | --- | --- | | Thin / invented / title-only narrative without resolvable id | Forbidden — use `narrative_id` from fetch (or full object with segments); never invent. | | `narrative_unresolved` | Re-fetch + re-pick; no credit charge. Do not invent; do not silent Generate Now. | | `credit_insufficient` | Did not start; billing path if tools present; else Omneky app; no retry. | | Billing tools absent | `omneky-failure-modes` § Billing tools absent. | | Ambiguous paid submit | `omneky-failure-modes` § Ambiguous paid submit recovery. | | Auto-picked narrative | Forbidden. | | Prose in `environment_setting` | Omit / URL only. | | Early success claim | Forbidden. | | Live `tools/list` conflicts with skill copy | Prefer live schema. |
SHA-256: 5cfc380c6b42236b811267a5b84d327799a7db976b9d74e7f8a72d1898972485