Video Prompt Generator
Generate polished Sora 2 video prompts through the NanoPhoto.AI Prompt Generator API.
Prerequisites
- Obtain an API key at: https://nanophoto.ai/settings/apikeys
- Configure
NANOPHOTO_API_KEYbefore using the skill. - Do not paste the API key into chat; store it in the platform's secure env setting for this skill.
Preferred OpenClaw setup:
- Open the skill settings for this skill
- Add an environment variable named
NANOPHOTO_API_KEY - Paste the API key as its value
Equivalent config shape:
{
"skills": {
"entries": {
"video-prompt-generator": {
"enabled": true,
"env": {
"NANOPHOTO_API_KEY": "your_api_key_here"
}
}
}
}
}
Other valid ways to provide the key:
- Shell:
export NANOPHOTO_API_KEY="your_api_key_here" - Tool-specific env config: any runtime that injects
NANOPHOTO_API_KEY - OpenClaw config fallback: the bundled script also falls back to
~/.openclaw/openclaw.jsonatskills.entries.video-prompt-generator.env.NANOPHOTO_API_KEY
Credential declaration summary:
- Primary credential:
NANOPHOTO_API_KEY - Resolution order in the bundled script:
--api-key→NANOPHOTO_API_KEYenvironment variable →~/.openclaw/openclaw.jsonskill env - No unrelated credentials are required
Recommended workflow
- Collect the user's topic or scene idea.
- Decide whether the prompt is for
textToVideoorimageToVideo. - Choose a technique, duration, locale, and optional model override.
- For image-to-video mode, require one to three public image URLs.
- Run the bundled script or call the API directly.
- Return the generated prompt text exactly as produced unless the user asks for adaptation or rewriting.
Parameter guidance
topic- Required
- Maximum 500 characters
- Keep it specific enough to imply subject, mood, or motion
modetextToVideo: defaultimageToVideo: requires publicimageUrls
technique- Default:
montage - Choose the technique that best matches the intended visual language
- Default:
duration1015
locale- Default:
en - Supported:
en,zh,zh-TW,ja,ko,es,fr,de,pt,ru,ar
- Default:
Preferred command
Use the bundled script for reliable prompt generation:
Text-to-video prompt
python3 scripts/video_prompt_generator.py \
--topic "A serene Japanese garden with cherry blossoms falling into a koi pond" \
--mode textToVideo \
--technique slow-motion \
--duration 15 \
--locale en
Image-to-video prompt
python3 scripts/video_prompt_generator.py \
--topic "Animate this landscape with gentle wind and floating clouds" \
--mode imageToVideo \
--technique long-take \
--duration 10 \
--locale en \
--image-url https://example.com/landscape.jpg
The script resolves credentials in this order: --api-key, then NANOPHOTO_API_KEY from the environment, then ~/.openclaw/openclaw.json at skills.entries.video-prompt-generator.env.NANOPHOTO_API_KEY.
Output behavior
- The API returns streaming text, but the bundled script prints the final assembled prompt text
- Return the prompt directly when the user asked for prompt generation
- If the user wants editing or localization after generation, transform the generated prompt in a second step instead of changing API parameters retroactively
Manual API call
curl -X POST "https://nanophoto.ai/api/sora-2/generate-prompt" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NANOPHOTO_API_KEY" \
--data-raw '{
"topic": "A futuristic cityscape at sunset with flying vehicles and neon lights",
"technique": "aerial-view",
"duration": 15,
"locale": "en"
}'
Error handling
| errorCode | Cause | Action |
|---|---|---|
LOGIN_REQUIRED |
Invalid or missing API key | Verify key at https://nanophoto.ai/settings/apikeys |
API_KEY_RATE_LIMIT_EXCEEDED |
Rate limit exceeded | Wait and retry |
INSUFFICIENT_CREDITS |
Not enough credits | Top up credits |
INVALID_INPUT |
Missing or invalid topic | Ask for a valid topic under 500 characters |
Bundled files
scripts/video_prompt_generator.py: generate a prompt from a topic using the NanoPhoto Prompt Generator APIreferences/api.md: condensed API reference, inputs, and error behavior
