diff --git a/.gitignore b/.gitignore index 058ec54..efd9985 100644 --- a/.gitignore +++ b/.gitignore @@ -34,5 +34,5 @@ showcase/*/media/final.mp4 showcase/04-intro-film/v3/final.mp4 styles/gallery.mp4 *.part -# docs/talk: a presenter's own films for the demo page stay local -docs/talk/media/ +# docs/site: the author's own films for the homepage stay local +docs/site/media/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 9999ab4..a94f57a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ ## Unreleased +**docs/site: the project homepage, in English and Chinese** +- Why: the maintainer asked to drop the demo framing and make the page the project's homepage, written as a product introduction, keeping its look, with a switch between English and Chinese. +- The page moved from `docs/talk/` to `docs/site/`. `docs/talk/index.html` now redirects there, so the old link keeps working, and a new `index.html` at the repo root redirects too, so the site also opens at `zlhad.github.io/OpenVideoHarness/` once GitHub Pages is on. +- Language: an EN / 中 switch in the top bar. Every text on the page exists in both languages, including the style names, the chart dates, the f(t) readout and its check. The first visit follows the browser's language; the choice is remembered, and `?lang=en` or `?lang=zh` picks one in a link. Chinese headings rise in character by character, and a phrase never breaks across lines. +- Content, written for someone who has never heard of the project: + - The hero: what it is, one line on what happens, three buttons (start, watch the film, star on GitHub) and a row of facts (MIT, 9 types, 31 styles, 5 engines). + - "Why it exists": the problem first. One great film is easy; every time is hard. + - "Built with Claude" and "In practice" are in the project's voice, not the presenter's. + - A new FAQ with ten questions, open one at a time: how it differs from just asking an agent (with the honest result of the A/B in `docs/research/06`), cost, time, requirements, Codex, languages, real people, current limits, the relation to Anthropic, and contributing. The answers follow the README. + - A footer with links to the README in both languages, the wiki, the changelog, the contributing guide and the license. +- The presenter tools are gone: speaker notes, the timer, the key list and the arrow-key paging. Scroll snapping is now `proximity`, so it no longer takes over the scroll wheel. +- Numbers: 75 pull requests in the first 11 days (2026-09-29 to 10-09, UTC), 72 of them from `claude/` branches. The chart and the ticker include #74 and #75. +- `docs/site/README.md` now describes the site: viewing it, the language switch, how to edit both languages, and the optional WeChat QR, channel links and local film. + **docs/talk: Get started comes first, Contact last** - Why: the maintainer is using the page as the project's homepage (the repo's About link) and asked for a homepage order: how to start right after the title, contact details at the end. - `docs/talk/index.html`: "Get started" is section 01, right after the title (the commands, and what happens next with the three sign-offs and the effort levels); a new last section, "Contact", holds the GitHub and WeChat QR codes, the email and the footer. The other sections move down one number. The speaker notes, the nav, the key list (`Home` / `End`) and `docs/talk/README.md`'s script follow the new order; the talk still runs about 4.5 minutes. diff --git a/docs/site/README.md b/docs/site/README.md new file mode 100644 index 0000000..8c1abcd --- /dev/null +++ b/docs/site/README.md @@ -0,0 +1,69 @@ +# The OpenVideoHarness homepage + +`index.html` is the project's homepage, in English and Chinese. It covers: + +- getting started; +- why the project exists; +- what it adds and how it works; +- the intro film and four showcase films; +- the 31-style library; +- who wrote it (Claude) and how the author uses it; +- an FAQ, and contact details. + +It is one HTML file with no build step, and Claude wrote it. + +## Viewing it + +GitHub's file view shows the HTML source, not the page. To see the page: + +- **On GitHub Pages**: in Settings → Pages, set Source to "Deploy from a branch", pick `main` and `/ (root)`, and save. + - A minute later the site is at . The `index.html` at the repo root redirects to . + - The old address, `…/docs/talk/`, redirects here too. + - The empty `.nojekyll` at the repo root makes Pages serve the files as they are. + - Online, the films stream from the `media` release. +- **From a clone**: open `docs/site/index.html` in Chrome. It reads the style samples and contact sheets from `../../styles` and `../../showcase`. + - With `tools/fetch_media.sh 00-promo 01-hand 02-short 03-math 04-intro` (about 320 MB, mostly the 103 s intro film), the films play from disk instead of streaming. + +## Languages + +The EN / 中 switch in the top bar changes the page in place. + +- **First visit**: the page follows the browser's language (Chinese for any `zh-*`, English otherwise). +- **Later visits**: the choice is remembered in `localStorage` (`ovh-lang`). +- **In a link**: `?lang=en` or `?lang=zh` picks the language for that link, e.g. `…/docs/site/?lang=zh` for a Chinese audience. + +To edit the text: + +- **Text on the page** is written twice, side by side: `……`. CSS shows the one that matches ``; without JavaScript the page is English. Change both, and keep the same markup (``, ``, ``) in each. +- **Section names** in the side rail come from each section's `data-en` / `data-zh`. +- **Labels that are attributes** (`aria-label`) come from `data-aria-en` / `data-aria-zh`. +- **Strings the script writes** are in `T` at the top of the script: the f(t) readout and check, the copy buttons, chart dates, captions. The style names are in `STYLES`, as `[folder, English, Chinese]`. + +## Optional material + +All of it is optional. The page works without any of it. + +- **WeChat QR**: save it as `docs/site/img/wechat.jpg`. The "Say hi on WeChat" card then appears next to the GitHub QR in the Contact section; without the file the card stays hidden. Committing the image makes it public with the repo. +- **Douyin and Bilibili links**: paste them into the two empty `href=""` in the "In practice" section. Left empty, the names show without a link. +- **A local film**: a file at `docs/site/media/nobel.mp4` shows up as a player in "In practice". Git ignores that folder, so the player appears only on your machine, never online. + +## Where the numbers come from + +- **Pull requests**: 75 in the first 11 days, opened 2026-09-29 to 2026-10-09 (UTC). 72 came from `claude/` branches and 3 from Dependabot. Source: the repo's pull request list, read on 2026-10-10. The per-day chart (`PER_DAY`) and the ticker (`PRS`) come from the same list; update all three together. +- **Counts of things in the repo**: 9 video types, 13 playbook docs, 11 templates, 31 styles, 24 shot recipes. Source: `video-types/`, `playbook/`, `templates/`, `styles/`, `bin/vh recipes list`. +- **The films**: + - the intro film: 103 s; a Blender opening of 1.18 million stars over 475 frames; 124 sound effects; + - the four other films. + + Source: `showcase/*/README.md`. +- **Community films**: 389, with their prompts. Source: `cases/opus55-gallery.md`. +- **Checks**: the 20-point checklist and the 8 review scores. Source: `templates/TASTE_CHECKLIST.md`. +- **The FAQ's answers**: requirements, cost, times, limits and the A/B result. Source: `README.md` and `docs/research/06-concept-first-ab.md`. +- **The author's own account**: the Nobel explainer, its timing, and the Douyin and Bilibili channels. + +## How it is built + +- **Assets**: one HTML file with inline CSS and JS. Fonts come from Google Fonts; offline, and for Chinese, it uses the system's fonts. `img/` holds five poster frames from the showcase films (`ffmpeg -ss … -frames:v 1`). +- **The galaxy**: the opening galaxy draws the 31 style posters on a canvas, with no randomness (positions come from a seeded hash). +- **The f(t) panel**: it draws its frame as a pure function of `t`. Its "Render it again" button redraws that frame right after another one and compares every pixel. +- **Motion**: it stops when a section is off screen, and `prefers-reduced-motion` turns it off. diff --git a/docs/talk/img/00-launch.jpg b/docs/site/img/00-launch.jpg similarity index 100% rename from docs/talk/img/00-launch.jpg rename to docs/site/img/00-launch.jpg diff --git a/docs/talk/img/01-clawd.jpg b/docs/site/img/01-clawd.jpg similarity index 100% rename from docs/talk/img/01-clawd.jpg rename to docs/site/img/01-clawd.jpg diff --git a/docs/talk/img/02-doppler.jpg b/docs/site/img/02-doppler.jpg similarity index 100% rename from docs/talk/img/02-doppler.jpg rename to docs/site/img/02-doppler.jpg diff --git a/docs/talk/img/03-fourier.jpg b/docs/site/img/03-fourier.jpg similarity index 100% rename from docs/talk/img/03-fourier.jpg rename to docs/site/img/03-fourier.jpg diff --git a/docs/talk/img/04-intro.jpg b/docs/site/img/04-intro.jpg similarity index 100% rename from docs/talk/img/04-intro.jpg rename to docs/site/img/04-intro.jpg diff --git a/docs/site/index.html b/docs/site/index.html new file mode 100644 index 0000000..5b89e50 --- /dev/null +++ b/docs/site/index.html @@ -0,0 +1,1796 @@ + + + + + +OpenVideoHarness · A video harness for Claude Code and Codex + + + + + + + + + + + + + + + + + + + + + + +
+ OpenVideoHarness + + + + + GitHub + + +
+ +
+ + +
+ + +
+

A video harness for Claude Code and Codex给 Claude Code 和 Codex 用的视频工作台

+

OpenVideo
Harness

+

Not more tools. Know-how.不缺工具,缺门道。

+

Ask for a film in one sentence. The agent writes the code that renders it, from the idea, storyboard, script and style to the sound and the final cut. It checks its own work, and stops three times for your sign-off.一句话提需求,agent 写代码渲染成片:立意、分镜、脚本、风格、声音,一直到成片。它自己检查自己,并在三个节点停下来,等你拍板。

+ +
    +
  • Written by Claude由 Claude 编写
  • +
  • MIT · open source开源
  • +
  • 9 video types9 类视频
  • +
  • 31 styles31 种风格
  • +
  • 5 engines5 个引擎
  • +
+
+

Every star is a film: the 31 style samples, in orbit每颗星都是一支片子:31 种风格的样片

+ +
+ + +
+
+
+

01Get started快速开始

One line to install. One sentence to ask.一行命令安装,一句话提需求。

+
+
+
+
    +
  1. Install (macOS or Linux)安装(macOS 或 Linux)

    $ curl -fsSL https://raw.githubusercontent.com/ZLHad/OpenVideoHarness/main/install.sh | bash
  2. +
  3. Open Claude Code in it进入目录,打开 Claude Code

    $ cd ~/OpenVideoHarness && claude
  4. +
  5. Ask for a film一句话提需求

    +
    “Make a 30-second vertical science short: why does a low-orbit satellite's signal change pitch? English voiceover, English and Chinese subtitles.”
    +
    “做一个 30 秒的竖屏科普:为什么低轨卫星的信号会‘变调’。中文配音,中英双语字幕。”
    +
  6. +
+

Needs macOS or Linux, Node.js 22+, Chrome, FFmpeg, Python 3 with uv, and Claude Code or Codex. About 590 MB on disk, with 30 read-only reference repos.需要 macOS 或 Linux、Node.js ≥ 22、Chrome、FFmpeg、Python 3 和 uv,以及 Claude Code 或 Codex。连同 30 个只读的参考仓库,约占 590 MB。

+
+
+

What happens next接下来

+
    +
  1. ① Directions and outline① 创意方向和大纲Two or three ideas, each with one frame. You pick one.两三个创意方向,各配一帧画面,你选一个。
  2. +
  3. ② Storyboard② 分镜A keyframe for every shot.每个镜头一张关键帧。
  4. +
  5. ③ First draft③ 初版With the two or three things it likes least about it.附上它自己最不满意的两三处。
  6. +
  7. Final render出成片Only after you say yes.你点了头才出。
  8. +
+
+
quickno stops · 10–30 min不停 · 10–30 分钟
+
standardthree stops · 1–2 h停三次 · 1–2 小时
+
studiopolished over rounds · 3 h+多轮打磨 · 3 小时以上
+
+

Times are for a 30-second film. Say "quick" and it runs straight through.时间按 30 秒的片子算。说"快速出一版",它就一口气做完。

+
+
+
+
+ + +
+
+
+

02Why it exists为什么做它

+

One great film is easy. Every time is hard.做出一支好片不难,每次都好才难。

+

Claude Opus 5.5 writes video as code, and it has taste: in motion, in type, in pacing. The community has shared hundreds of these films; one collection alone holds 389, with their prompts.Claude Opus 5.5 能用代码写视频,而且有审美:运动、字体、节奏都在线。社区里已经有几百支这样的片子,光一个合集就收了 389 支,连同提示词。

+

But the same model can be brilliant once, then lose the pacing, glow everything and invent numbers the next time. Engines like HyperFrames and Remotion turn code into frames. They don't choose the idea, the storyboard, the script or the style, and can't tell whether the film is any good.可同一个模型,这次惊艳,下次就节奏乱、满屏发光、数字乱编。HyperFrames、Remotion 这些引擎负责把代码变成画面;立意、分镜、脚本、风格它们不管,片子好不好也判断不了。

+

OpenVideoHarness is the missing layer: the process and the checks, from idea to final cut, written as docs an agent follows. It stays light on purpose: a few hard floors, and defaults that a good idea can overrule.OpenVideoHarness 补的就是这一层:从立意到成片的流程和检查,写成 agent 能照着做的文档。它故意写得很轻:几条底线不让步,其余都是默认,好点子可以反着来。

+
+
+
You你one sentence · three sign-offs一句话 · 拍板三次
+
Claude Codeor Codex · writes the code, with taste或 Codex · 写代码,有审美
+
+
OpenVideoHarnessthe know-how门道
+
  1. Idea立意
  2. Storyboard分镜
  3. Script脚本
  4. Style风格
  5. Sound声音
  6. Checks自查
  7. Final cut成片
+
+

drives驱动 ↓

+
+
Engines引擎turn code into frames把代码变成画面
+
HyperFramesRemotionManimp5.brushBlender
+
+
+
+
+ + +
+
+
+

03What it adds它补上了什么

An engine renders. This decides.引擎只管渲染,这里拿主意。

+
+
+
01

Idea first先想立意

Two or three concept cards, each with one frame and a hook, before a line of code. It names what every other video on the topic looks like, and steers away.写代码之前,先出两三张立意卡,每张配一帧画面和一个钩子。它会先说出同题视频都长什么样,然后避开。

playbook/12-ideation.md
+
02

Nine workflows九类工作流

Science shorts, 3Blue1Brown-style explainers, launch films, music videos, data stories, paper talks, hand-drawn shorts, meme edits, and edits of your own footage.科普短视频、3Blue1Brown 风格讲解、产品发布片、MV、数据故事、论文讲解、手绘短片、梗图快剪,还有剪你自己录的素材。

video-types/
+
03

You decide, three times三次由你拍板

Direction, storyboard, first draft. Name anything else you want to own: the hook, the style, the voice, the cover. Or say "quick" and it runs straight through.创意方向、分镜、初版。还想亲自定别的,点名就行:钩子、风格、配音、封面。说"快速出一版",它就一口气做完。

CLAUDE.md · director mode
+
04

It checks its own work自己检查自己

Claude can't watch video. So it reads contact sheets against a 20-point checklist, measures the audio, and a second Claude with a fresh context scores the draft on 8 points.Claude 看不了视频,所以它看联系表、对照 20 条清单改,用数据查声音;再由一个全新上下文的 Claude 按 8 项给初版打分。

templates/TASTE_CHECKLIST.md
+
05

Sound, as code声音也是代码

Chinese and English voiceover, two-language subtitles, a score and 21 sound effects written as code, every cue on its frame, mixed to −14 LUFS.中英配音、双语字幕,配乐和 21 个音效都用代码写,每个卡点落在它那一帧,混音到 −14 LUFS。

bin/vh tts · music · sfx · mix · qa
+
+
+ 06

Every frame is f(t)每一帧都是 f(t)

+

No randomness, no clock, no state carried between frames. Same t, same pixels, so any frame renders alone, in parallel, in any order, and can be checked. Drag the slider, then render the frame again.不用随机数、不读时钟、帧与帧之间不留状态。同一个 t 永远是同一帧,所以任何一帧都能单独渲染、并行渲染、乱序渲染,也能抽查。拖动滑块,再把这一帧重渲一遍试试。

+ CLAUDE.md · hard rule 1 +
+
+ +
+ + +
+
+
t = 0.00 s · frame 01 sine wave
+ +
+
+
+
+
07

31 styles, and Blender31 种风格,外加 Blender

A style library to borrow from, each with a rendered sample. And when a shot needs real glass or a million stars, Claude drives Blender from Python.风格库可以借来用,每种都带实际渲染的样片。要真玻璃、上百万颗星时,Claude 写 Python 驱动 Blender。

styles/ · engines/blender.md
+
+
+
+ + +
+
+
+

04How it works工作原理

A router, a library of know-how, one CLI.一个路由,一套门道,一个命令行。

+
+
+
+
You你one sentence, in English or Chinese一句话,中文英文都行
+ +
Claude Codeor Codex或 Codex
+ +
CLAUDE.mdthe router: picks the video type, sets the hard rules, the effort level and who decides what路由:判断视频类型,定下硬规则、档位,以及哪些事由谁拍板
+
+
+
+

Reads读 know-how, written as markdown写成 markdown 的门道

+
+
video-types/9 workflows9 类工作流
+
playbook/13 know-how docs13 篇通用知识
+
styles/31 styles31 种风格
+
recipes/24 shot recipes24 个镜头配方
+
templates/11 project files11 个项目模板
+
cases/ showcase/case studies, films案例拆解、样片
+
+
+
+

Runs跑 one CLI, five engines一个命令行,五个引擎

+
bin/vhnew · tts · music · sfx · mix · qa · check · review · desk
+ +
HyperFramesManimRemotionp5.brushBlender
+
+
+
+
Each film is a project folder:每支片子是一个项目目录: projects/<date>-<slug>/you decide你拍板Claude checks itselfClaude 自查a request, moving through一条需求走过的路
+
    +
  1. Idea立意2–3 concept cards2–3 张立意卡
  2. +
  3. ① You① 你pick one选一张
  4. +
  5. Storyboard分镜what to read, when看懂什么、何时
  6. +
  7. ② You② 你keyframes关键帧
  8. +
  9. Sound first声音先行sets the timing定下时长
  10. +
  11. Code → frames代码 → 画面f(t)
  12. +
  13. Self-check ↺自查 ↺sheets · audio · reviewer联系表 · 声音 · 评审
  14. +
  15. ③ You③ 你first draft初版
  16. +
  17. Final cut成片
  18. +
  19. LESSONS.md ↩back into the docs写回文档
  20. +
+
+
+
+
+ + +
+
+
+

05The intro film · 103 s · with sound介绍片 · 103 秒 · 有声

Made by Claude, with the harness itself.Claude 用这套工作台,做了它自己的介绍片。

+
+
+ +
+ + +
+
+
+ + + + + + +
+
+

The opening is path-traced in Blender, driven by Python: 1.18 million stars, 475 frames. HyperFrames and Three.js take over from 15 s. The score and 124 sound effects are code too.开场由 Python 驱动 Blender 路径追踪:118 万颗星,475 帧。15 秒起交给 HyperFrames 和 Three.js。配乐和 124 个音效也是代码写的。

+
+
+
+ + +
+
+
+

06Showcase · hover to preview, click for sound作品 · 悬停预览,点击带声音播放

Each from one sentence.每一支,都从一句话开始。

+
+ + +
+
+
+
+ + Contact sheet of the science short + contact sheet联系表 +
Vertical science short竖屏科普Why does a low-orbit satellite's signal change pitch?为什么低轨卫星的信号会"变调"?HyperFrames · 24.8 s · 1080×1920 · Chinese voice, two-language subtitlesHyperFrames · 24.8 秒 · 1080×1920 · 中文配音,双语字幕
+
+
+ + Contact sheet of the math explainer + contact sheet联系表 +
Math explainer, 3Blue1Brown style数学讲解,3Blue1Brown 风格Building a square wave from sine waves用正弦波搭出方波Manim · 25 s · English narrationManim · 25 秒 · 英文旁白
+
+
+ + Contact sheet of the hand-drawn short + contact sheet联系表 +
Hand-drawn short手绘短片Clawd tries to film a falling autumn leafClawd 想拍下一片飘落的秋叶p5.brush · 12 s · no words, score and foleyp5.brush · 12 秒 · 无台词,配乐和拟音
+
+
+ + Contact sheet of the launch short + contact sheet联系表 +
Launch short发布短片A short launch film for OpenVideoHarness itself给 OpenVideoHarness 自己做的发布短片HyperFrames · 20 s · a sound for every moveHyperFrames · 20 秒 · 每个动作都有声音
+
+ + Every film ships with its paper trail每支片子都附带完整的制作记录 +
    +
  • README · the request, word for word原始需求,一字不改
  • +
  • BRIEF.md · STORYBOARD.md
  • +
  • NOTES.md · LESSONS.md
  • +
  • all the source, to start a similar film全部源码,可以照着做一支
  • +
+ showcase/ ↗ +
+
+
+
+ + +
+
+
+

07Style library · click one to hear it风格库 · 点开能听声音

31 styles. Not one default look.31 种风格,不再千篇一律。

+

Left alone, AI video drifts to one look: dark background, glow, glass cards. Each style here is a real 5-second render of the same content.放任不管,AI 视频会趋向同一张脸:暗底、发光、玻璃卡片。这里每种风格都是同一段内容的 5 秒实渲样片。

+
+
+
+
+ + +
+
+
+

08Built with Claude和 Claude 一起做的

Written by Claude.这个仓库,是 Claude 写的。

+
+
+
+
+
75pull requests in the first 11 days头 11 天的 PR
+
72from claude/ branches, opened by Claude Code来自 claude/ 分支,由 Claude Code 提交
+
3from Dependabot来自 Dependabot
+
+
+
Pull requests opened per day (UTC)每天新开的 PR(UTC)ClaudeDependabot
+
+
+
+

We bring the taste and the decisions. Claude writes the rest.我们出审美、做决定,其余交给 Claude。

+
+
+
+
CLAUDE.mdhard rules硬规则
+
## Hard rules## 硬规则
+
    +
  1. Every frame is a pure function of t.每一帧都是 t 的纯函数。
  2. +
  3. With sound, the audio sets the length.有声音时,音频决定时长。
  4. +
  5. Storyboard before code.先分镜,后代码。
  6. +
  7. Check every scene: sheets, strips, crops.每个场景都要自查:联系表、逐帧条、特写。
  8. +
  9. Facts are copied from the source, never invented.事实照抄原文,绝不编造。
  10. +
  11. Only change things in projects/.只在 projects/ 里改东西。
  12. +
  13. No API keys in files.不在文件里写 API key。
  14. +
+
+
+ its own branch→tools/ci.sh before each push→a draft PR→the maintainer merges +
+
+ 自己的分支→推送前跑 tools/ci.sh→草稿 PR→维护者合并 +
+
+
+
+
+
+ + +
+
+
+

09In practice真实使用

+

Used for real, on the news cycle.真的在用,还赶得上热点。

+

The author publishes films made with OpenVideoHarness on Douyin (TikTok in China) and Bilibili.作者把用 OpenVideoHarness 做的片子发在抖音和 B 站。

+ + +
+ +
+
+
+
Nobel Prize in Physics announced诺贝尔物理学奖公布explainer out科普片发出
+
≈3hours小时
+

From the announcement of the 2026 Nobel Prize in Physics to a published science explainer, made with the harness.从 2026 年诺贝尔物理学奖公布,到一支用这套工作台做的科普片发出来。

+
+
+
+ + +
+
+
+

10FAQ常见问题

Good questions, straight answers.常见问题,一次说清。

+ More in the wiki更多见 Wiki ↗ +
+
+
+
+ How is this different from just asking an agent?和直接让 AI 做有什么不同? +
An agent alone has taste but no process: nothing tells it to settle the idea before code, to check its frames, or to stop for you. We ran one small blind comparison: the workflow's films had the fresher ideas, while the floors-only films were judged better made, and what the reviewer flagged went into the checks. The process aims to save rework; that saving hasn't been measured yet. The comparison ↗单靠 agent,有审美,但没有流程:没人让它先定立意再写代码、检查自己的帧、停下来等你。我们做过一次小的盲评:按流程做的点子更新,只守底线做的被评为做工更好;评审指出的问题后来都补进了检查。流程想省的是返工,这一点还没有量过。实验记录 ↗
+
+
+ What does it cost?要花多少钱? +
Rendering, music and sound effects run locally and cost nothing. What costs money is the agent itself (a Claude Code or Codex subscription, or API usage), plus any cloud voice or generated video you choose, billed by that provider. Keys are always read from environment variables.渲染、配乐、音效都在本地跑,不花钱。要花的是 agent 本身(Claude Code 或 Codex 的订阅或 API 用量);接云端配音或生成式视频时,按各家收费。key 一律从环境变量读。
+
+
+ How long does a film take?做一支要多久? +
For a 30-second film: about 10–30 minutes at quick, 1–2 hours at standard, 3 hours or more at studio. Most of the time goes into checking and fixing. All three levels deliver a full-quality film; the level sets how often it stops and how many review rounds it runs.30 秒的片子:快出档 10–30 分钟,标准档 1–2 小时,精品档 3 小时以上,大部分时间花在自查和返工上。三档出的都是正式画质的成片,档位管的是中途停几次、审几轮。
+
+
+ What do I need?需要什么环境? +
macOS or Linux, Node.js 22+, Google Chrome, FFmpeg, Python 3 with uv, and Claude Code or Codex. The local voice needs Apple Silicon (a cloud voice doesn't), formulas need LaTeX, and only 3D shots need Blender 5.2. Windows is untested.macOS 或 Linux、Node.js ≥ 22、Google Chrome、FFmpeg、Python 3 和 uv,以及 Claude Code 或 Codex。本地配音要 Apple Silicon(换云端配音就不用),公式要 LaTeX,只有 3D 镜头才要 Blender 5.2。Windows 没有测过。
+
+
+ Does it work with Codex?能用 Codex 吗? +
Yes. AGENTS.md carries the same instructions as CLAUDE.md, and the installer registers the open-video-harness skill for both Claude Code and Codex, so asking for a video from any folder finds the workbench.能。AGENTS.md 和 CLAUDE.md 内容相同;安装时 open-video-harness skill 会同时注册给 Claude Code 和 Codex,之后在任何目录说"做个视频",都能找到这里。
+
+
+
+
+ Which languages does it speak?支持哪些语言? +
Chinese and English. Voiceover runs on the local, open-source Qwen3-TTS by default, with cloud voices as options, and subtitles come in either language or both. Ask in either language; the review pages follow yours.中文和英文。配音默认用本地开源的 Qwen3-TTS,也能接云端配音;字幕可以出中文、英文或双语。需求用哪种语言都行,审阅页跟着你的语言走。
+
+
+ Can it make films with real people?能做真人、实拍感的片子吗? +
Realistic people and a live-action look need generated video; the playbook shows how to combine generated clips with code-drawn overlays. Editing footage you shot yourself (talking heads, interviews, vlogs) is type 09, still experimental.写实人物、实拍感要靠生成式视频,playbook 里有一套"生成式视频 + 代码叠加"的做法。剪你自己录的素材(口播、访谈、Vlog)是第 09 类,还在试验。
+
+
+ What can't it do yet?现在还做不到什么? +
The agent can't watch or listen. It reads rendered frames and audio measurements, so the last look and listen are yours. The full workflow has only been run on macOS (Apple Silicon), and type 09 hasn't been tried on real footage yet.agent 看不了视频、听不了声音,只能看渲染出的帧、读声音的数据,所以最后一关还是要你看、你听。目前只在 macOS(Apple Silicon)上完整跑过,第 09 类剪辑还没用真实素材试过。
+
+
+ Is it an Anthropic project?是 Anthropic 官方项目吗? +
No. It's an independent open-source project under the MIT license, not affiliated with Anthropic, HeyGen or Remotion. Claude wrote most of it: 72 of the first 75 pull requests came from Claude Code.不是。这是独立的开源项目,MIT 许可,和 Anthropic、HeyGen、Remotion 都没有隶属关系。大部分代码由 Claude 写:头 75 个 PR 里有 72 个来自 Claude Code。
+
+
+ How can I contribute?怎么参与? +
Pull requests are welcome: new video types, styles with their samples, case studies, lessons from your projects, and films you made with it, with everything that went into them. CONTRIBUTING.md ↗欢迎提 PR:新的视频类型、带样片的风格、案例拆解、项目里踩过的坑,以及你用它做的片子和全部制作过程。CONTRIBUTING.md ↗
+
+
+
+
+
+ + +
+
+
+

11Contact联系

Questions or ideas? Get in touch.有问题或想法?来聊聊。

+

Star the repo, add the author on WeChat, or send a film you made with it.给仓库点个 Star,加作者微信,或者把你用它做的片子发过来。

+
+
+
+
+

Star it on GitHub在 GitHub 上点 Star

+
+ ZLHad/OpenVideoHarness + Open source · MIT开源 · MIT +
+ +
+

Say hi on WeChat微信聊聊

+
WeChat QR code
+ Scan to add the author扫码加作者 +
+
+ zhangczssx@gmail.com questions, ideas, films问题、想法、片子 +
+ +
+ Not more tools. Know-how.不缺工具,缺门道。 + + This page was written by Claude, too. An independent project, not affiliated with Anthropic.这个页面也是 Claude 写的。独立项目,与 Anthropic 没有隶属关系。 +
+
+
+ +
+ + + + + + + diff --git a/docs/talk/README.md b/docs/talk/README.md deleted file mode 100644 index 488a24f..0000000 --- a/docs/talk/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# A five-minute demo of OpenVideoHarness - -`index.html` is the project's one-page site, and the page for presenting it in about five minutes: how to start, why it exists, what it adds, the architecture, the intro film, the films it made, the style library, who wrote it, how the author uses it, and how to get in touch. Claude wrote the page and the script below. - -## Viewing it - -GitHub's file view shows the HTML source, not the page. To see the page: - -- **On GitHub Pages** (a public link that stays): after this is on `main`, open Settings → Pages, set Source to "Deploy from a branch", pick `main` and `/ (root)`, and save. A minute later the page is at . The empty `.nojekyll` at the repo root makes Pages serve the files as they are, without a Jekyll build. Online, the films stream from the `media` release. -- **On your own machine** (best for the talk itself): from a clone, `git checkout` this branch (or `main` once merged), fetch the films as below, and open `docs/talk/index.html` in Chrome. - -## Before the talk - -1. Open the page from a clone of the repo: it reads the style samples and contact sheets from `../../styles` and `../../showcase`. Chrome works best; `F` goes full screen. -2. Put the films on disk so nothing streams over the venue's network: - ```bash - tools/fetch_media.sh 00-promo 01-hand 02-short 03-math 04-intro # about 320 MB, mostly the 103 s intro film - ``` - Without them the page streams from the GitHub release. Press `N` on the film section: the notes say which source it is using. -3. Your own material, all optional: - - **WeChat QR**: save it as `docs/talk/img/wechat.jpg` and the "Say hi on WeChat" card appears next to the GitHub QR in the Contact section. Without the file the card stays hidden; with notes on, the page says it is missing. Committing the image makes it public with the repo. - - **Douyin and Bilibili links**: paste them into the two empty `href=""` in the "In the wild" section. - - **The Nobel explainer**: put the file at `docs/talk/media/nobel.mp4` (git ignores that folder) and a player shows up in the "In the wild" section. -4. Check the time once: `T` starts the timer, `R` resets it. - -## Keys - -| Key | Does | -|---|---| -| `→` `↓` `PgDn` (a clicker) | next section | -| `←` `↑` `PgUp` | previous section | -| `Space` | play or pause the film on the film section; next section elsewhere | -| `1`–`9`, `0` | jump to section 1–9, 10 | -| `Home` / `End` | the first / the last section (Contact) | -| `N` | speaker notes for the current section (and the film's source) | -| `T` / `R` | start or pause the timer / reset it | -| `F` | full screen | -| `?` | the key list | - -The notes panel is on the shared screen too, so turn it off before you present if the screen is mirrored. - -## The script (about 4.5 minutes, the film included) - -About 300 words of speech (2:20 at a relaxed pace) plus the 1:43 film. "Be done by" is when to move on. - -**1 · Title** (be done by 0:15) -> Hi everyone. This is OpenVideoHarness: a video workbench for Claude Code. -> Our motto: not more tools. Know-how. - -**2 · Get started** (0:30) -> First, how you use it: one line to install, then open Claude Code and ask for a video in one sentence. -> It stops three times for your sign-off: the direction, the storyboard, the first draft. - -**3 · Why** (1:05) -> It started with Opus 5.5. Its video code has real taste: motion, type, pacing. -> We already have great engines, like HyperFrames and Remotion. But an engine just renders frames. It doesn't give you the idea, the storyboard, the script, or the style. -> So I talked it through with Claude, and we built that missing layer: the whole workflow, from idea to final cut. - -**4 · Features** (1:30) *optional: drag the f(t) slider while you talk* -> What does it add? It starts with ideas, not code. It has nine workflows, one for each kind of video. -> And since Claude can't watch video, it checks its own frames and audio, and a second Claude scores the draft. - -**5 · Architecture** (1:50) -> The architecture is simple. Claude Code reads CLAUDE.md, our router. It picks a video type, pulls in the playbook, styles and templates, and drives the engines through one CLI. -> And every project writes its lessons back into the docs. - -**6 · The intro film** (3:40) *Space to play; the page dims while it plays* -> Here's our intro film. Claude made it with the harness itself. -> -> *(1:43 of film)* - -**7 · Works** (4:00) *click "What Claude sees" on the second sentence* -> A few more films, each from one sentence: a science short, a 3Blue1Brown-style explainer, and Clawd, hand-drawn. -> And this is what Claude sees when it reviews them: not video. Contact sheets. - -**8 · Styles** (4:08) *skip this line if you are short on time* -> Plus thirty-one styles to borrow from, so not every film looks the same. - -**9 · Built by Claude** (4:25) -> And the code? In nine days the repo got seventy-three pull requests. Seventy came from Claude. -> I bring the taste and the decisions. Claude writes the rest. - -**10 · In the wild** (4:42) -> I use it myself, too. I post films made with it on Douyin and Bilibili. -> When this year's Nobel Prize in Physics was announced, I had an explainer out about three hours later. - -**11 · Contact** (4:55) *leave the QR codes up for questions* -> It's open source. Scan the code to star it, or add me on WeChat. -> Thank you! - -## Where the numbers come from - -- 73 pull requests, 70 from `claude/` branches and 3 from Dependabot, opened 2026-09-29 to 2026-10-07 (UTC): the repo's pull request list, read on 2026-10-09. The per-day chart and the ticker come from the same list. -- 9 video types, 13 playbook docs, 11 templates, 31 styles, 24 shot recipes: `video-types/`, `playbook/`, `templates/`, `styles/`, `bin/vh recipes list`. -- The intro film (103 s; a Blender opening of 1.18 million stars over 475 frames; 124 sound effects) and the four other films: `showcase/*/README.md`. -- 389 community films with their prompts: `cases/opus55-gallery.md`. -- Twenty checks and eight review scores: `templates/TASTE_CHECKLIST.md`. Effort levels and their times: `README.md`. -- The Nobel explainer, its timing, and the Douyin and Bilibili channels are the author's own account. - -## How the page is built - -One HTML file with inline CSS and JS and no build step. Fonts come from Google Fonts; offline, it falls back to system fonts. The opening galaxy draws the 31 style posters on a canvas, with no randomness (positions come from a seeded hash). The f(t) panel draws its frame as a pure function of `t`, and its "Render it again" button redraws that frame right after another one and compares every pixel. Motion stops when a section is off screen, and `prefers-reduced-motion` turns it off. `img/` holds five poster frames taken from the showcase films (`ffmpeg -ss … -frames:v 1`). diff --git a/docs/talk/index.html b/docs/talk/index.html index 068a4f4..29ec62f 100644 --- a/docs/talk/index.html +++ b/docs/talk/index.html @@ -2,1683 +2,12 @@ - OpenVideoHarness - - - - - - - + + + + + - - - -
- OpenVideoHarness - - - - GitHub - - -
- -
- - -
- - -
-

A video workbench for Claude Code

-

OpenVideo
Harness

-

Not more tools. Know-how.

-

Ask for a film in one sentence. Claude takes it from the idea to the storyboard, script, style, sound and final cut, checks its own work, and stops for your sign-off on the way.

-
- Get started → - Watch the intro film - Written by Claude -
-
-

Every star is a film: the 31 style samples, in orbit

- -
- - -
-
-
-

01 Get started

One line to install. One sentence to ask.

-
-
-
-
    -
  1. Install (macOS or Linux)

    $ curl -fsSL https://raw.githubusercontent.com/ZLHad/OpenVideoHarness/main/install.sh | bash
  2. -
  3. Open Claude Code in it

    $ cd ~/OpenVideoHarness && claude
  4. -
  5. Ask for a film

    “Make a 30-second vertical science short: why does a low-orbit satellite's signal change pitch? English voiceover, English and Chinese subtitles.”
  6. -
-

Needs macOS or Linux, Node.js 22+, Chrome, FFmpeg, Python 3 with uv, and Claude Code or Codex.

-
-
-

What happens next

-
    -
  1. ① Directions and outlineTwo or three ideas, each with one frame. You pick one.
  2. -
  3. ② StoryboardA keyframe for every shot.
  4. -
  5. ③ First draftWith the two or three things it likes least about it.
  6. -
  7. Final renderOnly after you say yes.
  8. -
-
-
quickno stops · 10–30 min
-
standardthree stops · 1–2 h
-
studiopolished over rounds · 3 h+
-
-

Times are for a 30-second film. Say "quick" and it runs straight through.

-
-
-
-
- - -
-
-
-

02 Why we built it

-

It started with Opus 5.5.

-

Claude Opus 5.5 writes video as code, and it has taste: in motion, in type, in pacing. The community has shared hundreds of these films; one collection alone holds 389, with their prompts.

-

Great engines already exist, like HyperFrames and Remotion. But an engine only turns code into frames. It doesn't give you the idea, the storyboard, the script or the style, and it can't tell you whether the film is any good.

-

So I talked it through with Claude, and we built the missing layer: the whole workflow, from idea to final cut.

-
-
-
You one sentence · three sign-offs
-
Claude Code writes the code, with taste
-
-
OpenVideoHarness the know-how
-
  1. Idea
  2. Storyboard
  3. Script
  4. Style
  5. Sound
  6. Checks
  7. Final cut
-
-

drives ↓

-
-
Engines turn code into frames
-
HyperFramesRemotionManimp5.brushBlender
-
-
-
-
- - -
-
-
-

03 What it adds

An engine renders. This decides.

-
-
-
01

Idea first

Two or three concept cards, each with one frame and a hook, before a line of code. It names what every other video on the topic looks like, and steers away.

playbook/12-ideation.md
-
02

Nine workflows

Science shorts, 3Blue1Brown-style explainers, launch films, music videos, data stories, paper talks, hand-drawn shorts, meme edits, and edits of your own footage.

video-types/
-
03

You decide, three times

Direction, storyboard, first draft. Name anything else you want to own: the hook, the style, the voice, the cover. Or say "quick" and it runs straight through.

CLAUDE.md · director mode
-
04

It checks its own work

Claude can't watch video. So it reads contact sheets against a 20-point checklist, measures the audio, and a second Claude with a fresh context scores the draft on 8 points.

templates/TASTE_CHECKLIST.md
-
05

Sound, as code

Chinese and English voiceover, two-language subtitles, a score and 21 sound effects written as code, every cue on its frame, mixed to −14 LUFS.

bin/vh tts · music · sfx · mix · qa
-
-
- 06

Every frame is f(t)

-

No randomness, no clock, no state carried between frames. Same t, same pixels, so any frame renders alone, in parallel, in any order, and can be checked. Drag the slider, then render the frame again.

- CLAUDE.md · hard rule 1 -
-
- -
- - -
-
-
t = 0.00 s · frame 01 sine wave
- -
-
-
-
-
07

31 styles, and Blender

A style library to borrow from, each with a rendered sample. And when a shot needs real glass or a million stars, Claude drives Blender from Python.

styles/ · engines/blender.md
-
-
-
- - -
-
-
-

04 Architecture

A router, a library of know-how, one CLI.

-
-
-
-
Youone sentence, any language
- -
Claude Codeor Codex
- -
CLAUDE.mdthe router: picks the video type, sets the hard rules, the effort level and who decides what
-
-
-
-

Reads know-how, written as markdown

-
-
video-types/9 workflows
-
playbook/13 know-how docs
-
styles/31 styles
-
recipes/24 shot recipes
-
templates/11 project files
-
cases/ showcase/case studies, films
-
-
-
-

Runs one CLI, five engines

-
bin/vhnew · tts · music · sfx · mix · qa · check · review · desk
- -
HyperFramesManimRemotionp5.brushBlender
-
-
-
-
Each film is a project folder: projects/<date>-<slug>/you decideClaude checks itselfa request, moving through
-
    -
  1. Idea2–3 concept cards
  2. -
  3. ① Youpick one
  4. -
  5. Storyboardwhat to read, when
  6. -
  7. ② Youkeyframes
  8. -
  9. Sound firstsets the timing
  10. -
  11. Code → framesf(t)
  12. -
  13. Self-check ↺sheets · audio · reviewer
  14. -
  15. ③ Youfirst draft
  16. -
  17. Final cut
  18. -
  19. LESSONS.md ↩back into the docs
  20. -
-
-
-
-
- - -
-
-
-

05 The intro film · 103 s · with sound

Made by Claude, with the harness itself.

-
-
- -
- - -
-
-
- - - - - - -
-
-

The opening is path-traced in Blender, driven by Python: 1.18 million stars, 475 frames. HyperFrames and Three.js take over from 15 s. The score and 124 sound effects are code too.

-

checking the film's source…

-
-
-
- - -
-
-
-

06 Films it made · hover to preview, click for sound

Each from one sentence.

-
- - -
-
-
-
- - Contact sheet of the science short - contact sheet -
Vertical science shortWhy does a low-orbit satellite's signal change pitch?HyperFrames · 24.8 s · 1080×1920 · Chinese voice, two-language subtitles
-
-
- - Contact sheet of the math explainer - contact sheet -
Math explainer, 3Blue1Brown styleBuilding a square wave from sine wavesManim · 25 s · English narration
-
-
- - Contact sheet of the hand-drawn short - contact sheet -
Hand-drawn shortClawd tries to film a falling autumn leafp5.brush · 12 s · no words, score and foley
-
-
- - Contact sheet of the launch short - contact sheet -
Launch shortA short launch film for OpenVideoHarness itselfHyperFrames · 20 s · a sound for every move
-
- - Every film ships with its paper trail -
    -
  • README · the request, word for word
  • -
  • BRIEF.md · STORYBOARD.md
  • -
  • NOTES.md · LESSONS.md
  • -
  • all the source, to start a similar film
  • -
- showcase/ ↗ -
-
-
-
- - -
-
-
-

07 Style library · click one to hear it

31 styles. Not one default look.

-

Left alone, AI video drifts to one look: dark background, glow, glass cards. Each style here is a real 5-second render of the same content.

-
-
-
-
- - -
-
-
-

08 Who wrote it

Written by Claude.

-
-
-
-
-
73pull requests in 9 days
-
70from claude/ branches, opened by Claude Code
-
3from Dependabot
-
-
-
Pull requests per day (UTC)ClaudeDependabot
-
-
-
-

I bring the taste and the decisions. Claude writes the rest.

-
-
-
-
CLAUDE.mdhard rules
-
## Hard rules
-
    -
  1. Every frame is a pure function of t.
  2. -
  3. With sound, the audio sets the length.
  4. -
  5. Storyboard before code.
  6. -
  7. Check every scene: sheets, strips, crops.
  8. -
  9. Facts are copied from the source, never invented.
  10. -
  11. Only change things in projects/.
  12. -
  13. No API keys in files.
  14. -
-
-
- its own branch→tools/ci.sh before each push→a draft PR→I merge -
-
-
-
-
-
- - -
-
-
-

09 In the wild

-

I make films with it, too.

-

I post films made with OpenVideoHarness on Douyin (TikTok in China) and Bilibili.

- - -
- -
-
-
-
Nobel Prize in Physics announcedexplainer out
-
≈3hours
-

From the announcement of this year's Nobel Prize in Physics to a published science explainer, made with the harness.

-
-
-
- - -
-
-
-

10 Contact

Questions or ideas? Get in touch.

-

Star the repo, add me on WeChat, or send me a film you made with it.

-
-
-
-
-

Star it on GitHub

-
- ZLHad/OpenVideoHarness - Open source · MIT -
- -
-

Say hi on WeChat

-
WeChat QR code
- Scan to add me -
-
- zhangczssx@gmail.com questions, ideas, films -

WeChat QR not found: save it as docs/talk/img/wechat.jpg

-
- -
- Not more tools. Know-how. - This page was written by Claude, too. An independent project, not affiliated with Anthropic. -
-
-
- -
- - -
1 / 110:00 / 5:00
- -
→ next · N notes · T timer · ? keys
- - - - - +

The page has moved: OpenVideoHarness

diff --git a/index.html b/index.html new file mode 100644 index 0000000..3fa2b9c --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + +OpenVideoHarness + + + + + + +

OpenVideoHarness

+