Turn one product photo into a vertical product video that speaks. This AI product video generator and product video maker builds ecommerce product videos, product ads, and commerce short videos from a single photo — composing a 9:16 opening frame, writing a short script from what the photo shows and the details you supply, voicing it with a selected narrator, and directing one finished clip ready to post. Use it for product launches, listing videos, shoppable social posts, storefront promos, and turning a phone snap of merchandise into a video that sells, with no shoot, no crew, and no editing.
Design & media
Voiceover Teaching Video Factory
Try itSeven-worker faceless teaching video production
What it does
Turn a supplied narration audio file plus an article, notes, screenshots, images, or source videos into a fact-checked faceless vertical teaching video, synchronized captions, cover, publish copy, hashtags, and pinned comment. Use when a user provides a cloned or recorded MP3/WAV and wants a multi-agent edit with privacy-scoped local job state, adjustable speech rate, semantic media placement, original-video interludes, mobile-safe text, modern transitions, final QC, and social publishing assets.
The skill document
Voiceover Teaching Video Factory
Act as the director of a seven-worker production line. Treat the supplied narration as sensitive source material and the prepared narration duration as the timeline authority. Do not clone a voice, upload source media, or publish the finished video unless the user explicitly requests that separate action.
Required setup
Require ffmpeg, ffprobe, Python 3.10+, and a video renderer capable of deterministic 9:16 output. Prefer HyperFrames when installed; otherwise use the existing renderer in the repository or an FFmpeg composition. Use local Whisper only when no transcript or reliable timing exists.
Read these references before execution:
references/workflow.mdfor the seven roles and wave schedule.references/contracts.mdfor stage artifacts and handoff fields.references/performance.mdforfast,balanced, andqualitymodes.references/publishing.mdbefore creating the cover or social copy.
Capability boundary
- Read only the Skill's own files and inputs explicitly supplied for the job. Copy user media into the selected job directory and keep all derivatives there.
- Write only inside the selected job directory and the user-selected delivery directory. Reject any implicit request to scan unrelated folders.
- Limit shell execution to
ffmpeg,ffprobe, Python, the selected renderer, and bundled scripts required by this workflow. - Do not enumerate environment variables, credential stores, browser sessions, cookies, or unrelated repositories.
- Normal local production requires no network access. Fetch a user-provided article URL or publish to a named destination only when the user explicitly requests that action and scopes the destination.
- Never run registry-maintenance, package-publishing, installation, or self-modification commands as part of a video job.
Initialize the job
Create a new job directory outside the skill folder. Never write user media into the skill directory.
python scripts/jobctl.py init \
--job-dir \
--article \
--audio \
--images \
--videos \
--mode fast \
--speech-rate 1.15 \
--source-video-speed 1.0
Use --speech-rate 1.2 only when the user explicitly requests 1.2x. If the user gives a target duration instead, run scripts/prepare_voiceover.py --target-minutes - and reject an automatically calculated rate outside 0.85-1.35; ask the user whether the script or duration should change.
Run seven workers
Use subagents when the host supports them. Give each worker only the artifact paths listed in references/workflow.md, never the full conversation. Run independent roles in parallel; otherwise run the same roles sequentially without changing their contracts.
- Intake and rights worker
- Timing and captions worker
- Editorial distillation worker
- Teaching storyboard worker
- Visual preparation worker
- Composition and finishing worker
- QC and publishing worker
Every worker must write a compact JSON report with status: pass|needs-human|fail. A failure returns only to the worker that owns the defective artifact. Do not rerun completed upstream roles unless their input hash changed.
Editing contract
- Prepare the speech rate once, before transcription and alignment. Preserve pitch with FFmpeg
atempo; never speed the final mixed video as a shortcut. - Preserve conversational cadence. Detect silence before retiming, shorten only outlier pauses of roughly 0.85 seconds or longer to about 0.30-0.40 seconds, and keep normal phrase boundaries intact. Do not cut inside English names, numbers, or source-video boundaries.
- Prefer the FFmpeg Rubber Band filter with formant preservation when available; fall back to
atempo. Align captions after pause cleanup and retiming. - Keep the voice understandable. Default to
1.0x; recommend1.1-1.2xfor concise explainers and require explicit approval above1.25x. - Honor an explicit speech rate exactly. For a requested
1.15x, retime narration, captions, and narration-led visuals together while keeping embedded source videos at1.0xunless the user separately changes their speed. - Map every visual to the sentence it explains. Do not distribute article images evenly or use a screenshot merely because it is available.
- Treat a source video with meaningful audio as a standalone interlude by default. Pause narration and narration captions, play the source video at natural speed with only its original audio, then resume narration at the exact next word and matching visual beat.
- Never mix cloned narration over a source-video interlude. Use muted source footage under narration only when the user explicitly requests B-roll treatment or the clip has no meaningful audio.
- Default to 1080x1920, 30 fps, H.264 High, yuv420p, and AAC 48 kHz for delivery.
- Keep captions and critical labels inside conservative mobile safe bounds. Remove source-account branding, unrelated headers, and engagement prompts when the user requests it.
- Keep every frame visually occupied. Use a meaningful poster frame or designed fallback while media initializes; do not leave blank opening, transition, or ending frames.
- Use restrained modern transitions. A card flip, vertical card exchange, or depth slide may bridge major sections; use simple cuts inside procedural steps.
- Do not invent claims. Verify names, numbers, dates, and quoted statements against the frozen local source.
- Use only licensed source images, fonts, music, sound effects, and authorized voice recordings.
- Add a voiced ending CTA only from authorized audio: a supplied CTA take, a verified phrase already present in the approved recording, or newly generated speech after explicit authorization. Otherwise use a text-only CTA.
Fast production loop
- Prepare the narration and timing artifacts.
- Build the storyboard and visual manifest before authoring the composition.
- Render a low-cost proxy defined by the selected mode.
- Inspect the first frame, every configured sample interval, every transition boundary, and the last frame. Run automated overflow, black-frame, decode, and loudness checks.
- Inspect the start, midpoint, end, and both boundaries of every source-video interlude. Confirm original audio is present and narration/captions are absent during playback.
- Repair only affected scenes or render chunks. Reuse unchanged chunks by cache key.
- Render the full-resolution final once after the proxy gate passes.
- Create
cover.pngandpublish-copy.json, then runscripts/validate_delivery.py.
Never perform a second full render for a copy-only or outro-only change when a local scene/chunk replacement is possible.
Keep one canonical 08-delivery/final.mp4. For revisions, build and fully decode a temporary master, then atomically replace the canonical file. Do not create v2, final-final, or other duplicate deliveries unless the user asks for versions.
Delivery gate
Deliver only when all of the following exist and validation passes:
08-delivery/final.mp408-delivery/cover.png08-delivery/publish-copy.json07-qc/qc-report.json
The final response must report the absolute output paths, duration, speech rate, resolution, frame rate, loudness result, mode, and any rights items that still need human confirmation. When source videos are present, also report their count, playback speed, original-audio policy, and confirmation that narration pauses and resumes.
Bundled scripts
scripts/jobctl.py: initialize jobs, hash inputs, track stages, and validate handoffs.scripts/prepare_voiceover.py: apply pitch-preserving speed changes and write audio metadata.scripts/render_cover.py: render an exact-text 9:16 technology-style cover without model-generated text.scripts/validate_delivery.py: probe the final MP4, cover, publish copy, and QC report.
Related skills
Turn final short-video scripts into ready-to-edit voiceover audio for TikTok, Reels, YouTube Shorts, product reviews, hook lines, explainers, and ads. This AI voice over generator, AI voice reader, and text-to-speech voiceover workflow makes scripts speakable, helps choose a suitable voice and supported language, and tunes pacing, pauses, names, numbers, brands, and pronunciation. Review the current price estimate, create MP3 voiceover audio, compare the returned duration with the target edit, and place the narration into short-form video, captions, avatar, lip-sync, and publishing workflows.
Generate spoken voiceover and narration from a script, one speaker, with control over emotion, pacing, and voice. Use when the user says "read this in a warm...
Converts articles (docx/pdf/txt/md) to narrated videos with AI-generated visuals and TTS voiceover. Invoke when user asks to convert article/document to video, mentions 文章转视频, or needs text-to-video with narration.
Animate a portrait image with audio to produce a lip-synced talking head video up to 10 minutes long.
Turn a user-supplied product factsheet and authorized stills into one wealth product talking clip per still. This product factsheet talking video studio writes a speakable product highlights talking clip for each photo, then animates a 2 to 15s product factsheet talking clip. Use it for wealth product talking pack and factsheet talking video pack work that stays one photo, one clip.