← OmnekyCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Omneky
Snapshot Oct 8, 2026 · 06:23 UTC · version 2.0.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Generate, edit, or resize Omneky paid-media image and video ads, grounded in the brand product catalogue when the brief is product-specific. Use when the user wants a new image ad, a multi-scene product video, an edit of an existing creative, or another aspect ratio (9:16, 4:5, Stories, Reels). Intent keywords: turn this product URL into video ads, generate image ads for this product, image ad, product video, creative, catalogue, edit ad, resize ad, Meta creative, TikTok video, Reels, credits.",
"included_files": [],
"name": "omneky-creative",
"skill_md_contents": "---\nname: omneky-creative\ndescription: >-\n Generate, edit, or resize Omneky paid-media image and video ads, grounded\n in the brand product catalogue when the brief is product-specific. Use\n when the user wants a new image ad, a multi-scene product video, an edit\n of an existing creative, or another aspect ratio (9:16, 4:5, Stories,\n Reels). Intent keywords: turn this product URL into video ads, generate\n image ads for this product, image ad, product video, creative, catalogue,\n edit ad, resize ad, Meta creative, TikTok video, Reels, credits.\n---\n\n# Omneky creative\n\n## Activation analytics\n\nIf 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`.\n\n## Purpose\n\nPaid-media image and multi-scene product video generation plus sync edit /\nresize on `https://mcp.omneky.com/mcp`. Ground product-specific briefs in the\ncatalogue. Never claim success without a completed status or sync result URL.\n\n## When to use\n\n- New static image ads or multi-scene product video commercials\n- Edit copy, layout, or style on an existing finished ad\n- Resize a paid-media creative into another placement (9:16, 4:5, 16:9)\n- Product-specific briefs that need the brand catalogue first\n\n## When not to use\n\n- Launching the finished creative → `omneky-launch-manage` after\n `register_creative_for_launch` (Approve before launch)\n- ROAS / CTR → `omneky-analytics`\n- Creating / updating catalogue products → `omneky-catalogue`\n- Central-only names (`trigger_ac_ad_generation`,\n `trigger_multi_scene_product_video`, sibling video triggers, UGC,\n `edit_video`, `trigger_product_video_v2`) — clients use public aliases below\n- Thin single-path asks may use `omneky-image-ads` /\n `omneky-product-video` / `omneky-edit-resize` instead\n\n## OpenAI runtime contract\n\n- Use only tools from the current OpenAI host + Omneky MCP (`https://mcp.omneky.com/mcp`). Never invent tools.\n- 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.\n- When intake is incomplete, ask **one** concise chat question. Never invent a question tool.\n- Generate / Cancel / Approve turns: end the turn after the choice UI (or plain chat); mutate only after affirmative Generate / Approve.\n- Never invent tokens; OAuth is host-managed.\n- Prefer runtime `tools/list` when it differs from skill hardcoding.\n\n## Non-negotiable output / safety contract\n\n- **Credit callout before paid generation**: image ads typically **~5**\n credits; multi-scene product videos typically **~30**, charged when the job\n is submitted. Show Generate / Cancel (host UI preferred; else plain chat).\n Billing gating: `omneky-failure-modes` § Billing tools absent —\n call balance only when listed; if absent, state operational cost, proceed\n after user confirms, rely on `credit_insufficient` as the hard gate.\n- `credit_insufficient` ⇒ render **did not start** — relay that; do not retry;\n upgrade path via billing skill **when those tools are listed**.\n- Never claim success without `get_generation_status` completion (async) or a\n sync tool’s returned URL (`edit_image` / `resize_ad` / `resize_image`).\n- On hosts with MCP Apps widgets (ChatGPT): the widget owns\n `poll_image_generation` / `poll_video_generation` / `sync_generation_group`\n — do **not** call those as the agent and do not loop\n `get_generation_status` in one turn. On text-only hosts: stop after\n submit; on the next user message call `get_generation_status(job_id,\n kind=…)` **once**.\n- Ask whether the creative is for a **specific product** or the **brand in\n general**. Product-specific: catalogue grounding. Brand-general:\n `get_brand_details` assets only.\n- Unique `gpt_ad_gen_id` per image job (`<short-slug>-<uuid4>`), never reused.\n Ambiguous submit recovery: `omneky-failure-modes` § Ambiguous paid submit\n recovery (status with that key as `job_id`; on `not_found` wait/ask —\n do **not** auto-mint a new key).\n- **Video:** `fetch_product_video_narratives` returns **slim cards** with a\n minted `narrative_id` (may also echo `id`); full narrative is persisted\n server-side. On pick, prefer `generate_product_video` with\n **`narrative_id`** (server hydrates segments). Full `narrative` with\n `video_gen.segments` is still OK if available — prefer the id. Do not\n invent partial narratives or fake ids.\n- Thin/string picks without a resolvable id → `narrative_unresolved` (no\n job, no credits) — re-fetch; never invent; never silent Generate Now.\n- Generate Now: **omit both** `narrative_id` and `narrative`; pass\n `target_duration` 10–30 (default **12**). Optional `hook` for Generate\n Now only.\n- Prefer runtime `tools/list` over skill hardcoding when schemas differ.\n- `environment_setting` / `location_url` is optional **HTTPS image URL** only\n — never scene prose; omit if no URL; never invent a URL.\n- Resizes are **not charged** (adapt already-paid creative) — follow\n `omneky-failure-modes` § Resize / edit charge. No “premium resize tiers”.\n- Prefer pause-ready launch handoff; never auto-launch after gen.\n\n## Staged workflow\n\n### Stage 1 — Brand + credits + brief type\n\n1. Resolve brand: `list_brands` / picker / `get_brand_details`.\n2. `get_current_user` when `user_id` is required.\n3. If `get_account_credit_balance` is on `tools/list` and balance unknown,\n call it. Else follow `omneky-failure-modes` § Billing tools absent.\n4. Credit callout (image ~5 / video ~30) with Generate / Cancel (host UI or\n plain chat). End turn after Cancel or while waiting for Generate.\n5. Ask product-specific vs brand-general if unclear.\n\n### Stage 2 — Catalogue grounding (product-specific)\n\n1. `list_brand_products` / `get_product_details`.\n2. For image gens, pass **one** product library image URL in `user_assets`\n when possible. Quality drops with more than two assets per ad — send more\n only when the user explicitly asks.\n3. If the product has **no library images** and the user did not supply\n imagery: **do not** call `generate_image_ad` — ask for another product,\n an upload, or a brand-general brief (empty-asset jobs often fail).\n\n### Stage 3 — Image ads\n\n1. `generate_image_ad` with `ad_concept` (full prompt — no separate `prompt`\n arg), required `gpt_ad_gen_id` / `brand_id` / `brand_name` / `company_id` /\n `user_id`, and unique `gpt_ad_gen_id` (`<short-slug>-<uuid4>`).\n2. Remember the intended key. Tool returns `job_id` immediately — not a\n finished image.\n3. Widget host: let widget poll. Text host: one\n `get_generation_status(job_id, kind=\"image\")` on a later turn.\n4. Ambiguous timeout after possible submit: `omneky-failure-modes`\n § Ambiguous paid submit recovery (status with `gpt_ad_gen_id` as\n `job_id`; on `not_found` wait ~30–60s and/or ask user — do not auto\n mint a new key).\n5. Variants: `omneky-edit-resize` (`edit_image`, `resize_ad`,\n `resize_image`).\n\n### Stage 4 — Video ads (narrative select → generate)\n\n1. `fetch_product_video_narratives` when you need narrative options.\n Present **slim cards** (`narrative_id` / `id`, title, hook, duration,\n description). Do **not** auto-trigger video.\n2. Wait for the user to pick a card (host UI / plain chat / one question);\n end turn. Keep the chosen **`narrative_id`**.\n3. `generate_product_video` with that **`narrative_id`** and orientation:\n `9:16` → `portrait`, `16:9` → `landscape`, `1:1` → `square`.\n Server hydrates `video_gen.segments`. Prefer omitting the fat\n `narrative` blob when the id is available. A full `narrative` with\n non-empty `video_gen.segments` is still OK if you have it — prefer id.\n Also pass required top-level: `product_image_urls`, `product_name`,\n `product_description`, `orientation`, `brand_id`, `company_id`.\n4. If `error=narrative_unresolved`: re-fetch and pick again. No job started,\n no credits. Do not invent segments; do not silent Generate Now.\n5. Generate Now (no picked story): **omit both** `narrative_id` and\n `narrative`. Pass `target_duration` 10–30 (default **12**; 10–15 short\n invent, 16–30 longform). Optional `hook`. Generate Now invents a\n commercial; it is **not** animation.\n6. Same poll rule as images with `kind=\"video\"`.\n\n### Stage 5 — Edit and resize (sync — no poll)\n\n1. `edit_image` — change an existing finished ad (natural language). Returns\n edited URL when done (often 30–120s). **No** `job_id` / status poll.\n2. `resize_ad` — marketing aspect-ratio outpaint; returns `resized_ad_url`.\n **Not charged** (adapt already-paid creative).\n3. `resize_image` — explicit pixel dimensions; prefer `resize_ad` for\n placements. **Not charged.**\n4. Follow `omneky-failure-modes` § Resize / edit charge. Do not invent\n premium resize tiers or balance-before-resize. If live `tools/list` text\n changes later, follow the live tool text.\n\n### Stage 6 — Register + launch handoff\n\n1. Persist chat creative when launching later:\n `register_creative_for_launch` (also accepted:\n `register_ad_instance_item`).\n2. Hand off to `omneky-launch-manage` / `omneky-meta-launch` with Approve\n before any `launch_*` (`omneky-failure-modes` § Approval / plain-chat\n fallback). Default paused.\n\n## Failure boundaries\n\n| Failure | Required response |\n| --- | --- |\n| `credit_insufficient` | Did not start; billing / upgrade if tools present; else Omneky app; no retry. |\n| Billing tools absent | `omneky-failure-modes` § Billing tools absent. |\n| Ambiguous paid submit | `omneky-failure-modes` § Ambiguous paid submit recovery. |\n| Empty product imagery | Do not generate; ask for assets / other product / brand-general. |\n| Agent called widget poll tools | Stop; leave polling to widget / one status peek next turn. |\n| Looping `get_generation_status` in one turn | Forbidden; one peek per follow-up. |\n| Thin / invented narrative without resolvable id | Forbidden — prefer `narrative_id` from fetch (or full object with segments). |\n| `narrative_unresolved` | Re-fetch narratives; no credit charge. Never invent; never silent Generate Now. |\n| Live `tools/list` schema differs | Prefer live schema over skill hardcoding. |\n| Prose in `environment_setting` | Omit or pass HTTPS URL only. |\n| Invented Central trigger names | Refuse; use public `generate_*` / `fetch_product_video_narratives`. |\n| Premium resize / balance-before-resize | Forbidden — § Resize / edit charge. |\n| Auto-launch after gen | Forbidden; Approve + paused default via launch-manage. |\n| Claim success without URL / completed status | Forbidden. |\n\n## Batching and media limits\n\n- Prefer **one** strong product image in `user_assets` per image ad. More than\n two assets per ad usually hurts quality unless the user explicitly wants a\n multi-image collage.\n- For multiple image concepts, submit separate `generate_image_ad` jobs with\n **distinct** `gpt_ad_gen_id` values. Do not reuse ids.\n- Do not start a large unpaid speculative batch — credit callout must reflect\n the count (≈5 × image jobs, ≈30 × multi-scene video jobs).\n- On widget hosts, `sync_generation_group` is widget-owned so one iframe can\n track siblings — the agent must not call it.\n- Never mix sync edit/resize polling with async gen polling rules.\n\n## Sibling map\n\n| Need | Skill |\n| --- | --- |\n| Image-only | `omneky-image-ads` |\n| Video-only | `omneky-product-video` |\n| Edit / resize only | `omneky-edit-resize` |\n| Credits | `omneky-credit-balance` / `omneky-billing` |\n| Launch after gen | `omneky-launch-manage` / `omneky-meta-launch` |\n| Catalogue grounding | `omneky-catalogue` / `omneky-product-import` |\n| Shared recoveries | `omneky-failure-modes` |\n"
}SHA-256 of public snapshot: 34778b0788f214b1e81a2ca3f8e7cc53b4dc646550fcee52c23175aba7a0b827