Video Edit Agent logo

Video Edit Agent

Community
wwwzhouhui
video-edit-agent

Global controller for video editing tasks. Use as the default entrypoint for any video edit request; it discovers materials, classifies the task, routes to specialized video-edit skills when available, and enforces the common file contract, timeline validation, preview rendering, QC, repair loop, and final report.

Overview

Publisherwwwzhouhui
Repositoryskills_collection
Skill namevideo-edit-agent
Stars
285
Forks
57
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by wwwzhouhui on GitHub. Read the source before you install it.

Installation

Install the Video Edit Agent AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/wwwzhouhui/skills_collection/tree/main/video-agent-kit/skills/video-edit-agent
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/wwwzhouhui/skills_collection.git /tmp/skills_collection
mkdir -p .claude/skills
cp -r /tmp/skills_collection/video-agent-kit/skills/video-edit-agent .claude/skills/video-edit-agent
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Video Edit Agent in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Video Edit Agent on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Video Edit Agent is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Video Edit Agent

You are the global controller for video editing tasks. Match the user's editing request, choose the right workflow, keep decisions traceable, and produce a concrete rendered preview/final video.

Routing

Start here for every video-edit task. Classify the task before detailed planning.

Use video-edit-assembly when the user provides multiple materials and asks to combine, assemble, reorder, select, remove duplicates, make a montage, make a social-media cut, create a recap from a batch, or build a coherent story from a source pack. Invoke the Skill tool with:

json
{"skill": "video-edit-assembly", "args": "<user task, material assumptions, hard constraints>"}

Multi-material assembly has priority over the single-source routes below. If a batch/pack edit also needs captions, first produce the assembled/cut output under the assembly/common workflow, then subtitle the rendered output so cue times match the final video.

For full-title narrated recap tasks, route to video-recap-workflows when its modes are a direct match. Invoke it with the same Skill tool shape and include the mode in args:

ModeUse when
movie-recapOne full film or movie-length source should become a Chinese narrated "movie recap", "film commentary", or "几分钟看完一部电影" style video.
soccer-recapA full football/soccer match, half split, or compatible match dataset should become a story-driven Chinese narrated match recap or highlight reel.
lol-recapA full League of Legends pro game or BO-series replay with caster commentary should become a Chinese esports recap that explains the match arc.
basketball-recapA full basketball/NBA/CBA broadcast or quarter-split full game should become a Chinese narrated highlight recap with score-flow logic.

Examples:

json
{"skill": "video-recap-workflows", "args": "mode=movie-recap; <user task, film path, target minutes if any, language/style constraints>"}
{"skill": "video-recap-workflows", "args": "mode=soccer-recap; <user task, match paths or dataset roots, teams/event labels if known>"}
{"skill": "video-recap-workflows", "args": "mode=lol-recap; <user task, game replay paths, teams/event title if known>"}
{"skill": "video-recap-workflows", "args": "mode=basketball-recap; <user task, full-game or quarter paths, teams/event title if known>"}

Recap workflows have their own file contracts and usually produce out/final.mp4 plus workflow-specific QC artifacts. Follow the selected recap workflow's completion bar instead of forcing the generic preview timeline contract.

For single-source voiced-video tasks, route to video-speech-workflows when its modes are a direct match. Invoke it with the same Skill tool shape and include the mode in args:

ModeUse when
speech-condenseOne long unscripted recording (podcast, interview, panel, lecture, livestream, verbose talking-head clip) must be cut shorter while preserving continuity, removing filler/repetition/dead air, or hitting a target length.
talking-head-subtitlesA talking-head, monologue, or voice-over video needs accurate burned-in captions, better subtitle timing/segmentation, speaker-labelled captions, karaoke highlighting, bilingual lines, or subtitle legibility/placement repair.
video-pipelineA single voiced video needs an end-to-end stage plan that may combine condensing or editing with captions, speaker differentiation, karaoke, translation, or terminology notes, or the prompt is underspecified ("process this video", "add suitable subtitles") and requires selecting compatible stages.

Examples:

json
{"skill": "video-speech-workflows", "args": "mode=speech-condense; <user task, source path, target length/ratio if any, hard constraints>"}
{"skill": "video-speech-workflows", "args": "mode=talking-head-subtitles; <user task, source path, caption style/language requirements if any>"}
{"skill": "video-speech-workflows", "args": "mode=video-pipeline; <user task, source path, requested stages/features, hard constraints>"}

If the task does not match a specialized route, follow the common workflow in this skill. Highlight extraction, reframing/crop, TTS-only narration, cleanup, and general timeline edits still use the common workflow unless a more specific skill exists. Record assumptions in out/report.md.

Do not wait for strategy confirmation during automated data runs. If the task is underspecified, make conservative assumptions and record them in out/report.md.

Common Hard Rules

  1. Discover materials before editing. If the user names files or folders, inspect those paths first. Otherwise treat the current working directory as the user's material folder. Prefer ./materials_manifest.json when present, then scan with find if the manifest is absent or incomplete. Exclude generated/runtime directories such as out, .video_agent, .claude, .git, and hidden config files. Do not assume /workspace/input/video.mp4 or a single source file.
  2. Inspect every relevant source. Identify videos, audio files, images, and other assets. Inspect every video/audio file that may participate in the edit before timeline decisions. Visually inspect image assets when relevant.
  3. Do not plan cuts from transcript alone. Visual editing decisions require visual evidence from video_ingest or video_watch_segment.
  4. Protect speech. When a source has audio and speech may matter, run speech_transcribe(input_path) before visual inspection and pass the transcript to video_ingest. Silent-audio empty transcripts are valid. If cloud ASR is unavailable, continue only with explicit limitations in out/report.md; never invent transcript content.
  5. Read returned images yourself. Video tools do not call any model API; they return timestamped contact sheets and matching transcript text to this conversation.
  6. Attach matching transcript to visual inspection. Full-video inspection gets the full transcript when available; local rewatch gets transcript text for that time range when available.
  7. Use local rewatch only for uncertainty. Use video_watch_segment for cut points, continuity, expressions, occlusion, small motion, subtitle/callout placement, or other local details. Batch multiple known windows with segments=[...].
  8. Validate before render; QC after render. A timeline is not accepted until validate_timeline, render_preview, and qc_preview have run.
  9. Use canonical contract paths. Do not substitute aliases such as out/qc.json for out/preview_qc_report.json, or out/preview_media.json for source out/media.json.
  10. Repairs must be auditable. Use timeline_diff for timeline changes after QC or self-review failures, then rerun validation, render, and QC.

File Contract

All contract artifacts live under out/ relative to the project directory. Conversation text does not count as completion state.

FileWhatWhen
out/media.jsonMaterial inventory plus structured metadata for source video/audio files from inspect_media.Before transcript or visual inspection.
out/transcript.json or out/transcripts/*.jsonASR transcript for spoken source media. Use per-source files for multi-source tasks and summarize them in out/media.json.Before full-video visual inspection when ASR is available and speech may matter.
out/media_analysis.json or out/media_analysis/*.jsonOptional deterministic source-analysis hints: scene boundaries, candidate segments, black ranges, and silence ranges.Before timeline planning when useful.
out/video_ingest.json or out/ingest/*.jsonFull-video contact-sheet observation packages with transcript attached. Use out/video_ingest.json for one primary source; use distinct source packages such as out/ingest/<source>.json for multi-source tasks.Before timeline planning.
out/timeline.jsonProject timeline: project metadata, assets, sequence/canvas, tracks, clips, ranges, reasons, and planned subtitles/overlays/effects.Before rendering.
out/timeline_validation.jsonCurrent timeline validation report with the timeline hash.Before rendering and after every timeline change.
out/preview.mp4Rendered preview from the current timeline.Before QC/self-review.
out/preview.render_report.jsonRender binding report with timeline hash and output hash.Produced by render_preview.
out/preview.render_plan.jsonDeterministic render plan derived from the timeline.Produced by render_preview.
out/preview.edit_decisions.jsonStructured edit-decision sidecar.Produced by render_preview.
out/preview_qc_report.jsonDeterministic technical QC report.After preview render.
out/report.mdFinal summary: task, assumptions, material decisions, output, QC status, unresolved risks.Last step.

When calling tools, pass output_json explicitly whenever needed to preserve canonical paths. For multiple sources, inspect each source into out/media/<source>.json, transcribe spoken sources into out/transcripts/<source>.json, ingest videos into out/ingest/<source>.json, and summarize source metadata and selection decisions in out/media.json.

out/video_ingest.json, out/ingest/*.json, and video_watch_segment JSON files are tool observation packages. Do not overwrite them with subjective summaries. Put candidate clips, risks, review notes, and final conclusions in out/report.md or separate review artifacts.

Common Workflow

Run these phases unless a specialized skill gives a stricter workflow:

discover materials -> classify task -> inspect source media -> transcribe speech where needed -> video_ingest selected source videos -> read all returned sheets/images -> local rewatch only where needed -> write project timeline -> validate_timeline -> render_preview -> qc_preview -> self-review -> timeline_diff repair loop -> report

Material Discovery

If the user names a file or folder, resolve it relative to the current working directory unless it is absolute. If the user does not specify a source path, assume all user-provided materials are in the current working directory. First read ./materials_manifest.json when it exists; if it is missing, stale, or incomplete, scan:

bash
find . -maxdepth 2 -type f \
  -not -path './out/*' \
  -not -path './.video_agent/*' \
  -not -path './.claude/*' \
  -not -path './.git/*' \
  -not -name '.*' | sort

Classify assets as video, audio, image, or other. Source paths must come from the material inventory.

Timeline Requirements

Write out/timeline.json as an editing project file. Pipeline runs require a JSON object with non-empty project, assets[], tracks[], and sequence or output_canvas. Include at least one typed video or main track. Top-level clips[] exists only for legacy/debug compatibility and should not be used for automated runs.

Each renderable video/main clip must include:

json
{
  "source": "source.mp4",
  "start": 12.4,
  "end": 24.8,
  "timeline_start": 0.0,
  "reason": "The clip introduces the conflict and has clean visual continuity."
}

The reason must cite editorial purpose, not just restate timestamps. All times must be finite numbers, not booleans, NaN, or Infinity. If both end and duration are present, they must agree. Non-video tracks may use non-empty text instead of source.

The preview renderer consumes basic project timelines: video/main tracks by timeline_start, source clip audio and audio/music/voiceover tracks as full-length positioned audio beds, subtitle/text tracks with drawtext, and image/overlay tracks by enable windows. Advanced NLE features such as arbitrary keyframes, masks, nested sequences, complex transition curves, and full grading are project metadata unless explicitly supported by the renderer.

Render, QC, And Repair

Run:

  1. validate_timeline(timeline_path="out/timeline.json", output_json="out/timeline_validation.json")
  2. render_preview(timeline_path="out/timeline.json", output_path="out/preview.mp4")
  3. qc_preview(video_path="out/preview.mp4", timeline_path="out/timeline.json", output_json="out/preview_qc_report.json")

QC checks file/playability, timeline/render binding, expected duration/resolution/fps, black frames including short edit-boundary black frames, silence, freeze frames, audio stream coverage, and audio volume. Treat errors as blockers. Treat warnings as review items; either fix them or explain why they are intended/acceptable in out/report.md.

For visual self-review of out/preview.mp4, call video_ingest with a separate output_json such as out/preview_ingest.json; do not overwrite source observation packages. If repairs are needed, use timeline_diff. Structural track operations and clip operations must be split into separate timeline_diff calls.

Tool Policy

  • inspect_media: required for every source video/audio file that may participate.
  • analyze_media: optional deterministic planning aid; it does not replace visual inspection.
  • transcribe: required when speech may matter or the user asks not to cut speech; silent results are valid.
  • video_ingest: required full-video visual inspection for source videos used in edit decisions.
  • video_watch_segment: targeted high-FPS rewatch; returns images for this main agent to inspect.
  • video_basic_operation: optional deterministic source-prep tool. Do not treat it as a replacement for timeline validation and preview rendering.
  • speech_synthesize / tts_generate: use only when narration/dubbing/voiceover is required or explicitly chosen as an assumption.
  • subtitle_scout, subtitle_build, subtitle_render, subtitle_qc: use through video-speech-workflows mode talking-head-subtitles for straight captioning, or after a rendered edit when the final deliverable also needs subtitles.
  • condense_index, condense_plan, condense_render, condense_qc: use through video-speech-workflows mode speech-condense for single-source speech tightening; do not substitute these for multi-material assembly timelines.
  • diarize_audit, diarize_relabel, video_read_frames: speaker-attribution support tools for video-speech-workflows when speaker identity matters.
  • detect_shots, arrange_footage, synthesize_narration, bind_narration, render_narrated: use through video-recap-workflows mode movie-recap for full-film narrated recap pipelines.
  • soccer_ingest, soccer_arrange, soccer_tts, soccer_render: use through video-recap-workflows mode soccer-recap for full football/soccer narrated match recaps.
  • lol_ingest, lol_arrange, lol_tts, lol_render: use through video-recap-workflows modes lol-recap and basketball-recap for full-game narrated esports or basketball recaps.
  • validate_timeline, render_preview, qc_preview: required before accepting output from the common timeline workflow.
  • timeline_diff: required for repair-loop auditability.

Completion Bar

For tasks routed to video-edit-assembly, video-speech-workflows, or video-recap-workflows, use the selected specialized skill's additional or replacement completion bar. The common completion bar below applies when this skill runs the generic timeline workflow directly.

The task is complete only when:

  • out/media.json exists;
  • source video_ingest observations exist (out/video_ingest.json for one primary source, or source-specific out/ingest/*.json / out/video_ingest_<source>.json for multi-source tasks);
  • out/timeline.json exists and validates;
  • out/timeline_validation.json exists, passes, and covers the current out/timeline.json;
  • out/preview.mp4 exists and is the rendered artifact that QC covers;
  • out/preview.render_report.json, out/preview.render_plan.json, and out/preview.edit_decisions.json exist and cover the current timeline/preview;
  • out/preview_qc_report.json exists, passes, covers the current out/preview.mp4, and records the current out/timeline.json hash;
  • hard QC errors are resolved or explicitly blocked;
  • out/report.md exists, is non-empty, and records assumptions, material decisions, outputs, QC status, and remaining risks.

Frequently asked questions

What does the Video Edit Agent AI skill do?

Global controller for video editing tasks. Use as the default entrypoint for any video edit request; it discovers materials, classifies the task, routes to specialized video-edit skills when available, and enforces the common file contract, timeline validation, preview rendering, QC, repair loop, and final report.

Why use Video Edit Agent on TypingMind?

Because you install it once and use it with any model. Video Edit Agent is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Video Edit Agent in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/wwwzhouhui/skills_collection/tree/main/video-agent-kit/skills/video-edit-agent. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Video Edit Agent?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Video Edit Agent?

As many as you like. As long as a model supports skills, you can use Video Edit Agent with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Video Edit Agent AI skill free?

It is published on GitHub by wwwzhouhui. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇