360 Secure SkillHub
360 安全技能中心

Video Reverse Prompt

核心功能:借助NanoPhoto.AI API分析视频,生成含画面、音频、时长的逐镜拆解表及AI可用提示。典型场景:用户需反向提取视频提示、制作分镜故事板或视频视觉分析时使用。输入支持YouTube链接、MP4直链、本地MP4文件(限30MB内,建议用自带脚本上传);输出为Markdown格式分镜详情。需提前配置NANOPHOTO_API_KEY。

nanophotohq
nanophotohq
热度 54.91
最近更新 2026-05-11 17:35:07
分类:效率依赖:第三方 API / 读写文件 / 代码执行应用场景:摘要总结 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add video-reverse-prompt
Metadata
name
video-reverse-prompt
description
Analyze 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.
homepage
https://nanophoto.ai
metadata
{"openclaw":{"homepage":"https://nanophoto.ai","requires":{"env":["NANOPHOTO_API_KEY"]},"primaryEnv":"NANOPHOTO_API_KEY"}}

Video Reverse Prompt

Analyze 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.

Prerequisites

  1. Obtain an API key at: https://nanophoto.ai/settings/apikeys
  2. Configure NANOPHOTO_API_KEY before using the 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-reverse-prompt": {
        "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

Credential declaration summary:

  • Required env var: NANOPHOTO_API_KEY
  • Primary credential: NANOPHOTO_API_KEY
  • No unrelated credentials are required

If the env var is not set, ask the user to configure it before proceeding.

Workflow

  1. Collect the video source from the user (YouTube link, direct .mp4 URL, or local file path)
  2. Determine videoSource type: youtube, url, or file
  3. Confirm the user is authorized to upload or process the content
  4. If local file: read and base64-encode it (must be .mp4, max 30 MB)
  5. Call the API (streaming response)
  6. Return the shot breakdown and prompts to the user

API Call

YouTube Video

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": "youtube",
    "locale": "en",
    "videoUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX"
  }'

Direct Video URL

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"
  }'

Local File (Preferred: bundled script)

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.

Local File (Manual Base64 request)

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\"
  }"

Parameters

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

Constraints

  • Only .mp4 format supported
  • Max file size: 30 MB (before base64 encoding)
  • videoFile accepts plain base64 or Data URL (data:video/mp4;base64,...)
  • Costs 1 credit per API call

Response

The API returns a streaming text response (Content-Type: text/plain; charset=utf-8) containing a Markdown table with:

  • Shot number, framing/angle, camera movement
  • Detailed visual description
  • Audio analysis (BGM, sound effects, narration)
  • Duration per shot
  • Overall summary

Error Handling

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

Bundled script

  • scripts/reverse_prompt_file.py: Reliable local-file uploader for .mp4 inputs. Use it when the user provides a local video path.

Full API Reference

See references/api.md for complete endpoint documentation.