Editorial collage director
Create short editorial paper-collage videos from a topic, script, talking-head clip, portrait, or product photo. Use for motion collage, torn-paper explainers, scrapbook films, punchy visual essays, collage ads, or requests described as Vox-style. Plans the story, runs a visual bake-off, generates or edits poster keyframes with whatever image capability is available, uses an available video or speech capability when useful, and always retains a fully local ffmpeg motion-and-assembly path. No specific AI platform or API key is required.From its SKILL.md
npx -y skills add Ilm-Alan/editorial-collage-directorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 24 days oldThe repository was created 24 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT; see LICENSE.txt and NOTICE.md. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
8.6 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Editorial collage director
Make a finished editorial paper-collage film without assuming any particular media provider. The durable idea is simple:
- The collage look is designed in still images.
- Motion is a separate stage.
- Story structure and visual direction each get an explicit human decision gate before expensive generation.
Read references/story-and-pacing.md before drafting the beat map. Read references/visual-direction.md before writing image or motion prompts.
Route capabilities first
Inspect the capabilities and local binaries that are actually available. Never ask for a particular vendor key merely because this skill was triggered.
- For keyframes, prefer the installed image-generation or image-editing capability. When
OpenAI's
imagegenskill/tool is available, use it. - For motion, use an available image-to-video or video-editing capability when it materially
improves the brief. Otherwise use
scripts/animate_stills.py, which creates clean local camera motion from the posters with ffmpeg. - For narration, use the user's requested voice service if one is already available. The
local fallback is
scripts/narrate.py, which uses macOSsay,espeak-ng, orespeak. A user-recorded narration file is always acceptable. - Music is optional. Use only user-provided, generated, public-domain, or properly licensed music. A film with narration and intentional silence is better than mystery-source audio.
- Use
scripts/assemble.pyfor the final local render. It can burn caption images when Pillow is installed and always writes an SRT sidecar.
If a richer capability is missing, take the local path. A missing cloud service is not a blocker.
Working directory
Keep generated projects outside this skill directory. Use a project folder such as
out/<slug>/ in the user's current repo. The single source of truth is
out/<slug>/project.json; see references/project-schema.md
and examples/minimal.project.json.
Resolve all relative media paths from the directory containing project.json. Do not place
secrets, remote job IDs, or provider-specific model names in the project file.
Workflow
1. Establish the brief
Infer reasonable defaults from the request:
- audience and objective;
- target duration;
- aspect ratio (
9:16for social,16:9for landscape, unless specified); - language;
- input mode;
- factual sourcing needs.
The modes are:
topic: write a new narrated film from a topic.anchor: preserve a supplied person or product as a photographic sticker while building the collage around it.talking-head: retain the original performance if a video-edit capability exists; otherwise transcribe it and recompose it as an editorial B-roll film.
For factual subjects, research claims before scripting and keep a source note beside the project. Do not fabricate statistics, quotations, dates, product claims, or endorsements.
2. Draft the beat map, then gate
Choose an arc from references/story-and-pacing.md. Draft project.json with:
- a hook that lands within about three seconds;
- concise narration sized to the duration;
- one visual job per beat;
- usually two shots per beat: an orienting poster and a detail cut-in;
- varied adjacent camera moves;
- a payoff, button, or single clear call to action.
Run:
python3 <skill-dir>/scripts/validate_project.py out/<slug>/project.json --stage plan
Show the beat map to the user before generating media. This is gate 1. If the user explicitly
asked for a fully autonomous run, choose the strongest version and record the choice in
decisions.beat_map.
3. Run a visual bake-off, then gate
Propose three genuinely different directions that suit the subject's era, culture, and tone. Render the same representative shot in all three. Do not merely recolor one prompt.
Present the candidates as a labeled contact sheet or separate images. Ask the user to pick
one. This is gate 2. For an autonomous run, choose the best candidate by inspecting it at
full size and record the choice in decisions.visual_direction.
Lock the winner in visual_direction. Reuse its medium, paper treatment, palette,
typographic logic, edge language, and lighting across every keyframe.
4. Establish timing with narration
Speech determines the edit. Generate or attach one narration file per beat before resolving shot durations.
Local fallback:
python3 <skill-dir>/scripts/narrate.py out/<slug>/project.json --engine auto
The script writes narration_audio and narration_duration into each beat. If narration is
supplied or generated elsewhere, add those fields manually. Keep one voice, pace, and
recording character across the film.
5. Generate keyframes
Create one finished poster for every shot. Use the selected visual direction and the prompt
structure in references/visual-direction.md.
- Compose the scene from visibly separate paper pieces.
- Preserve clear edges, physical paper shadows, and one dominant background field.
- Keep generated headline text very short. For critical spelling, logos, labels, or names, leave a clean text zone and add typography in post.
- For
anchormode, edit around the supplied subject. Keep the subject pixel-faithful; do not casually regenerate a face, product geometry, or label. - Inspect each image before motion. Re-roll weak, muddy, overly smooth, or illegible posters now.
Save keyframes under keyframes/ and update each shot's keyframe_path. Then run:
python3 <skill-dir>/scripts/validate_project.py out/<slug>/project.json --stage keyframes
6. Add motion
Use one camera move per shot. Protect headline and label regions from generative motion. Prefer short shots over an over-scripted long shot.
When an image-to-video capability is available, prompt motion rather than redescribing the still. Require a single continuous shot, restrained amplitude, rigid paper behavior, stable lettering, and no invented objects.
The deterministic local path is:
python3 <skill-dir>/scripts/animate_stills.py out/<slug>/project.json
It supports static, push_in, pull_out, pan_left, pan_right, tilt_up, tilt_down,
and parallax. Local parallax is an honest whole-frame diagonal drift, not synthetic
layer separation.
7. Assemble
Optional fields such as music gain, narration gain, and captions are documented in the schema. This pipeline does not add a watermark.
python3 <skill-dir>/scripts/validate_project.py out/<slug>/project.json --stage motion
python3 <skill-dir>/scripts/assemble.py out/<slug>/project.json
The outputs are final.mp4 and, when captions are enabled, captions.srt.
8. Verify the actual film
Do not stop at a successful ffmpeg exit.
- Use
ffprobeto confirm duration, video dimensions, codecs, frame rate, and audio presence. - Extract frames near the beginning, middle, payoff, and end. Inspect them.
- Check caption safe areas, spelling, face/product fidelity, black frames, repeated motion, abrupt freezes, clipping, narration intelligibility, and music balance.
- If generative motion was used, compare extracted frames with the keyframe. Re-letter critical text in post when it drifted.
Quality bars
- The first three seconds make a promise, pose a real question, or reveal tension.
- Each beat has one narrative job and one dominant visual idea.
- Adjacent shots do not repeat the same move.
- Paper texture and edge behavior are consistent; palette may travel with the story.
- A keyframe reads as a designed editorial poster, not a generic illustration with a grain filter.
- The edit changes meaningfully every three to six seconds.
- Headlines, labels, faces, and products survive motion intact.
- The final delivery includes the project file and source media paths, not only the MP4.
Attribution
This skill is a new provider-independent adaptation inspired by the MIT-licensed
Alisa0808/vox-director project. The upstream license and pinned source revision are in
LICENSE.txt and NOTICE.md.
What ships with it: 15 files
59.0 KB alongside SKILL.md, 6 of them executable
agents/
- openai.yaml245 B
examples/
- minimal.project.json1.8 KB
references/
- project-schema.md3.5 KB
- story-and-pacing.md3.4 KB
- visual-direction.md5.4 KB
scripts/
- animate_stills.pyruns6.9 KB
- assemble.pyruns12.4 KB
- common.pyruns3.2 KB
- narrate.pyruns4.9 KB
- overlays.pyruns2.7 KB
- validate_project.pyruns8.6 KB
- .gitignore70 B
- LICENSE.txt1.1 KB
- NOTICE.md1.0 KB
- README.md3.9 KB
Gives 0 of the 12 instructions most video audio skills give in ~1.8k tokens
Counted across 622 of the 795 authors here whose files we hold, read 2026-08-07
- Read individual rule files for detailed explanationsin 21 of 622, across 10 files
- Render final videoin 13 of 622, across 6 files
- Use WAV PCM 16kHz mono audio formatin 12 of 622, across 3 files
- Use this skill when dealing with Remotion codein 11 of 622, across 4 files
- Save generated audio to a WAV filein 11 of 622, across 4 files
- Handle conversion errors gracefullyin 10 of 622, across 6 files
- Add captions to videos alwaysin 10 of 622, across 4 files
- Generate music from text descriptions using MusicGenin 9 of 622, across 2 files
- Do not skip pipeline layersin 9 of 622, across 3 files
- Do not make one tool do everythingin 9 of 622, across 3 files
- Use Azure Document Intelligence for complex PDFsin 9 of 622, across 4 files
- Never ask the user to paste their full API keyin 9 of 622, across 3 files
Said here and by no other author read
- Read specified references before drafting beats or prompts
- Use local fallback paths when cloud capabilities are missing
- Keep project files outside the skill directory
- Resolve media paths relative to the project file
- Research factual claims before scripting
- Validate the project at each pipeline stage
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.