{
  "schemaVersion": "1.0",
  "item": {
    "slug": "video-captions-reelwords",
    "name": "Video Captioning by ReelWords",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Kmasterrr/video-captions-reelwords",
    "canonicalUrl": "https://clawhub.ai/Kmasterrr/video-captions-reelwords",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/video-captions-reelwords",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=video-captions-reelwords",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/reelwords_caption_job.py",
      "references/api.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/video-captions-reelwords"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/video-captions-reelwords",
    "agentPageUrl": "https://openagent3.xyz/skills/video-captions-reelwords/agent",
    "manifestUrl": "https://openagent3.xyz/skills/video-captions-reelwords/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/video-captions-reelwords/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "ReelWords Captions",
        "body": "Generate stylized captions for videos using the ReelWords Caption API: create a caption render job, poll until complete, then download the rendered output."
      },
      {
        "title": "1) Create a ReelWords account + API key",
        "body": "Sign up / log in: https://reelwords.ai\nOpen the account menu (top-right) → API Keys → New key\nCopy the key (it will look like rw_...)."
      },
      {
        "title": "2) Provide the API key to OpenClaw",
        "body": "Provide the API key to the process as REELWORDS_API_KEY.\n\nCommon options:\n\nSet REELWORDS_API_KEY as an environment variable (best when running the script directly)\nIf you run via OpenClaw/Clawdbot, store it in ~/.clawdbot/openclaw.json under skills.entries.reelwords-captions.env so the runtime can populate env vars for the skill.\n\nOption A: environment variable\n\nexport REELWORDS_API_KEY=\"rw_...\"\n\nOption B: openclaw.json (recommended)\n\nEdit ~/.clawdbot/openclaw.json and add an entry:\n\n{\n  \"skills\": {\n    \"entries\": {\n      \"reelwords-captions\": {\n        \"enabled\": true,\n        \"env\": {\n          \"REELWORDS_API_KEY\": \"rw_...\"\n        }\n      }\n    }\n  }\n}"
      },
      {
        "title": "Security note",
        "body": "Treat your API key like a password:\n\ndon’t commit it to git\ndon’t paste it into public chats\nrotate it in ReelWords if you suspect it leaked"
      },
      {
        "title": "Usage",
        "body": "Base URL: https://api.reelwords.ai\n\nYou can use either the included helper script (simplest), or call the REST endpoints directly."
      },
      {
        "title": "Option 1: All-in-one helper script (create → poll → download)",
        "body": "From this skill directory:\n\npython3 scripts/reelwords_caption_job.py \\\n  --video-url \"https://cdn.reelwords.ai/sample.mp4\" \\\n  --style-id \"style1\" \\\n  --add-emojis \\\n  --max-words-per-line 6 \\\n  --position-y 82 \\\n  --font-size 54 \\\n  --highlight-color \"#FFD803\" \\\n  --hook-color \"#FF5CAA\" \\\n  --out captioned.mp4\n\nNotes:\n\nThe script prints the final job JSON to stdout.\nDownload logic:\n\nprefers result.downloadUrl when present\notherwise falls back to GET /api/v1/caption-jobs/{id}/video (which typically redirects to a signed URL)"
      },
      {
        "title": "Option 2: Raw API examples (curl)",
        "body": "1) Create job\n\ncurl -sS https://api.reelwords.ai/api/v1/caption-jobs \\\n  -H \"x-api-key: $REELWORDS_API_KEY\" \\\n  -H \"content-type: application/json\" \\\n  -d '{\n    \"videoUrl\": \"https://cdn.reelwords.ai/sample.mp4\",\n    \"preferences\": {\n      \"style\": {\n        \"styleId\": \"style1\"\n      }\n    }\n  }'\n\nResponse includes an id (save it as $JOB_ID).\n\n2) Poll status\n\ncurl -sS https://api.reelwords.ai/api/v1/caption-jobs/$JOB_ID \\\n  -H \"x-api-key: $REELWORDS_API_KEY\" \\\n  -H \"accept: application/json\"\n\nPoll until status becomes completed (or the response includes failureReason/failureMessage).\n\n3) Download rendered video\n\nPreferred (when present):\n\ndownload from result.downloadUrl\n\nFallback (works in most tenants):\n\ncurl -L https://api.reelwords.ai/api/v1/caption-jobs/$JOB_ID/video \\\n  -H \"x-api-key: $REELWORDS_API_KEY\" \\\n  -o captioned.mp4"
      },
      {
        "title": "Workflow (high level)",
        "body": "Create caption job: POST /api/v1/caption-jobs\n\nvideoUrl (required)\npreferences.style.styleId (required)\noptional preferences (emojis, max words per line, colors, font sizing, etc.)\n\n\nPoll job status: GET /api/v1/caption-jobs/{id} until:\n\ncompleted: result.downloadUrl is usually present (downloadable)\nfailed: failureReason / failureMessage present\n\n\nDownload:\n\nresult.downloadUrl, or\nGET /api/v1/caption-jobs/{id}/video (redirects to a signed URL)"
      },
      {
        "title": "References",
        "body": "API summary + curl examples: references/api.md"
      },
      {
        "title": "Notes",
        "body": "Auth header is x-api-key: <token>.\nIf you hit usage limits, treat HTTP 402 as “out of credits / limit reached” and surface the response cleanly.\nIf ReelWords adds new fields, prefer passing them through in the JSON payload rather than hardcoding assumptions."
      }
    ],
    "body": "ReelWords Captions\n\nGenerate stylized captions for videos using the ReelWords Caption API: create a caption render job, poll until complete, then download the rendered output.\n\nSetup\n1) Create a ReelWords account + API key\nSign up / log in: https://reelwords.ai\nOpen the account menu (top-right) → API Keys → New key\nCopy the key (it will look like rw_...).\n2) Provide the API key to OpenClaw\n\nProvide the API key to the process as REELWORDS_API_KEY.\n\nCommon options:\n\nSet REELWORDS_API_KEY as an environment variable (best when running the script directly)\nIf you run via OpenClaw/Clawdbot, store it in ~/.clawdbot/openclaw.json under skills.entries.reelwords-captions.env so the runtime can populate env vars for the skill.\nOption A: environment variable\nexport REELWORDS_API_KEY=\"rw_...\"\n\nOption B: openclaw.json (recommended)\n\nEdit ~/.clawdbot/openclaw.json and add an entry:\n\n{\n  \"skills\": {\n    \"entries\": {\n      \"reelwords-captions\": {\n        \"enabled\": true,\n        \"env\": {\n          \"REELWORDS_API_KEY\": \"rw_...\"\n        }\n      }\n    }\n  }\n}\n\nSecurity note\n\nTreat your API key like a password:\n\ndon’t commit it to git\ndon’t paste it into public chats\nrotate it in ReelWords if you suspect it leaked\nUsage\n\nBase URL: https://api.reelwords.ai\n\nYou can use either the included helper script (simplest), or call the REST endpoints directly.\n\nOption 1: All-in-one helper script (create → poll → download)\n\nFrom this skill directory:\n\npython3 scripts/reelwords_caption_job.py \\\n  --video-url \"https://cdn.reelwords.ai/sample.mp4\" \\\n  --style-id \"style1\" \\\n  --add-emojis \\\n  --max-words-per-line 6 \\\n  --position-y 82 \\\n  --font-size 54 \\\n  --highlight-color \"#FFD803\" \\\n  --hook-color \"#FF5CAA\" \\\n  --out captioned.mp4\n\n\nNotes:\n\nThe script prints the final job JSON to stdout.\nDownload logic:\nprefers result.downloadUrl when present\notherwise falls back to GET /api/v1/caption-jobs/{id}/video (which typically redirects to a signed URL)\nOption 2: Raw API examples (curl)\n1) Create job\ncurl -sS https://api.reelwords.ai/api/v1/caption-jobs \\\n  -H \"x-api-key: $REELWORDS_API_KEY\" \\\n  -H \"content-type: application/json\" \\\n  -d '{\n    \"videoUrl\": \"https://cdn.reelwords.ai/sample.mp4\",\n    \"preferences\": {\n      \"style\": {\n        \"styleId\": \"style1\"\n      }\n    }\n  }'\n\n\nResponse includes an id (save it as $JOB_ID).\n\n2) Poll status\ncurl -sS https://api.reelwords.ai/api/v1/caption-jobs/$JOB_ID \\\n  -H \"x-api-key: $REELWORDS_API_KEY\" \\\n  -H \"accept: application/json\"\n\n\nPoll until status becomes completed (or the response includes failureReason/failureMessage).\n\n3) Download rendered video\n\nPreferred (when present):\n\ndownload from result.downloadUrl\n\nFallback (works in most tenants):\n\ncurl -L https://api.reelwords.ai/api/v1/caption-jobs/$JOB_ID/video \\\n  -H \"x-api-key: $REELWORDS_API_KEY\" \\\n  -o captioned.mp4\n\nWorkflow (high level)\nCreate caption job: POST /api/v1/caption-jobs\nvideoUrl (required)\npreferences.style.styleId (required)\noptional preferences (emojis, max words per line, colors, font sizing, etc.)\nPoll job status: GET /api/v1/caption-jobs/{id} until:\ncompleted: result.downloadUrl is usually present (downloadable)\nfailed: failureReason / failureMessage present\nDownload:\nresult.downloadUrl, or\nGET /api/v1/caption-jobs/{id}/video (redirects to a signed URL)\nReferences\nAPI summary + curl examples: references/api.md\nNotes\nAuth header is x-api-key: <token>.\nIf you hit usage limits, treat HTTP 402 as “out of credits / limit reached” and surface the response cleanly.\nIf ReelWords adds new fields, prefer passing them through in the JSON payload rather than hardcoding assumptions."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Kmasterrr/video-captions-reelwords",
    "publisherUrl": "https://clawhub.ai/Kmasterrr/video-captions-reelwords",
    "owner": "Kmasterrr",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/video-captions-reelwords",
    "downloadUrl": "https://openagent3.xyz/downloads/video-captions-reelwords",
    "agentUrl": "https://openagent3.xyz/skills/video-captions-reelwords/agent",
    "manifestUrl": "https://openagent3.xyz/skills/video-captions-reelwords/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/video-captions-reelwords/agent.md"
  }
}