โ† All skills
Tencent SkillHub ยท Content Creation

Short-Form Video Creator for Social Media

Transform text scripts or ideas into fully produced, platform-optimized 9:16 short-form videos with voiceover, captions, music, and export-ready MP4 files.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Transform text scripts or ideas into fully produced, platform-optimized 9:16 short-form videos with voiceover, captions, music, and export-ready MP4 files.

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Known item issue.

This item's current download entry is known to bounce back to a listing or homepage instead of returning a package file.

Quick setup
  1. Open the source page and confirm the package flow manually.
  2. Review SKILL.md if you can obtain the files.
  3. Treat this source as manual setup until the download is verified.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Manual review
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
SKILL.md

Validation

  • Open the source listing and confirm there is a real package or setup artifact available.
  • Review SKILL.md before asking your agent to continue.
  • Treat this source as manual setup until the upstream download flow is fixed.

Install with your agent

Agent handoff

Use the source page and any available docs to guide the install because the item currently does not return a direct package file.

  1. Open the source page via Open source listing.
  2. If you can obtain the package, extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the source page and extracted files.
New install

I tried to install a skill package from Yavira, but the item currently does not return a direct package file. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required.

Upgrade existing

I tried to upgrade a skill package from Yavira, but the item currently does not return a direct package file. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 19 sections Open source page

Overview

This skill enables Claude to transform a text script or idea into a fully produced short-form video โ€” ready to publish as an Instagram Reel, YouTube Short, or TikTok โ€” using the InVideo AI platform and its API. No video editing experience required. Just provide a script or topic, and Claude handles the rest. ๐Ÿ”— Sign up for InVideo here: https://invideo.sjv.io/TBB

What This Skill Does

Convert a raw script into a complete short-form video with visuals and voiceover Generate videos optimized for Instagram Reels, YouTube Shorts, and TikTok Automatically match stock footage, music, and transitions to the script content Add subtitles, captions, and text overlays for better engagement Produce videos in the correct 9:16 vertical format for all short-form platforms Export in MP4 ready to upload directly to any platform

Step 1 โ€” Get Your InVideo API Access

Go to https://invideo.sjv.io/TBB and create an account Choose a plan that includes API access (Business plan or above) Navigate to Settings โ†’ API or Developer Settings Copy your API Key: iv_api_xxxxxxxxxxxxxxxx Store it safely: export INVIDEO_API_KEY=iv_api_xxxxxxxxxxxxxxxx InVideo offers a free trial โ€” sign up at https://invideo.sjv.io/TBB to explore the platform before committing to a paid plan.

Step 2 โ€” Install Dependencies

npm install axios form-data fs-extra

InVideo API โ€” Core Endpoints

Base URL: https://api.invideo.io/v1 All requests require: Authorization: Bearer YOUR_INVIDEO_API_KEY Content-Type: application/json

Generate a Video from Script

POST https://api.invideo.io/v1/videos/generate

Get Video Generation Status

GET https://api.invideo.io/v1/videos/{videoId}/status

Download / Export Video

GET https://api.invideo.io/v1/videos/{videoId}/export

Generate a TikTok / Reel from a Script

import axios from 'axios'; const client = axios.create({ baseURL: 'https://api.invideo.io/v1', headers: { 'Authorization': `Bearer ${process.env.INVIDEO_API_KEY}`, 'Content-Type': 'application/json' } }); const script = ` Did you know that 90% of startups fail in their first year? Here are 3 things the successful 10% do differently. Number 1: They talk to customers before building anything. Number 2: They launch ugly and iterate fast. Number 3: They obsess over retention, not acquisition. Follow for more startup insights every day. `; const response = await client.post('/videos/generate', { script: script, format: "9:16", // vertical for Reels / TikTok / Shorts duration: "short", // 15โ€“60 seconds style: "dynamic", // energetic cuts and transitions voiceover: { enabled: true, voice: "en-US-male-1", // choose from available voices speed: 1.1 // slightly faster for short-form }, captions: { enabled: true, style: "bold-bottom", // TikTok-style captions highlight: true // highlight word as it's spoken }, music: { enabled: true, mood: "upbeat", volume: 0.3 // background music volume (0โ€“1) }, branding: { watermark: false } }); const videoId = response.data.videoId; console.log("Video generation started. ID:", videoId);

Poll for Completion and Get Download URL

async function waitForVideo(videoId, maxWaitMs = 120000) { const start = Date.now(); while (Date.now() - start < maxWaitMs) { await new Promise(r => setTimeout(r, 5000)); // poll every 5s const status = await client.get(`/videos/${videoId}/status`); const { state, progress, exportUrl } = status.data; console.log(`Status: ${state} โ€” ${progress}% complete`); if (state === "completed") { console.log("Video ready:", exportUrl); return exportUrl; } if (state === "failed") { throw new Error("Video generation failed โ€” check your script and settings"); } } throw new Error("Timeout โ€” video took too long to generate"); } const downloadUrl = await waitForVideo(videoId);

Full Pipeline: Script โ†’ Video โ†’ Download

import axios from 'axios'; import { writeFileSync } from 'fs'; async function scriptToShortVideo(script, outputPath = './output.mp4') { const client = axios.create({ baseURL: 'https://api.invideo.io/v1', headers: { Authorization: `Bearer ${process.env.INVIDEO_API_KEY}` } }); // 1 โ€” Start generation const { data } = await client.post('/videos/generate', { script, format: "9:16", duration: "short", style: "dynamic", voiceover: { enabled: true, voice: "en-US-female-1", speed: 1.05 }, captions: { enabled: true, style: "bold-bottom", highlight: true }, music: { enabled: true, mood: "upbeat", volume: 0.25 } }); const videoId = data.videoId; console.log(`Generation started โ€” ID: ${videoId}`); // 2 โ€” Wait for completion let exportUrl = null; while (!exportUrl) { await new Promise(r => setTimeout(r, 6000)); const status = await client.get(`/videos/${videoId}/status`); if (status.data.state === "completed") exportUrl = status.data.exportUrl; if (status.data.state === "failed") throw new Error("Generation failed"); console.log(`Progress: ${status.data.progress}%`); } // 3 โ€” Download the video const videoStream = await axios.get(exportUrl, { responseType: 'arraybuffer' }); writeFileSync(outputPath, videoStream.data); console.log(`Video saved to ${outputPath}`); return { videoId, exportUrl, localPath: outputPath }; } // Usage await scriptToShortVideo( "3 productivity hacks that changed my life. Number 1: Time blocking...", "./my-reel.mp4" );

Batch Generate Multiple Videos

const scripts = [ { topic: "morning routine tips", voice: "en-US-female-1", mood: "calm" }, { topic: "5 foods to boost energy", voice: "en-US-male-1", mood: "upbeat" }, { topic: "how to learn faster", voice: "en-US-female-2", mood: "inspiring" } ]; const jobs = await Promise.all( scripts.map(s => client.post('/videos/generate', { script: s.topic, format: "9:16", duration: "short", style: "dynamic", voiceover: { enabled: true, voice: s.voice }, music: { enabled: true, mood: s.mood, volume: 0.3 }, captions: { enabled: true, style: "bold-bottom" } }) ) ); const videoIds = jobs.map(j => j.data.videoId); console.log("All jobs started:", videoIds);

Video Creation Workflow

When asked to create a short-form video, Claude will: Analyze the script or topic provided by the user Optimize the script for short-form pacing (hook in first 3 seconds) Select the right style, voice, music mood, and caption style Call the InVideo API to generate the video Poll the status endpoint until the video is ready Return the download URL or save the MP4 locally Suggest platform-specific tweaks (TikTok vs Reels vs Shorts)

Platform-Specific Settings

PlatformFormatDurationCaption StyleMusicTikTok9:1615โ€“60sBold bottom, word highlightUpbeat / trendingInstagram Reels9:1615โ€“90sBold bottom or centeredUpbeat / chillYouTube Shorts9:1615โ€“60sClean bottomOptionalLinkedIn Video16:9 or 1:130โ€“90sProfessional, top-alignedSubtle / none

Script Optimization Tips (Claude Will Apply These)

Hook in 3 seconds โ€” start with a bold claim, question, or shocking stat One idea per video โ€” don't try to cover too much ground Short sentences โ€” 8โ€“12 words max per caption line Call to action at the end โ€” "Follow for more", "Comment below", "Save this" Conversational tone โ€” write how people talk, not how they write Numbers perform โ€” "3 tips", "5 mistakes", "1 rule" always outperform vague titles

Normalized Output Schema

{ "videoId": "iv_7f3k29xm", "title": "3 Startup Lessons Nobody Tells You", "platform": "tiktok", "format": "9:16", "durationSeconds": 42, "exportUrl": "https://cdn.invideo.io/exports/iv_7f3k29xm.mp4", "captions": true, "voiceover": "en-US-male-1", "musicMood": "upbeat", "createdAt": "2025-02-25T10:00:00Z", "status": "completed" }

Best Practices

Always start with a strong hook โ€” the first 2โ€“3 seconds determine if users keep watching Keep scripts between 120โ€“200 words for a 30โ€“60 second video Use bold captions with word highlighting โ€” it significantly increases watch time Set music volume to 0.2โ€“0.3 so it never overpowers the voiceover Generate 3โ€“5 variations of the same script with different styles to A/B test For TikTok, use a slightly faster voiceover speed (1.1x) to match platform energy Always review the video before publishing โ€” AI generations may need minor tweaks

Error Handling

try { const response = await client.post('/videos/generate', payload); return response.data.videoId; } catch (error) { if (error.response?.status === 401) throw new Error("Invalid InVideo API key"); if (error.response?.status === 429) throw new Error("Rate limit hit โ€” wait before retrying"); if (error.response?.status === 400) throw new Error(`Bad request: ${error.response.data.message}`); throw error; }

Requirements

An InVideo account โ†’ https://invideo.sjv.io/TBB A plan with API access enabled (Business plan or above) A valid API Key from your InVideo settings Node.js 18+ and axios for API calls Optional: ffmpeg locally if you need to post-process or compress the exported MP4

Category context

Writing, remixing, publishing, visual generation, and marketing content production.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
1 Docs
  • SKILL.md Primary doc