Help us improve
Share bugs, ideas, or general feedback.
From Hyper Marketing
Generates and edits AI video via Hyper MCP: text/image-to-video (Sora, Veo, Seedance), scene chaining, analysis, transcription, subtitles, TikTok-style captions, voiceover, clipping, stitching, and text overlays.
npx claudepluginhub hyperfx-ai/marketing-skills --plugin hyper-marketingHow this skill is triggered — by the user, by Claude, or both
Slash command
/hyper-marketing:video-generationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guide for generating, editing, analyzing, and post-processing videos using AI models and FFmpeg-backed tools exposed through the Hyper MCP.
Orchestrates AI video production workflow: gathers specs interactively, generates scripts/storyboards, Gemini TTS voiceovers, Lyria music, Veo 3.1 clips or image animations, assembles with FFmpeg.
Generates marketing videos using AI generation models, AI avatars (HeyGen, Synthesia), and programmatic frameworks (Remotion, Hyperframes). Supports product demos, explainers, and social clips.
Creates video content using AI generation models, avatars, and programmatic frameworks like Remotion and HeyGen. Handles product demos, explainers, and social clips.
Share bugs, ideas, or general feedback.
Guide for generating, editing, analyzing, and post-processing videos using AI models and FFmpeg-backed tools exposed through the Hyper MCP.
This skill assumes the Hyper MCP is connected to your agent so the tools below are available. The underlying providers (OpenAI Sora, Google Veo, ByteDance Seedance, OpenAI TTS, transcription, etc.) are configured under your Hyper integrations.
| Group | Tools |
|---|---|
| Generation | generate_video, sora_remix_video, sora_delete_video |
| Analysis | analyze_video, capture_video_frame, transcribe_video |
| Subtitles & captions | generate_subtitles, burn_subtitles, burn_highlighted_captions |
| Audio | text_to_speech, add_audio_to_video |
| Editing | clip_video, stitch_videos, overlay_text |
image-generation or ad-creative-generation.tiktok, instagram, or linkedin.google-ads, meta-ads, tiktok-ads.| Tool | Purpose | Runs in Background |
|---|---|---|
generate_video | Generate video from text / image prompt | Yes |
sora_remix_video | Modify existing Sora video | Yes |
sora_delete_video | Delete a Sora video | No |
capture_video_frame | Extract frame as image | No |
analyze_video | Watch and understand video content | No |
transcribe_video | Extract audio transcript | No |
generate_subtitles | Create SRT / VTT subtitle file | No |
burn_subtitles | Burn subtitles onto video | Yes |
burn_highlighted_captions | TikTok / karaoke-style word-by-word captions | Yes |
text_to_speech | Generate voiceover audio from text | No |
add_audio_to_video | Add / replace audio track on video | Yes |
clip_video | Extract a time segment from video | Yes |
stitch_videos | Concatenate multiple clips | Yes |
overlay_text | Add text / titles to video | Yes |
You can watch and analyze any video using analyze_video. This sends the video to a multimodal AI that sees both visual and audio content.
analyze_videoanalyze_video(file_id="...", analysis_type="general")
analyze_video(file_id="...", analysis_type="quality_review")
analyze_video(file_id="...", analysis_type="scene_breakdown")
analyze_video(file_id="...", question="Does this match: [original prompt]?")
Always review generated videos before delivering to the user:
result = generate_video(prompt="...", model="veo-3.1-generate-preview")
review = analyze_video(file_id="video_file_id", analysis_type="quality_review")
# If issues found, regenerate with adjustments. If quality is good, proceed to editing.
For longer, cohesive videos, plan the FULL SCRIPT before generating:
To create seamless multi-scene videos:
generate_video(prompt="...", model="veo-3.1-generate-preview")
capture_video_frame(video_file_id="scene1_file_id", frame_position="last")
generate_video(prompt="continuation: ...", image_file_id="captured_frame_id")
Repeat: extract last frame → generate next scene.
After generating all scenes, combine them:
stitch_videos(video_file_ids=["scene1_id", "scene2_id", "scene3_id"])
stitch_videos(
video_file_ids=["scene1_id", "scene2_id", "scene3_id"],
transition="crossfade",
crossfade_duration=0.5,
)
transcript = transcribe_video(file_id="video_file_id")
subs = generate_subtitles(file_id="video_file_id", transcript=transcript, format="srt")
burn_subtitles(
video_file_id="video_file_id",
subtitle_file_id=subs.file_id,
style="bold_outline",
position="bottom",
)
| Style | Effect |
|---|---|
default | Plain white text |
bold_outline | Bold white with black outline (recommended) |
shadow | White text with drop shadow |
box | White text on semi-transparent black box |
Add titles, lower-thirds, CTAs, and other graphics:
overlay_text(
video_file_id="video_file_id",
overlays=[
{
"text": "Episode 1: The Beginning",
"start_time": 0.0,
"end_time": 3.0,
"position": "center",
"font_size": 48,
"color": "white",
"background": "black@0.5",
},
{
"text": "Subscribe for more!",
"start_time": 10.0,
"end_time": 14.0,
"position": "bottom-right",
"font_size": 28,
},
],
)
top, bottom, center, top-left, top-right, bottom-left, bottom-right
Generate natural-sounding voiceover with TTS and add it to any video:
audio = text_to_speech(
text="Welcome to our product. Here's how it works...",
voice="nova",
model="tts-1",
)
add_audio_to_video(
video_file_id="video_id",
audio_file_id=audio.file_id,
mode="replace",
)
add_audio_to_video(
video_file_id="video_id",
audio_file_id=audio.file_id,
mode="mix",
audio_volume=0.8,
)
alloy, ash, coral, echo, fable, nova (recommended), onyx, sage, shimmer
Add word-by-word highlighted captions that light up as spoken:
burn_highlighted_captions(
video_file_id="video_id",
style="tiktok",
highlight_color="#3B82F6",
base_color="white",
words_per_group=3,
position="center",
)
burn_highlighted_captions(
video_file_id="video_id",
style="karaoke",
highlight_color="yellow",
base_color="white",
background="black@0.6",
words_per_group=4,
position="bottom",
)
Extract segments from longer videos:
clip_video(
video_file_id="long_video_id",
start_time=45.0,
end_time=60.0,
)
Complete workflow for producing UGC-style content:
generate_videoanalyze_video to check each scene for qualitycapture_video_frame, generate next scenesstitch_videostext_to_speech + add_audio_to_videoburn_highlighted_captionsoverlay_textanalyze_video on the final video for quality checkgenerate_video(prompt="...", model="veo-3.1-generate-preview")
audio = text_to_speech(text="Your narration script here...", voice="nova")
add_audio_to_video(video_file_id="generated_video_id", audio_file_id=audio.file_id)
burn_highlighted_captions(video_file_id="narrated_video_id", style="tiktok")
transcript = transcribe_video(file_id="podcast_video_id")
analysis = analyze_video(
file_id="podcast_video_id",
question="Identify the 3 most memorable / quotable moments with timestamps",
analysis_type="scene_breakdown",
)
clip_video(video_file_id="podcast_video_id", start_time=120.0, end_time=150.0)
clip_video(video_file_id="podcast_video_id", start_time=340.0, end_time=365.0)
stitch_videos(video_file_ids=["clip1_id", "clip2_id"])
burn_highlighted_captions(video_file_id="stitched_id", style="tiktok")
Each scene prompt should include:
model, size / aspect_ratio, and duration_seconds must be set explicitly in the tool call.| Parameter | Description |
|---|---|
image_file_id | Use for image-to-video (scene continuity) |
capture_video_frame | Extract frames with position="last" | "first" | "middle" |
size | For Sora only. One of: "720x1280", "1280x720", "1024x1792", "1792x1024" |
aspect_ratio | For Veo only. One of: "16:9" or "9:16" |
duration_seconds | Sora: 4, 8, or 12 seconds only. Veo: 4-8 seconds |
landscape, portrait, 720p, or 1080p.size and do not send aspect_ratio.aspect_ratio and do not send size.aspect_ratio and optionally resolution. Do not pass size.size / aspect_ratio across chained scenes for continuity.When the user mentions a specific model name, always use that model. Map user requests to the correct model parameter:
| User says | model parameter |
|---|---|
| "use seedance", "seedance video" | "seedance-2" |
| "fast seedance" | "seedance-2-fast" |
| "use sora", "sora video" | "sora-2" |
| "sora pro" | "sora-2-pro" |
| "use veo", "veo video" | "veo-3.1-generate-preview" |
| "fast veo" | "veo-3.1-fast-generate-preview" |
sora-2, sora-2-pro)
sizesize values: "720x1280", "1280x720", "1024x1792", "1792x1024"aspect_ratio"1280x720" or "720x1280"veo-3.1-generate-preview, veo-3.1-fast-generate-preview)
aspect_ratioaspect_ratio values: "16:9", "9:16"sizeseedance-2, seedance-2-fast)
aspect_ratio and resolutionaspect_ratio values: "16:9", "9:16", "1:1", "4:3", "3:4"resolution values: "480p", "720p"generate_audio=true for native audio with lip-syncsizestitch_videos for longer videos.generate_audio=true for native audio with lip-sync.Use this structure when you want predictable output:
Style/Tone: [realistic, cinematic, animation, documentary, etc.]
Subject/World: [who/what is in frame, key visual anchors]
Camera: [shot size + angle + movement]
Lighting/Palette: [light direction + 3-5 color anchors]
Action Beats:
- [beat 1 with timing/count]
- [beat 2 with timing/count]
- [beat 3 with timing/count]
Audio/Dialogue: [short lines or ambient cues]
Constraints: [no logos/brands, no text overlays, etc.]
analyze_video to check your output.