Model or dataset
cclank/lanshu-create-ai-presenter-video avatar
cclank/lanshu-create-ai-presenter-video

lanshu-create-ai-presenter-video: a Codex Skill for AI presenter videos that does not pick your provider

Provider-neutral Codex Skill for producing verified AI presenter videos from a script and an authorized presenter image.

1,005 stars180 forksPythonMIT

At a glance

What is it?
The repository packages a script-to-finished-video workflow as a Codex Skill: one authorized presenter image plus a script, then voice, lip sync, subtitles and QA. Its selling point is provider neutrality, and its real cost is that you still have to supply the generation services.
Who is it for?
Adopt it if you already run Codex or a compatible local Skill agent and you have a script and a licensed presenter image, because the job directory, preflight script and staged reference documents are the part that saves time. Do not adopt it if you expect the repository to generate video on its own: it binds to no provider, so the actual speech, person and lip sync capabilities must come from your environment.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 27 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 16, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What the Skill actually solves for a presenter video pipeline

Producing a talking-head explainer involves a chain of steps that are individually easy and collectively annoying: write the script, pick a voice, generate the person, sync the lips, cut on a timeline, add subtitles and keyword motion, then check that the mouth matches the audio. The repository's claim is that it organizes all of those stages for Codex, taking a topic or a finished script plus one authorized reference image of an adult as input. It is aimed at people who already drive an agent environment and want the video workflow expressed as a repeatable skill rather than as a pile of manual prompts. The README states the minimum input plainly: a topic or complete script, and an authorized reference image containing a clear adult person. Optional inputs include a voice sample, screen recordings, images, B-roll, brand assets, target platform, duration, orientation, style, watermark and an end call to action. That list is the honest scope statement. This is not a video generator with a model behind it, it is a procedure.

The audio timeline is the spine of the whole render

The core mechanism described in the README is a fixed order of operations, and the ordering is the interesting design decision. A topic or script plus an authorized presenter image goes in. The script and the full voiceover are locked first. Then comes a low-cost presenter test clip. Only after that does the system generate the continuous presenter footage. Editing happens against the same audio timeline, then subtitles, keyword motion and a cover are added, then lip sync, person, voice and picture are checked, and finally a master, a share version and a QA report come out. The README states the reason directly: the complete voiceover is the time base for the whole piece, and the presenter footage, subtitles, shots, keywords and transitions are all positioned against that one audio track, which reduces lip drift and problems at clip boundaries. Locking audio before generating the person is the opposite of how most people improvise this, and it is the part worth copying even if you never install the Skill.

Installing the Skill and running a first job

Installation is a clone into the Codex skills directory. The README gives the exact destination, and the resulting skill path is ~/.codex/skills/lanshu-create-ai-presenter-video.

bash
git clone https://github.com/cclank/lanshu-create-ai-presenter-video.git \
  ~/.codex/skills/lanshu-create-ai-presenter-video

Once it is in place you can either invoke it in conversation or initialize a standard job directory first. The README shows the conversational form as a single line naming the skill, the script, the image and the target format. The scripted form runs init_job.py with the job directory, presenter image, topic, duration, aspect and two confirmation flags.

bash
SKILL_DIR=~/.codex/skills/lanshu-create-ai-presenter-video

python3 "$SKILL_DIR/scripts/init_job.py" \
  --job-dir ~/Videos/my-presenter-video \
  --presenter-image ~/Pictures/presenter.png \
  --topic "视频主题" \
  --duration 60 \
  --aspect 9:16 \
  --rights-confirmed \
  --adult-presenter-confirmed

After that, the README says to review and complete the manual checks and remote upload permission in job.json, then run the preflight script against that file. The preflight output is the gate you should read before anything is uploaded or billed.

bash
python3 "$SKILL_DIR/scripts/preflight.py" ~/Videos/my-presenter-video/job.json

The runtime requirements are Codex or a compatible local Skill agent, Python 3.9 or newer, FFmpeg and ffprobe, Bash with jq, awk and sed, and at least one video generation, speech generation and lip sync capability callable from the current environment. That last item is the one people miss.

Where this breaks: no provider, no video

The repository states that it does not bind to a provider, model name or private interface, and that it selects tools by capability from whatever the current environment offers. That is a deliberate portability choice with a sharp consequence: if your environment exposes no video generation, speech generation or lip sync capability, the Skill has nothing to call and the pipeline stops. There is no bundled model, no default endpoint, and no fallback service. Cost control is handled by policy rather than by code. The README says that before the first paid generation the workflow should state the uploaded content, the generation duration, the price basis, the test-clip plan and a retry ceiling, and that after an interruption you should query existing task IDs first to avoid being charged twice, stopping after three consecutive failed paid candidates. Those are instructions to the agent, not enforced limits in a scheduler. If you want hard spend caps or automatic idempotency, this repository does not offer them, and the README does not document rollback of a partially generated job.

Reference documents and the three scripts

The repository layout is small and worth reading before you trust the workflow. SKILL.md sits at the top with README.md, agents/openai.yaml, assets/job.template.json, a references directory holding generation.md, editing.md and qa-recovery.md, and a scripts directory with init_job.py, preflight.py and finalize_delivery.sh. The README explains that the three reference documents split the work by stage: generation.md covers input checks, script, voice, capability selection, paid generation and presenter prompts and consistency; editing.md covers the timeline, opening and closing, subtitle presets, presenter-side keyword motion, cover and export; qa-recovery.md covers technical acceptance, human acceptance and common failure repair. Codex reads only the relevant document when it enters that stage, which the README says reduces context usage. That staged loading is the most defensible engineering decision in the project. Splitting a long production procedure into three files that an agent loads on demand is a real constraint on context, not a marketing line.

Defaults, privacy handling and how it compares to a hosted avatar tool

The defaults are vertical 9:16 at 1080x1920 and 30fps, with topic-generated videos usually held to 45 to 75 seconds, stock voice when no authorized voice sample exists, a clear opening, two to four content beats and a short close, plus a publishing loudness target of about -16 LUFS. Music and commercial calls to action are added on request. The privacy section is specific: the repository stores no API keys, access tokens, signed download URLs or user assets; job-level request records should have credentials and temporary URLs removed before submission; and preflight and delivery reports keep file names only, without absolute paths from the developer machine. The natural alternative is a hosted avatar platform where you upload a script and a likeness and get a video back, with the model, voice and lip sync chosen for you. The difference is control versus convenience. A hosted tool decides the model and takes custody of your image and audio. This Skill keeps the assets on your machine and lets you swap the generation backend, but it hands you the entire integration burden and the billing exposure that comes with it. It also assumes an agent environment, so it is the wrong tool if you want a web form.

Maintenance, licence and what the repository does not tell you

The last push to the default branch was on 2026-08-20, and the repository is not archived. There are no releases retrieved, so installation is from the default branch and there is no versioned artifact to pin. Upgrades therefore mean pulling the branch again, and because the Skill lives at a fixed path under ~/.codex/skills, a pull replaces the scripts and reference documents in place. Nothing in the README describes a migration path for job.json files created by an older revision, so keep your job directories outside the skill directory, which the documented layout already does. The licence is MIT, which permits use, modification and distribution; the README states this directly. That covers the code. It does not cover the presenter image, the voice sample or the generated output, and the workflow's own rights confirmations exist precisely because those are separate questions. Nothing here is legal advice, and the repository does not attempt to answer them.

Editorial conclusion

Adopt it if you already run Codex or a compatible local Skill agent and you have a script and a licensed presenter image, because the job directory, preflight script and staged reference documents are the part that saves time. Do not adopt it if you expect the repository to generate video on its own: it binds to no provider, so the actual speech, person and lip sync capabilities must come from your environment. Before the first paid render, read scripts/init_job.py and scripts/preflight.py to confirm which fields are required, and check job.json for the rights and adult-presenter confirmations plus the remote upload permission, since those gates sit between you and any upload.

Frequently asked questions

Can I make an AI video of myself with lanshu-create-ai-presenter-video?

Yes, provided you supply an authorized reference image containing a clear adult person, plus a topic or a complete script. The README requires both the rights confirmation and the adult-presenter confirmation before a job proceeds.

Which AI is best for making YouTube videos?

The repository does not recommend a model or provider. It states that it selects tools by capability from the current environment and binds to no provider, model name or private interface, so the choice is yours.

What is an AI video in the context of this project?

Here it is a digital human explainer video assembled from a script and an authorized presenter image, with voiceover, lip sync, subtitles, keyword motion, editing and a QA report. The README describes the full voiceover as the time base that everything else is positioned against.

Official sources

  1. cclank/lanshu-create-ai-presenter-video on GitHub
  2. Issues
  3. License: MIT
  4. README
Community notes

Community notes