Generate a finished AI short video
generate_short_videoGenerate a finished, publishable vertical (9:16) short video with AI voiceover and captions, then get a hosted mp4 URL to schedule on TikTok, Instagram, or YouTube.
Instructions
Call prompt_suggest first and base the prompt on the top result. Generate a FINISHED, PUBLISHABLE vertical (9:16) short video with an AI video model (Veo 3.1, Kling 2.5 or Grok Imagine) and get back a hosted mp4 publicUrl. The provider clip becomes a muted ShortSpec scene. The server adds the configured ElevenLabs/OpenAI voiceover, burns word-timed karaoke captions, and returns the ffmpeg-assembled result. Pass video.publicUrl into schedule_post mediaUrls (tiktok/instagram/youtube). Always disclose the generated visual as AI-generated when you post it.
Pick a genre — each one exists because of ONE retention mechanic:
"asmr_loop": a hyper-tactile satisfying clip cut as a SEAMLESS LOOP (last frame === first frame), which gets rewatched 3-5x per viewer. REQUIRES imageUrl (the start frame it loops back to) and a Veo key. Single unbroken shot, no cuts.
"what_if": an absurd premise filmed as a dead-serious documentary. The tension between the two IS the hook. Kling by default (2 credits); Grok is the cheap explicit override.
"pov_historical": first-person POV of a historical/disaster moment. Stakes plus a TIMER in the first line ("you have 10 minutes"). Photorealism is the hook.
"character_series": a recurring character held visually identical across episodes. Pass referenceImageUrls (up to 3) of the character — that is what stops them drifting, and consistency is the entire moat of this format.
Reference/start images are ordinary hosted media: upload them with prepare_media_upload -> PUT -> finalize_media_upload and pass the returned publicUrl(s). You do not write the model prompt: give a concept (one line) plus any genre fields and the server builds the shot/camera/lighting/pacing prompt. Provider is chosen per genre; override with provider only if you know why. Weighted credits follow the subscription billing period (calendar fallback): Grok costs 1, Kling costs 2, Veo costs 2 on the default Fast tier or 5 if the deployment overrides to Standard; Pro gets 6, Growth 12, trials 2, and Free/Starter 0. Requests that exceed the allowance 429. Writing style for any post content you draft: write like the account's human owner, not like an AI. NEVER use em-dashes or en-dashes (—, –) or double hyphens (--); use a period, comma or colon instead. Skip hashtag spam (0-1 hashtags), filler openers ("Exciting news!") and rocket/sparkle emoji. Before drafting, read the account's recent posts with list_posts and match their voice, casing and rhythm. CAPABILITY: draft — creates content that cannot reach an audience on its own. Safe for a draft-only agent token.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| era | No | pov_historical: the dated moment and place. | |
| genre | Yes | Which proven format to shoot; each has its own retention mechanic. | |
| prompt | No | Escape hatch: send this to the model verbatim instead of the built prompt. | |
| refine | No | Run the LLM critique pass over the built prompt. Default true. | |
| concept | Yes | The idea in one line. | |
| premise | No | what_if: the absurd premise, stated flatly. | |
| setting | No | ||
| subject | No | ||
| imageUrl | No | Start frame. REQUIRED for asmr_loop — the loop pins the last frame back to it. | |
| material | No | asmr_loop: the material doing the satisfying thing. | |
| provider | No | Override per-genre routing. Veo is required for seamless loops; Kling is the realism default for what_if/pov_historical; Grok is a cheap explicit-override option. | |
| timerLine | No | pov_historical: the stakes + countdown for the first line. | |
| episodeBeat | No | character_series: what happens in this episode. | |
| soundDesign | No | asmr_loop: the sound it makes. | |
| characterName | No | character_series: the recurring character. | |
| voiceoverText | No | Optional exact narration. Defaults to the genre premise/timer/episode line, then concept. | |
| extraDirection | No | Extra art direction, appended verbatim. | |
| durationSeconds | No | Veo accepts 4|6|8 (snapped); Kling snaps to 5|10; Grok 1-15. Default 8. | |
| referenceImageUrls | No | Up to 3 hosted character/product images (prepare_media_upload). Holds character_series consistent. | |
| characterDescription | No | character_series: fixed appearance. Reuse the SAME wording every episode. |