Agent skill

Faceless Explainer

by waker240 in waker240/FullVideoProductionSkill

Turn a topic, article, or script into a short faceless explainer with synthetic graphics.

Apache-2.0Auto-check passedMedia & Creative

Install Faceless Explainer

skills CLI
$ npx skills add waker240/FullVideoProductionSkill --skill faceless-explainer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install waker240/FullVideoProductionSkill faceless-explainer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/waker240/FullVideoProductionSkill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/faceless-explainer .claude/skills/faceless-explainer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
faceless-explainer
GitHub stars
196
Token cost
~6.5k tokens
SKILL.md length
3,017 words
Files
23 (incl. scripts, references)
Skills in repo
13
Repo updated
First seen
Licence
Apache-2.0

At a glance

Turn a topic, article, or script into a short faceless explainer with synthetic graphics.

  • Works in 8 steps: Setup and Brief → Brief (no capture) → Design System → …
  • Tasks that involve Motion graphics
  • SKILL.md covers Step 0: Setup and Brief, Step 1: Brief (no capture), Step 2: Design System and Step 3: Storyboard and Script, plus 5 more sections
  • Runs JavaScript scripts from its folder; calls node and npx

What it does

Faceless Explainer is an agent skill from waker240/FullVideoProductionSkill. Turn a topic, article, or script into a short faceless explainer with synthetic graphics. Use hyperframes for long-form films or an extensive scene-review workflow.

Its SKILL.md is about 6.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 25 other files, including scripts and reference files (for example `references/composition.md`, `references/motion-language.md` and `references/story-design.md`). Compatibility notes: Requires sibling skills from this pack, a local filesystem and shell, Node.js 22.20.0+, and FFmpeg/ffprobe for media work. Generation providers and desktop…

It sits in Media & Creative, covering Motion graphics. It works with HeyGen. The repository describes itself as: 20亿Claude Opus 4.6-4.8的Token. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Motion graphics

Example prompts

  • “/faceless-explainer”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Requires sibling skills from this pack, a local filesystem and shell, Node.js 22.20.0+, and FFmpeg/ffprobe for media work. Generation providers and desktop tools are optional, separately configured capabilities.

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Setup and Brief
  2. Brief (no capture)
  3. Design System
  4. Storyboard and Script
  5. 1: Audio
  6. Frame Visual Design
  7. Build Frames
  8. Finalize

What it can do on your machine

Read from SKILL.md and the folder at commit 0223baa. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 13 files in scripts/ (JavaScript, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires sibling skills from this pack, a local filesystem and shell, Node.js 22.20.0+, and FFmpeg/ffprobe for media work. Generation providers and desktop tools are optional, separately configured capabilities.

    From compatibility in the SKILL.md frontmatter.

Context cost

Faceless Explainer loads about 6.5k tokens when it runs, and up to ~21k if it reads all its reference files. Until then it costs about 46 tokens; SKILL.md has 3,017 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~46
When it runs · the whole SKILL.md, loaded when a task matches
~6.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~21k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from waker240/FullVideoProductionSkill at commit 0223baa, republished under its Apache-2.0 licence (© waker240). 3,017 words, ~6,517 tokens.

Download SKILL.mdSave it as .claude/skills/faceless-explainer/SKILL.md (or your agent's skills folder). This skill also uses 22 other files; get the full folder from GitHub.
name
faceless-explainer
description
Turn a topic, article, or script into a short faceless explainer with synthetic graphics. Use hyperframes for long-form films or an extensive scene-review workflow.
compatibility
Requires sibling skills from this pack, a local filesystem and shell, Node.js 22.20.0+, and FFmpeg/ffprobe for media work. Generation providers and desktop tools are optional, separately configured capabilities.
<!-- Public portability adaptation, 2026-09-26. -->

Install this skill with its sibling skills. See runtime setup and capability boundaries before executing commands. User instructions and the requested production stage take precedence over workflow defaults.

media-use: Music and SFX must be individually reviewed and frozen under the project before use. Run /media-use with --adopt to register those local files; it does not search, download, or generate media.

Faceless Explainer to HyperFrames

Studio route: for long-form narration, mixed generated footage/UI/relational canvases, reference-led production, or repeated scene review, use /hyperframes and its references/review-driven-production.md instead of this short synthetic-frame route. “Faceless” does not require every film to be asset-free. Explicit requests to preserve the complete script override this route's editorial compression; existing full discretion overrides routine confirmation steps. Requested review-before-assembly remains a real stage boundary.

Use this skill to turn a body of text into an explainer video: pick a design system, plan a teaching story, and build it frame by frame in HyperFrames. Faceless means every visual is invented downstream — there is no capture step and no real asset inventory.

Confirm the route before Step 0. You are the orchestrator. Run each step, verify its gate, and only then continue. This skill is for explaining a topic from text, with no product and no website to capture. Route other intents elsewhere: a product launch/promo → /product-launch-video; a tour of a real site → /website-to-video; a GitHub PR → /pr-to-video; captions on existing footage → /embedded-captions; a short unnarrated motion graphic → /motion-graphics. If the user says only "make a video" or the route is uncertain, read /hyperframes first.

You are the orchestrator. Work in the chosen project directory (videos/<project>/ is an example). Run steps in order and pass each gate before continuing. Honor requested review boundaries; existing authorization supersedes routine confirmation steps. Do every step yourself except Step 5, where you dispatch one sub-agent per frame. Do not put design or motion rules here; those live in the frame-worker sub-agent, hyperframes-creative, and hyperframes-animation.

Workflow: Step 0 setup → hyperframes.json; Step 1 brief → capture/extracted/; Step 2 design system → frame.md; Step 3 storyboard/script → STORYBOARD.md and SCRIPT.md; Step 3.1 audio → audio_meta.json; Step 4 visual design → enriched STORYBOARD.md; Step 5 frames → compositions/frames/NN-*.html and index.html; Step 6 final render → renders/video.mp4.


Step 0: Setup and Brief

Goal: Lock the core video brief and create the HyperFrames project if needed.

Initialize only if hyperframes.json is missing. Name <project> from the topic in kebab-case, such as compound-interest-explained; never use workspace name or timestamp.

npx --yes hyperframes@0.7.17 init "videos/<project>" --non-interactive --skip-skills --example=blank

The bundled audio adapter uses Fish via hyperframes-media; configure the selected transport and voice. For another requested provider or supplied audio, use the recorded-VO route. Do not silently switch providers after an error or include credentials in storyboards/manifests.

Gate: hyperframes.json exists, and angle, length, aspect ratio, and language are locked.


Step 1: Brief (no capture)

Goal: Fold the user's text into the project as the source of information. There is no website capture and no real assets — this is a faceless explainer.

Save the user's full input verbatim, then create the synthetic capture package by hand:

  • capture/extracted/visible-text.txt — the full article / notes / topic / brief, verbatim. This is the source of information, not a story template (Step 3 reshapes it).
  • capture/extracted/tokens.json — { "title": "", "description": "", "colors": [], "fonts": [] }. Fill title/description from the brief. Leave colors/fonts empty unless the user explicitly gave brand colors or fonts — then add them (the design preset supplies a complete palette regardless).

Do not run npx hyperframes capture (there is no URL). Do not create asset-descriptions.md or populate capture/assets/ — faceless visuals are invented in Steps 4-5, not captured. The one exception: if the user supplied a real image, place it under public/<basename> and note it for Step 3.

Gate: capture/extracted/visible-text.txt and capture/extracted/tokens.json exist; you can state the explainer's topic and audience in one clear sentence.


Step 2: Design System

Goal: Choose a shipped text/HTML frame preset; a script turns it into this video's frame.md + caption skin. These presets contain no font, image or audio binaries; supply required project assets and verify their availability.

You make the one judgment call — which preset. Read ../hyperframes-creative/references/design-spec.md and browse ../hyperframes-creative/frame-presets/; pick the preset whose look best fits the topic, tone, and audience. Then run:

bash
node <SKILL_DIR>/scripts/build-frame.mjs --preset <name> --hyperframes .

The script does the rest deterministically: copies the preset's FRAME.md → frame.md and remixes it onto any brand tokens in capture/extracted/tokens.json (brand colors mapped onto the preset's color keys by role; the preset's display + body fonts swapped for the brand's), copies the preset's caption skin to .hyperframes/caption-skin.html, and self-validates (exits 1 on a broken mapping). Proceed as soon as it exits 0 — no hand-editing of the spec.

A faceless explainer usually has no brand colors/fonts (tokens.json colors/fonts empty) → the script keeps the preset's own palette, a complete shippable design. Only when the user named brand colors/fonts add them to tokens.json before running, and only adjust frame.md by hand afterward if a mapping truly needs it.

Gate: build-frame.mjs exited 0 — frame.md exists from a named preset, and (when the preset ships one) .hyperframes/caption-skin.html exists as the caption skin source.


Step 3: Storyboard and Script

Goal: Turn the text into an approved frame-by-frame teaching plan.

Read references/story-design.md, ../hyperframes-core/references/storyboard-format.md, and ../hyperframes-core/references/script-format.md. Use them to write STORYBOARD.md and, when narration is needed, SCRIPT.md.

If the brief or emerging story arc needs a bounded momentum, temporal-compression, overwhelm, or panic/rupture passage, read ../hyperframes-creative/references/fast-paced-editing.md now. Step 3 owns cross-frame seams: choose each participating frame's transition_in and add the fast_passage / role / focal-handoff / root-mix metadata defined in story-design.md before approval. Step 4 may enrich the visuals but does not repair a seam that was never planned.

Use story-design.md for the explainer structure (concept / how-to / listicle / story), hook strategy, clarity techniques, emotional beats, the type-enum mapping, and VO_MODE. The video's sequence comes from narrative design, not the input text's paragraph order — reorder, merge, omit, compress. Faceless visuals are invented downstream, so frames do not carry an asset inventory: leave asset_candidates empty unless the user supplied a real public/<basename> image. Use the exact required fields from the storyboard and script references.

If several consecutive teaching beats require one stable relationship geography and exact overview→detail→return continuity, consolidate them into one compound Spatial Canvas frame per story-design.md; do not distribute its regions across independent frame workers.

After drafting, show a frame-by-frame summary. In that same message ask the user two things: (a) to approve or request changes, and (b) whether they want a live preview of the storyboard scaffold (npx hyperframes preview) — open it only on a yes. Iterate until approved, and carry the preview choice to Step 6.

Gate: STORYBOARD.md exists, every frame has the required narrative fields, SCRIPT.md exists when narration is needed, and the user approved the frame-by-frame plan.


Step 3.1: Audio

Goal: Generate/import the selected narration and real word timings, and attach any already-reviewed local music to the approved script.

Before starting, decide whether the explainer needs music. If it does, choose one already-reviewed local track, freeze it under assets/bgm/, register it with /media-use --adopt, and pass that exact project-local path with --bgm. The workflow never searches for or generates a track. If no reviewed track is available, proceed without BGM or stop clearly to obtain one; do not substitute a runtime music engine.

Start audio after Step 3 approval. Run it in the background, then continue to Step 4:

bash
node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md \
  --hyperframes . --out ./audio_meta.json \
  --bgm ./assets/bgm/reviewed-track.mp3 & # omit this final flag when there is no music

This adapter implements the shared Fish route, transcribes it for word timing, validates/freezes the optional local BGM, and writes timing metadata. Fish credentials and defaults remain owned by /fish-audio-api. If there is no narration and no SCRIPT.md, voice generation is skipped; an explicit --bgm may still be attached. With neither narration nor BGM, mark the project silent.

Gate: audio job has started, or the project is marked silent.


Step 4: Frame Visual Design

Goal: Add the visual direction, layout intent, and motion choices to each storyboard frame.

Edit STORYBOARD.md in place. Do not create another storyboard. Use frame.md as the source of truth for color, type, layout feel, and style.

Read references/visual-design.md, references/composition.md, references/motion-language.md, and ../hyperframes-animation/. Use visual-design.md for required frame fields and the required ## Video direction block. Use composition.md for layout, hierarchy, focal points, and the invented-visual treatment. Use motion-language.md and ../hyperframes-animation/ for valid effects and blueprint IDs. Do not invent effect names or blueprint IDs.

If any frame carries canvas_id, also read ../hyperframes-creative/references/spatial-canvas.md, instantiate ../hyperframes/templates/SPATIAL_CANVAS.example.json once as project-root SPATIAL_CANVAS.json, and use the spatial-canvas blueprint. Add/adapt exactly one scope: "scene" canvas entry per distinct canvas_id, each pointing to that frame's exact src; never overwrite an earlier frame's entry. Faceless compound frames keep excursions as fixed in-composition overlays owned by the same worker—omit cutawayComposition; every excursion still declares its own local at / duration / reviewAt, exact/reorient return ticket, and mutation. After timing sync, the worker gives each excursion one direct-root native clip marker with that exact local window, per the core contract. Also create project-root DIRECTION.md from ../hyperframes/templates/DIRECTION.md so route review has a ledger. The draft timing locks route proportions; Step 5 reconciles absolute times after narration sync.

For every frame, add required visual and motion fields, including effects and focal and/or roles. Because the explainer is faceless, focal/roles describe invented visual elements (a hero word, a diagram node, a data-viz series), not captured assets. Add one video-wide ## Video direction block for overall visual direction, motion style, pacing, and design rules.

If Step 3 admitted a fast passage, use ../hyperframes-creative/references/fast-paced-editing.md to complete its shared visual direction. Mark the consecutive frame IDs and provisional within-frame proportions, baseline/escalation roles, peak, release/reorientation, eye-trace, primary edit family, and sound/legibility plan in ## Video direction; give every participating frame its exact visual arc role. Preserve Step 3's transition_in and marker fields. Do not add a second timing manifest—the storyboard's durations become authoritative after sync.

Do not change story, script, transition_in, or the source text. Do not write HTML in this step. There is no asset-staging step — faceless visuals are built by the workers in Step 5. If the user supplied a real public/<basename> image, reference it by path in the relevant frame's focal/roles; otherwise nothing to stage.

Gate: every frame has effects plus focal and/or roles; ## Video direction exists; every admitted fast passage names a contiguous span, baseline/escalation/peak/release, primary family + optional accent, eye-trace, sound/legibility plan, and each participating frame has its role plus entry/exit handoff and Step-3-owned seam.


Show full SKILL.md (1,329 more words)Show less

Step 5: Build Frames

Goal: Build every storyboard frame as an HTML composition and assemble the playable video.

Wait for Step 3.1 audio to finish if audio was started. Then sync durations and resolve SFX from the project's reviewed local manifest; skip both if silent.

node <SKILL_DIR>/scripts/audio.mjs sync-durations --audio-meta ./audio_meta.json --storyboard ./STORYBOARD.md

When any frame has fast_passage, immediately resolve and validate the now-exact cumulative windows before dispatch:

node <SKILL_DIR>/scripts/check-fast-passages.mjs --storyboard ./STORYBOARD.md

This keeps STORYBOARD.md as the only clock, rejects orphan/noncontiguous/incomplete arcs, and prints the exact global passage/role windows plus root BGM-gain cues. Reconcile the ## Video direction window to that output; do not change the synced durations.

Before the SFX pass, freeze every selected effect under assets/sfx/, register the files with /media-use --adopt, and ensure assets/sfx/manifest.json maps each storyboard cue name to one of those files. Do not leave a name-only cue without a reviewed manifest entry.

node <SKILL_DIR>/scripts/audio.mjs fetch-sfx --storyboard ./STORYBOARD.md --hyperframes . --sfx-manifest ./assets/sfx/manifest.json

An unresolved local cue remains nonfatal: the adapter skips it, preserves the shared engine warning in audio_meta.json under anomalies, and prints resolved/requested plus unresolved counts. Treat that warning as a cue to fix the manifest before final audio review, not as permission to claim a completely resolved SFX pass.

Duration sync is mechanical: real voice duration wins; silent frames keep estimates; never hand-edit synced durations.

If any frame has canvas_id, immediately reconcile the draft route to the now-locked frame duration before dispatch:

node <SKILL_DIR>/scripts/sync-spatial-canvas.mjs --storyboard ./STORYBOARD.md --manifest ./SPATIAL_CANVAS.json

This scales visit and excursion windows/review samples together, verifies the one-frame/one-canvas owner, and rejects external cutaway files in this workflow.

Before dispatch, read sub-agents/frame-worker.md and ../hyperframes-core/references/subagent-dispatch.md. Dispatch one sub-agent per frame, in parallel if possible; otherwise run workers in waves. Each worker gets exactly one frame.

Each worker context must include PROJECT_DIR, frame_id, canvas size, caption status and keep-out band if captions are enabled, and ANIM_DIR as the absolute path to ../hyperframes-animation/. A Spatial Canvas frame also receives SPATIAL_CANVAS.json and remains one worker/one composition for the whole route. A frame inside an admitted fast passage receives the checker's exact passage/role window plus the shared plan and its focal handoff. Each worker reads frame.md, its own ## Frame N block from STORYBOARD.md, and the recipe body for each cited effect or blueprint ID. Each worker writes only compositions/frames/NN-*.html. Workers must never edit STORYBOARD.md.

As each worker returns, the orchestrator marks that frame as animated in STORYBOARD.md.

After audio timings exist, build captions in the background and assemble the index:

node <SKILL_DIR>/scripts/captions.mjs build --storyboard ./STORYBOARD.md --audio-meta ./audio_meta.json --hyperframes . --out ./caption_groups.json &

node <SKILL_DIR>/scripts/assemble-index.mjs --storyboard ./STORYBOARD.md --hyperframes .

The assembler revalidates fast-passage ownership and writes any per-frame fast_bgm_gain / fast_bgm_ramp cues onto the root paused timeline, so a planned hard music cut or recovery is render-real rather than prose. Frame workers still own no audio.

captions.mjs uses the project's .hyperframes/caption-skin.html (copied in Step 2) as the caption look, injecting brand tokens from frame.md; with no skin present it renders the built-in default pill. captions: skipped (<reason>) is valid. Continue without captions when explicitly skipped.

Gate: every frame is marked animated, index.html exists, captions are built or explicitly skipped, every admitted fast arc passed post-sync validation, and its declared root BGM cues are present when BGM exists.


Step 6: Finalize

Goal: Verify the assembled video, get user approval, and render the final MP4.

Inject transitions, run checks, pause for review, then render.

node <SKILL_DIR>/scripts/transitions.mjs inject --storyboard ./STORYBOARD.md --hyperframes .

node <SKILL_DIR>/scripts/transitions.mjs verify --storyboard ./STORYBOARD.md --index ./index.html

npx hyperframes lint

npx hyperframes validate

npx hyperframes inspect

npx hyperframes snapshot --at <frame-midpoints>

snapshot stitches the captured frames into one contact sheet (snapshots/contact-sheet.jpg). Glance at it; if nothing is obviously broken, move on — don't linger here.

For every ## Video direction-marked fast passage, render/watch the complete lead-in through release at final fps with final audio. Midpoint snapshots cannot approve its pacing. Fix any lost focal path, unreadable text/caption collision, masked narration, unearned peak, unsafe repeated luminance flash, or missing reorientation, then rerender and rewatch the same full window.

When SPATIAL_CANVAS.json exists, additionally run the contract and the complete route rather than relying on frame midpoints:

node <SKILL_DIR>/../hyperframes/scripts/check-spatial-canvas.cjs --root .

node <SKILL_DIR>/../hyperframes/scripts/snap.cjs --root . --spatial

Read every visit/excursion sample; under DIRECTION.md → ## Spatial-canvas review, fill one exact <canvas-id>:<visit-id> row per visit and <canvas-id>:excursion-<excursion-id> row per cutaway, fix failures, then run:

node <SKILL_DIR>/../hyperframes/scripts/gate.cjs --root . --only spatial_canvas

If a command fails, surface stderr and stop — don't pile on recovery commands. Fix the named owner with the cheapest safe edit: that may be SPATIAL_CANVAS.json, DIRECTION.md, index.html, or compositions/frames/NN-*.html. Then rerun the failed command. If HTML or assembly changed, rerun normal lint/validate/inspect; for any Spatial Canvas fix, rerun the structural checker and full snap --spatial route, then re-read every regenerated sample before updating rows or running the gate.

Known false-positive — do not chase it. inspect may report a handful of text_box_overflow errors of ~1–4px on the caption highlight words (selector #caption-word-* / .caption-line). The caption pill uses a deliberately snug line-height (set once in scripts/captions.mjs) and has no overflow:hidden, so a heavy display glyph's ink spills a few px into the pill's own padding — nothing is actually clipped. Treat these as expected and proceed. Do not inflate the caption line-height (it balloons the pill, which is worse). Only act on a text_box_overflow when it names a frame element (#el-NN-*), not a caption word.

After checks pass, pause for user review. The video is assembled, viewable, and editable in Studio. Manage preview only once across Step 3 and Step 6: open it if the user asked earlier, offer it if they declined earlier, and do not ask again if they are already reviewing in Studio.

Preview: npx hyperframes preview

Render only after user approval:

npx hyperframes render --skill=faceless-explainer --quality high --output renders/video.mp4

For a Spatial Canvas render, audit the same route in the encoded file before delivery:

node <SKILL_DIR>/../hyperframes/scripts/review-master.cjs --root . --video renders/video.mp4 --spatial --out review/spatial-master

Inspect every encoded route sample. If one fails, fix the source owner, rerun normal checks plus structural/route snapshots, rerender, and repeat encoded-route review. When the encoded review is clean and no source changed after the pre-render checks, do not rerun unrelated checks merely for ceremony.

For every admitted fast passage, replay the same complete lead-in → release window from the encoded MP4 with its final mix. If comprehension, eye-trace, caption/voice intelligibility, peak/release contrast, orientation, or luminance restraint fails, fix the source plan/owner, rerender, and rewatch that encoded window.

Gate: lint, validate, and inspect passed before render; any Spatial Canvas also passed structural, route-snapshot, exact-row direction, and encoded-route review; every admitted fast passage passed full-motion source and encoded-master review with its final mix; user approved at the review pause; renders/video.mp4 exists. Final reply states MP4 path and final duration.


Quick Reference

Formats: landscape 1920x1080 by default; portrait 1080x1920; square 1080x1080. Set the format once in the storyboard frontmatter.

Faceless deltas vs a captured-asset workflow: no Step 1 capture (synthetic tokens.json + visible-text.txt); no asset-descriptions.md and no capture/assets/; no asset-staging in Step 4; asset_candidates empty by default; every visual is invented by the Step 5 workers (typography / abstract graphics / diagrams / data-viz). A user-supplied public/<basename> image is the only real asset path.

Background scripts: the workflow ships only these under scripts/: build-frame for adopting + brand-remixing a frame preset into frame.md (+ caption skin); audio for Fish TTS, transcription, explicit local BGM/SFX, and duration syncing; check-fast-passages for post-audio fast-arc windows/ownership; sync-spatial-canvas for post-audio route timing; captions; transitions; and assemble-index. Everything else is the hyperframes CLI or the canonical sibling HyperFrames validation scripts named above.

ReadWhen
[../hyperframes-creative/frame-presets/](../hyperframes-creative/frame-presets/)Step 2: choose and adopt a frame preset.
[../hyperframes-creative/references/design-spec.md](../hyperframes-creative/references/design-spec.md)Step 2: apply brand tokens correctly.
[references/story-design.md](references/story-design.md)Step 3: plan the explainer story.
[../hyperframes-core/references/storyboard-format.md](../hyperframes-core/references/storyboard-format.md)Step 3: write STORYBOARD.md.
[../hyperframes-core/references/script-format.md](../hyperframes-core/references/script-format.md)Step 3: write SCRIPT.md.
../hyperframes-media/references/tts.mdStep 3.1: use the implemented Fish narration contract, or import selected-provider audio.
[references/visual-design.md](references/visual-design.md)Step 4: enrich the storyboard visually.
[references/composition.md](references/composition.md)Step 4: judge composition.
[references/motion-language.md](references/motion-language.md)Step 4: judge motion language.
[../hyperframes-animation/](../hyperframes-animation/)Step 4: cite effect and blueprint IDs.
[../hyperframes-creative/references/spatial-canvas.md](../hyperframes-creative/references/spatial-canvas.md)Steps 3–5: compound persistent-world frames.
[../hyperframes-creative/references/fast-paced-editing.md](../hyperframes-creative/references/fast-paced-editing.md)Steps 4–6: directed high-velocity passages.
[sub-agents/frame-worker.md](sub-agents/frame-worker.md)Step 5: dispatch per-frame workers.
[../hyperframes-core/references/subagent-dispatch.md](../hyperframes-core/references/subagent-dispatch.md)Step 5: dispatch sub-agents safely.

© waker240, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 22 other files (scripts, references) in skills/faceless-explainer of waker240/FullVideoProductionSkill.

  • SKILL.md
  • references/composition.md
  • references/motion-language.md
  • references/story-design.md
  • references/visual-design.md
  • scripts/assemble-index.mjs
  • scripts/audio.mjs
  • scripts/build-frame.mjs
  • scripts/captions.mjs
  • scripts/check-fast-passages.mjs
  • scripts/lib/assets.mjs
  • scripts/lib/dimensions.mjs
  • scripts/lib/fast-passages.mjs
  • scripts/lib/storyboard.mjs
  • scripts/lib/tokens.mjs
  • scripts/lib/transition-registry.mjs
  • scripts/lib/transitions.json
  • scripts/sync-spatial-canvas.mjs
  • … and 5 more

Open the folder on GitHubat commit 0223baa

Compare with similar skills

Faceless Explainer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Faceless Explainer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Faceless Explainer this skillwaker240/FullVideoProductionSkill196—~6.5kAutomated safety check: PassApache-2.0
HyperFrames Animationheygen-com/hyperframes58k3 repos~2.1kAutomated safety check: PassApache-2.0
Faceless Explainer Videoheygen-com/hyperframes58k3 repos~7.5kAutomated safety check: NotesApache-2.0
Figma to HyperFramesheygen-com/hyperframes58k3 repos~4.5kAutomated safety check: NotesApache-2.0
HyperFrames Video Entry Pointheygen-com/hyperframes58k3 repos~5.2kAutomated safety check: PassApache-2.0
Hyperframesboraoztunc/skills3939 repos~7.6kAutomated safety check: PassApache-2.0

Similar skills

  • HyperFrames Animation

    heygen-com/hyperframes

    Collects motion rules, scene blueprints, transitions and runtime adapters for HyperFrames video compositions, with GSAP as the default animation runtime.

    58k GitHub starsUsed in 3 repos~2.1k tokens
    Media & CreativeAuto-check passed
  • Faceless Explainer Video

    heygen-com/hyperframes

    Turns an article, notes or a topic brief into an explainer video whose visuals are invented per scene, built frame by frame in HyperFrames with no footage.

    58k GitHub starsUsed in 3 repos~7.5k tokens
    Media & CreativeAuto-check: notes
  • Figma to HyperFrames

    heygen-com/hyperframes

    Imports Figma assets, brand tokens, components and motion into a HyperFrames video composition, using the Figma REST API with a connector or native export for shaders.

    58k GitHub starsUsed in 3 repos~4.5k tokens
    Media & CreativeAuto-check: notes
  • HyperFrames Video Entry Point

    heygen-com/hyperframes

    Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.

    58k GitHub starsUsed in 3 repos~5.2k tokens
    Media & CreativeAuto-check passed
  • Hyperframes

    boraoztunc/skills

    Create video compositions, animations, title cards, overlays, captions, voiceovers, audio-reactive visuals, and scene transitions in HyperFrames HTML.

    393 GitHub starsUsed in 9 repos~7.6k tokens
    Media & CreativeAuto-check passed
  • Hyperframes Creative

    chmonitor/chmonitor

    Non-animation creative direction for HyperFrames videos. An agent skill from chmonitor/chmonitor.

    298 GitHub starsUsed in 5 repos~1.3k tokens
    Media & CreativeAuto-check passed

More from waker240/FullVideoProductionSkill

All 13 skills in this repo
  • Hyperframes Animation

    waker240/FullVideoProductionSkill

    Build deterministic animation for HyperFrames using motion rules, transitions, scene blueprints, and runtime adapters.

    196 GitHub stars~2.4k tokensUpdated 11 days ago
    Auto-check passed
  • Hyperframes Creative

    waker240/FullVideoProductionSkill

    Develop video direction, typography, color, visual mechanisms, storyboards, and asset prompts.

    196 GitHub stars~3k tokensUpdated 11 days ago
    Auto-check passed
  • Media Use

    waker240/FullVideoProductionSkill

    Resolve reviewed local BGM, sound effects, images, icons, and brand assets into frozen project files plus a manifest.

    196 GitHub stars~2k tokensUpdated 11 days ago
    Auto-check: notes
  • Music To Video

    waker240/FullVideoProductionSkill

    Build a HyperFrames video around a supplied music track, using measured rhythm and editable visual concepts.

    196 GitHub stars~4.3k tokensUpdated 11 days ago
    Auto-check passed
  • Remotion To Hyperframes

    waker240/FullVideoProductionSkill

    Port an existing Remotion composition to HyperFrames HTML while preserving visible behavior.

    196 GitHub stars~2.4k tokensUpdated 11 days ago
    Auto-check passed
  • Hyperframes Media

    waker240/FullVideoProductionSkill

    Prepare Fish official-API narration, OpenAI word timestamps, and reviewed user-supplied local music/SFX for HyperFrames.

    196 GitHub stars~1.2k tokensUpdated 11 days ago
    Auto-check: notes

Works with

Questions about Faceless Explainer

What does Faceless Explainer do?

Turn a topic, article, or script into a short faceless explainer with synthetic graphics. Faceless Explainer is an agent skill from waker240/FullVideoProductionSkill. Turn a topic, article, or script into a short faceless explainer with synthetic graphics.

When should I use Faceless Explainer?

Faceless Explainer fits situations like: tasks that involve Motion graphics.

How do I install Faceless Explainer in Claude Code?

Run `npx skills add waker240/FullVideoProductionSkill --skill faceless-explainer -a claude-code`. Or copy the skill folder (skills/faceless-explainer in waker240/FullVideoProductionSkill) into .claude/skills/faceless-explainer in your project. Claude Code loads it when a task matches its description.

How do I install Faceless Explainer in Codex?

Run `npx skills add waker240/FullVideoProductionSkill --skill faceless-explainer -a codex`. Or copy the skill folder (skills/faceless-explainer in waker240/FullVideoProductionSkill) into .agents/skills/faceless-explainer in your project. Codex loads it when a task matches its description.

Can I use Faceless Explainer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add waker240/FullVideoProductionSkill --skill faceless-explainer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/faceless-explainer, .gemini/skills/faceless-explainer, .github/skills/faceless-explainer and .opencode/skills/faceless-explainer in your project.

What does Faceless Explainer need to run?

Going by SKILL.md and its folder, Faceless Explainer needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and npx). Our summary lists: Node.js. Compatibility (from SKILL.md): Requires sibling skills from this pack, a local filesystem and shell, Node.js 22.20.0+, and FFmpeg/ffprobe for media work. Generation providers and desktop tools are optional, separately configured capabilities..

Does Faceless Explainer access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Faceless Explainer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Faceless Explainer use?

Faceless Explainer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Faceless Explainer use?

About 6.5k tokens (SKILL.md is roughly 26k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.

What are the alternatives to Faceless Explainer?

Skills that share tags, products or a category with Faceless Explainer: HyperFrames Animation (heygen-com/hyperframes, 58k stars), Faceless Explainer Video (heygen-com/hyperframes, 58k stars), Figma to HyperFrames (heygen-com/hyperframes, 58k stars) and HyperFrames Video Entry Point (heygen-com/hyperframes, 58k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Faceless Explainer?

waker240 (a GitHub user) maintains it in waker240/FullVideoProductionSkill, which has 196 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 26, 2026.

Source: waker240/FullVideoProductionSkill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.