{"id":47369,"plugin_id":"plugin_asdk_app_6abb3c5a47748191900c707dc8e9ce28","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:33:11.589Z","digest":"99d44849e40b0f82380c771fe4e7818ce676e7532ec139bec6c55dd50882a21c","against":null,"payload":{"description":"Create images, video, voice-overs and subtitles with OceanToken models and save them into the project. Use when the user wants a generated or edited image (hero, illustration, icon, product shot, background, a change to an existing picture), a video clip (from text, or animating an image), narration / text-to-speech, or a transcript or subtitles, and the OceanToken tools are connected. Also for Chinese requests such as 生成图片、做图、改图、海报、生成视频、图生视频、配音、语音合成、朗读、字幕、转写.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":277}],"name":"oceantoken-media","skill_md_contents":"---\nname: oceantoken-media\ndescription: Create images, video, voice-overs and subtitles with OceanToken models and save them into the project. Use when the user wants a generated or edited image (hero, illustration, icon, product shot, background, a change to an existing picture), a video clip (from text, or animating an image), narration / text-to-speech, or a transcript or subtitles, and the OceanToken tools are connected. Also for Chinese requests such as 生成图片、做图、改图、海报、生成视频、图生视频、配音、语音合成、朗读、字幕、转写.\n---\n\n# Images, video and audio with OceanToken\n\nEvery generation spends the user's OceanToken balance. Work like a producer on a\nbudget: settle the brief, price it, generate once well, save the result, report.\n\nIf the host also has a built-in image tool, use OceanToken when the user asks\nfor OceanToken or a specific model, wants several options or a batch, needs\nvideo, audio or subtitles, or wants the cost up front.\n\n## 1. Settle the brief\n\nKnow before generating: what the asset is for, where the file goes, its shape\n(aspect ratio, pixel size, duration), and the look. Read the project first\n(existing assets, design tokens, the `<img>`/CSS that will hold it) so you ask\nthe user only what the code cannot tell you.\n\n## 2. Pick the model\n\n- `search_models` with `type` = `image`, `video`, `speech` or `transcription`.\n  `featured` models are OceanToken's directly served defaults; `sort=\"price\"`\n  finds cheap ones. Never invent a model id.\n- Call `get_model` before using non-default options: it lists the sizes, aspect\n  ratios, resolutions, durations, audio and first/last-frame support the model\n  really accepts. Sending an option the model lacks fails the request.\n- Rough guide (confirm with search): text-heavy or precise edits favour\n  GPT Image; illustration and vector styles favour Recraft; photoreal and\n  product shots favour Seedream or Gemini image models; video: Seedance is the\n  value pick, Veo and Sora for top quality.\n\n## 3. Price it, and say the price\n\nCall `estimate_cost` for any video, any batch (`n > 1`), 4K images and long\nspeech, and tell the user the figure and its `confidence`. Ask before spending\nmore than about $2 unless the user already agreed to a budget. When they gave a\nbudget, pass it as `max_cost_usd`: the tool then refuses anything over it before\nspending. Never loop regenerations without telling them: each attempt costs money.\n\n## 4. Generate\n\n- **Image**: `generate_image(model, prompt, size, quality, n)`. A good prompt\n  names subject, setting, composition, lighting, style and mood. Few models\n  render text reliably: leave text out of the image and overlay it in HTML/CSS\n  unless the user wants it baked in (then quote the exact words).\n- **Edit / restyle / keep a character consistent**: pass the source images in\n  `reference_image_urls`. Local files go through `upload_file` first (small\n  files as `content_base64`, big ones with the returned `curl` command).\n- **Video**: `create_video` returns a `job_id`; call `get_job(job_id,\n  wait_seconds=50)` until `status` is `completed` (usually 1-5 minutes). To\n  animate a still, generate or upload the image and pass it as\n  `first_frame_url`; add `last_frame_url` to control the ending. Keep prompts\n  about motion and camera (\"slow dolly-in, waves roll left to right\").\n- **Voice-over**: `generate_speech(model, text, voice)`; `instructions` steers\n  tone on models that support it.\n- **Subtitles / transcript**: `transcribe_audio(model, audio_url,\n  response_format=\"srt\")` (or `\"vtt\"`, or `\"verbose_json\"` for timestamps).\n\nIf `generate_image` answers `in_progress` with a `job_id`, the model is slow:\npoll `get_job` the same way.\n\n## 5. Save, check, report\n\n- Download at once; links expire in about 24 hours:\n  `curl -L -o public/hero.png \"<url>\"`. Use the path and name the code expects.\n- Look at the preview (image tools return one) before wiring the file in. If it\n  is off, change the prompt specifically (\"camera lower, warmer light\") rather\n  than re-rolling blindly.\n- Wire it in with the right dimensions and alt text.\n- Tell the user: what was made, which model, what it cost (`cost_usd`), where\n  it was saved.\n\n## Errors\n\n- Balance too low: the tool says so; `get_account` shows the balance. The user\n  adds credit in the OceanToken console. Offer a cheaper model as the alternative.\n- Parameter rejected: re-read `get_model` and use a listed value.\n- Failed video jobs are not charged; the hold is released automatically.\n- Reconnect prompt: the user's OceanToken sign-in or key was revoked; they need\n  to reconnect the plugin.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}