Install
openclaw skills install @oceantoken/oceantoken-mediaImages, video, voice-overs and subtitles
openclaw skills install @oceantoken/oceantoken-mediaEvery generation spends the user's OceanToken balance. Work like a producer on a budget: settle the brief, price it, generate once well, save the result, report.
If the host also has a built-in image tool, use OceanToken when the user asks for OceanToken or a specific model, wants several options or a batch, needs video, audio or subtitles, or wants the cost up front.
These steps use the OceanToken MCP tools (search_models, estimate_cost,
generate_image, ...). If they are not available, the server is not connected
yet. It is https://mcp.oceantoken.ai/mcp (streamable HTTP) with an OAuth
sign-in. In OpenClaw:
openclaw mcp set oceantoken '{"url":"https://mcp.oceantoken.ai/mcp","transport":"streamable-http","auth":"oauth"}'
openclaw mcp login oceantoken
For other hosts see https://github.com/NextFormAI/oceantoken-plugins#install.
Know before generating: what the asset is for, where the file goes, its shape
(aspect ratio, pixel size, duration), and the look. Read the project first
(existing assets, design tokens, the <img>/CSS that will hold it) so you ask
the user only what the code cannot tell you.
search_models with type = image, video, speech or transcription.
featured models are OceanToken's directly served defaults; sort="price"
finds cheap ones. Never invent a model id.get_model before using non-default options: it lists the sizes, aspect
ratios, resolutions, durations, audio and first/last-frame support the model
really accepts. Sending an option the model lacks fails the request.Call estimate_cost for any video, any batch (n > 1), 4K images and long
speech, and tell the user the figure and its confidence. Ask before spending
more than about $2 unless the user already agreed to a budget. When they gave a
budget, pass it as max_cost_usd: the tool then refuses anything over it before
spending. Never loop regenerations without telling them: each attempt costs money.
generate_image(model, prompt, size, quality, n). A good prompt
names subject, setting, composition, lighting, style and mood. Few models
render text reliably: leave text out of the image and overlay it in HTML/CSS
unless the user wants it baked in (then quote the exact words).reference_image_urls. Local files go through upload_file first (small
files as content_base64, big ones with the returned curl command).create_video returns a job_id; call get_job(job_id, wait_seconds=50) until status is completed (usually 1-5 minutes). To
animate a still, generate or upload the image and pass it as
first_frame_url; add last_frame_url to control the ending. Keep prompts
about motion and camera ("slow dolly-in, waves roll left to right").generate_speech(model, text, voice); instructions steers
tone on models that support it.transcribe_audio(model, audio_url, response_format="srt") (or "vtt", or "verbose_json" for timestamps).If generate_image answers in_progress with a job_id, the model is slow:
poll get_job the same way.
curl -L -o public/hero.png "<url>". Use the path and name the code expects,
and ask before overwriting an existing file.cost_usd), where
it was saved.get_account shows the balance. The user
adds credit in the OceanToken console. Offer a cheaper model as the alternative.get_model and use a listed value.