Install
openclaw skills install reversepromptAnalyze videos to extract reverse prompts, shot-by-shot breakdowns, and AI-ready visual descriptions via the NanoPhoto.AI Video Reverse Prompt API. Use when: (1) User wants reverse prompt, prompt extraction, or video-to-prompt analysis, (2) User provides a YouTube link, direct MP4 URL, or local MP4 file and wants a shot list / storyboard-style breakdown, (3) User mentions video analysis, shot breakdown, extract prompt from video, NanoPhoto, or reverse engineer a video prompt. Supports YouTube links, direct .mp4 URLs, and local file upload. Prerequisite: Obtain an API key at https://nanophoto.ai/settings/apikeys and configure env.NANOPHOTO_API_KEY.
openclaw skills install reversepromptAnalyze videos to extract detailed shot breakdowns and AI-ready prompts via the NanoPhoto.AI API.
Use the bundled script for local file uploads instead of inlining large base64 payloads directly in the shell; it is more reliable for multi-megabyte videos.
NANOPHOTO_API_KEY before using the skill.Preferred OpenClaw setup:
NANOPHOTO_API_KEYEquivalent config shape:
{
"skills": {
"entries": {
"video-reverse-prompt": {
"enabled": true,
"env": {
"NANOPHOTO_API_KEY": "your_api_key_here"
}
}
}
}
}
Other valid ways to provide the key:
export NANOPHOTO_API_KEY="your_api_key_here"NANOPHOTO_API_KEYCredential declaration summary:
NANOPHOTO_API_KEYNANOPHOTO_API_KEYIf the env var is not set, ask the user to configure it before proceeding.
videoSource type: youtube, url, or filecurl -X POST "https://nanophoto.ai/api/sora-2/reverse-prompt" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NANOPHOTO_API_KEY" \
--data-raw '{
"videoSource": "youtube",
"locale": "en",
"videoUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX"
}'
curl -X POST "https://nanophoto.ai/api/sora-2/reverse-prompt" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NANOPHOTO_API_KEY" \
--data-raw '{
"videoSource": "url",
"locale": "en",
"videoUrl": "https://example.com/video.mp4"
}'
python3 scripts/reverse_prompt_file.py your-video.mp4 --locale en
The script reads NANOPHOTO_API_KEY from the environment, validates the file size/format, base64-encodes the MP4, and prints the streaming text response.
VIDEO_BASE64=$(base64 < your-video.mp4)
curl -X POST "https://nanophoto.ai/api/sora-2/reverse-prompt" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NANOPHOTO_API_KEY" \
--data-raw "{
\"videoSource\": \"file\",
\"locale\": \"en\",
\"videoFile\": \"$VIDEO_BASE64\",
\"videoFileName\": \"your-video.mp4\"
}"
| Parameter | Type | Required | Description |
|---|---|---|---|
videoSource | string | Yes | youtube, url, or file |
locale | string | No | Output language (default: en). Supported: en, zh, zh-TW, ja, ko, es, fr, de, pt, ru, ar |
videoUrl | string | Conditional | YouTube link or direct .mp4 URL |
videoFile | string | Conditional | Base64-encoded video (when videoSource is file) |
videoFileName | string | No | Original filename for uploaded videos |
.mp4 format supportedvideoFile accepts plain base64 or Data URL (data:video/mp4;base64,...)The API returns a streaming text response (Content-Type: text/plain; charset=utf-8) containing a Markdown table with:
| errorCode | HTTP | Cause | Action |
|---|---|---|---|
LOGIN_REQUIRED | 401 | Invalid or missing API key | Verify key at https://nanophoto.ai/settings/apikeys |
API_KEY_RATE_LIMIT_EXCEEDED | 429 | Rate limit exceeded | Wait and retry |
INSUFFICIENT_CREDITS | 402 | Not enough credits | Top up credits |
INVALID_INPUT | 400 | Missing required parameters | Check videoSource and corresponding fields |
INVALID_YOUTUBE_URL | 400 | Invalid YouTube URL | Ask user for a valid YouTube link |
INVALID_VIDEO_URL | 400 | Invalid video URL | Ask user for a valid .mp4 URL |
INVALID_FORMAT | 400 | Not MP4 format | Only .mp4 is supported |
FILE_TOO_LARGE | 400 | File exceeds 30 MB | Ask user for a smaller file |
VIDEO_DOWNLOAD_FAILED | 400 | Cannot download video | Check URL accessibility |
VIDEO_PROCESSING_FAILED | 422 | Processing error | Retry or try a different video |
AI_SERVICE_ERROR | 503 | AI service unavailable | Retry later |
scripts/reverse_prompt_file.py: Reliable local-file uploader for .mp4 inputs. Use it when the user provides a local video path.See references/api.md for complete endpoint documentation.