文章正文

我给 Claude 的不是一条提示词,而是一份工作说明。现在,一张图片就能变成由代码构建的 3D 作品;Claude 会对照图片检查作品,并拍摄它自行拆解的过程。下面是任务说明、检查清单和全部提示词。
Theraphos TH-8:跑入画面并从跳跃中落地,玻璃腹部打开,露出发光的线圈;整只蜘蛛炸开后迅速重新组装,最后跳向镜头。
第一次让 Claude 在没有任何参考的情况下制作一只机器动物时,我得到的是一个千篇一律的玩具。
这只捕鸟蛛也是同一个模型做出来的。变化的是输入:一张 ChatGPT 图片,以及一份工作说明,而不是一条提示词。
Serrasal PX-7:张着嘴游入画面,下颌连同玻璃獠牙朝镜头落下;整条鱼炸开,镜头绕它环绕,最后它扑向镜头。
这条食人鱼有两排玻璃獠牙,玻璃侧腹下是传动齿轮,尾柄可以伸缩,眼睛藏在愤怒的眉弓下。每个部件都是一个按钮,按下后,对应部件就会拆开。
这里的每只动物都始于一张 ChatGPT 图片。Claude 用 three.js 将它重新构建。这里没有下载的 3D 模型:每一片外壳、每个齿轮和每颗獠牙都是用代码写出来的。
动物只是我首先尝试的对象。同一份文件适用于任何具有密集机械核心的东西:发动机、无人机、相机或手表。
这周我开始制作了 9 种动物,完成了 5 种。飞蛾、圣甲虫、苍蝇和九头蛇没有完成。
让这 5 个作品成功的是一份文件。我不再写提示词,而是给 Claude 写了一份工作说明:作品应该是什么样、镜头放在哪里、在我看到结果之前要检查什么,以及最重要的一条规则:我同意之前,不拍摄任何视频。
文末我会把这一切作为免费的 Claude Code skill 分享出来:工作说明、检查清单、全部提示词,以及其中 3 种动物的代码,让你可以自己构建和拆解。
你将制作什么
每个作品都要经过相同的 6 个部分:
- 参考图 一张来自 ChatGPT 的图片。它只确定外观,不承担其他作用。
- 工作说明 Claude 在每次构建前都会读取的一份文件。
- 检查清单 用 10 到 12 条编号说明这张图片的关键特征,每张图都要有一份新清单。
- 静帧 摆出与参考图相同姿态的一帧图像,逐条评分,至少进行 3 轮。
- 页面 对象放在中央,配上标题、每个部件各一个按钮,以及周围实时变化的卡片。
- 视频 约 21 秒:每隔 2 到 3 秒拆开一个部件,然后整体炸开并退场。发布用的 10 秒版本有自己的脚本。
你需要什么
- Claude Code,使用 Opus 5.5。
- ChatGPT,用来生成参考图。
- Node.js 20 或更新版本,以及用于视频和声音的 ffmpeg 与 Python 3。如果你提出要求,Claude Code 会安装它们。
第 1 步:生成参考图
一只作为精密机械的机器[锤头鲨],在接近白色的背景前拍摄棚内产品照,地面有柔和阴影。白色高光外壳带清漆,绿色只用于尖端、边缘、轮廓线和关节环。密集的深色机械结构透过开口和透明玻璃显露:齿轮、活塞、软管和小螺丝。眼睛是带细绿色环的亮黑色镜片。鳍和薄膜呈乳白色磨砂质感,带细脉络。从正面四分之三角度拍摄,主体完整入画。
这张图只是外观目标。Claude 不会导入它,而是读取它并自行构建。把主体换成任何东西都可以:[摩托车发动机]、[相机无人机]和[机械手表]都能使用同一条提示词。
选择关节多、核心结构密集的主体。光滑表面效果不好:一整片长长的白色外壳,无论改多少轮,看起来都像玩具。
如果主体是生物,就只给它一组主要肢体:触手、腿或翅膀。我在生成图片前就淘汰了飞行章鱼和蝎子鱿鱼。翅膀与触手在同一个半秒里争抢动作,只会造成视觉噪声。
第 2 步:编写工作说明
将下面的内容保存为项目中的一个文件,并在每次构建前让 Claude 读取。
提示词译文(下方保留原文)
你将根据参考图,完全用代码和 three.js 构建机器物体与生物。
外观:
- 带清漆和环境贴图的白色外壳
- 绿色只作少量点缀:尖端、边缘、轮廓线、表圈和关节环;绝不要在外壳上撒点
- 深色机械结构分两层:大部件(齿轮、环和执行器)及约 260 个小部件(活塞、软管、螺丝和线缆);在外壳上开窗,让深色结构显露
- 眼睛是带细绿色边框和小瞳孔的亮黑色镜片
- 薄膜呈乳白色磨砂质感,带细脉络
- 每根肢体都有自己的姿态和分段长度,绝不是一排相同部件
- 刚毛和尖刺又细又短:为肢体厚度的 0.15 到 0.25 倍
- 每个生物只有一组主要肢体
- 接近白色的摄影棚,地面有柔和阴影
顺序:
1. 先测量参考图:将主要比例(高度、头部、下颌或肢体长度)表示为总长度的比例。
2. 构建对象并渲染一张与参考图姿态相同的静帧。
3. 并排放置参考图、你的静帧和已通过的静帧,逐条将清单评为通过、部分通过或不通过。对照图片评分,不要凭你对构建过程的记忆评分。
4. 每轮再检查一项:缩略图大小时,它看起来是否与已通过的静帧一样密集?
5. 测量对象画面中深色像素的占比,将你的结果与参考图比较;低于参考值的 0.8 倍即不通过。
6. 第 2 轮后停下并展示给我。得到我同意后才能拍摄。
镜头:
- 第 0 帧是正面四分之三的主视觉,对象足够大且已经开始运动
- 每次拆解都使用各自的方位、高度和距离,对准正在拆解的部件,并在部件保持打开时推进:微距拍眼睛、从后方拍尾部、从上方拍背部、从下方拍下颌
- 正在打开的部件始终留在画面内;对象的其余部分可以出画
- 只用平滑路径:镜头绝不模仿翅膀拍动或脚步
- 可见的翅膀拍动保持缓慢,为 1.5 到 2.5 Hz
当我纠正你时,将修正写入这个文件。
You build robotic objects and creatures from a reference image, in three.js, entirely in code.
The look:
- white shells with clearcoat and an environment map
- green as a sparse accent only: tips, rims, edge lines, a bezel, joint rings; never dots sprinkled over a shell
- dark mechanism in 2 levels: big parts (gears, rings, actuators) and about 260 small ones (pistons, hoses, screws, wiring); cut windows into the shells so the dark mass shows
- eyes as glossy black lenses with a thin green bezel and a small pupil
- membranes milky and frosted with thin veins
- every limb has its own pose and segment lengths, never a row of identical parts
- bristles and spikes thin and short: 0.15 to 0.25 of the limb's thickness
- one main set of limbs per creature
- near-white studio, soft floor shadow
The order:
1. Measure the reference first: its main proportions (height, head, jaw or limb length) as shares of its length.
2. Build the object and render one still posed like the reference.
3. Put the reference, your still and an approved still side by side and grade every line of the checklist: yes, partial or no. Grade against the picture, not against what you remember building.
4. Grade one more line every round: at thumbnail size, does it look as dense as the approved still?
5. Measure it: the share of dark pixels in the object's frame, yours against the reference's. Below 0.8 of it is a no.
6. Stop after round 2 and show me. The film waits for my yes.
The camera:
- frame 0 is the front 3/4 hero view, the object big and already moving
- every teardown gets its own side, height and distance, aimed at the part itself, pushing in while it hangs open: an eye in macro, a tail from behind, a back from above, a jaw from below
- the part being opened stays in view; the rest of the object may run off the frame
- smooth paths only: the camera never copies a wing beat or a footstep
- visible wing beats stay slow, 1.5 to 2.5 Hz
When I correct you, the correction goes into this file.
有 3 句话最关键。“对照图片评分”让自检保持诚实;“得到我同意后才能拍摄”意味着不会把 token 浪费在拍摄玩具上;“把纠正写进这个文件”能让第 5 次构建不再重复第 1 次的错误。
第 3 步:为这张图片编写检查清单
工作说明适用于每次构建,检查清单则只针对一张图片。写第一行代码之前就把清单写好:这张图依靠哪些关键特征成立?用读者可以核对的编号逐条写出。
我的捕鸟蛛清单共有 12 条,下面是其中 4 条:
提示词译文(下方保留原文)
1. 一只沉重的蜘蛛伏在 8 条粗壮、向外伸展的腿上,头朝镜头,大腹部在头部后上方隆起。镜头从略高处拍正面四分之三视角。
2. 头下有两颗弯曲的大獠牙,颜色深,尖端发出绿色光芒,是画面前方最亮的点缀。
5. 腹部由白色弧形带构成的框架支撑透明玻璃板,绿色线圈透过玻璃发光。绝不能是实心白色外壳。
7. 腿上遍布细黑色刺杆,每节 10 到 20 根,向外伸展。缩略图大小时应看起来像毛发。
1. A heavy spider low on 8 thick legs spread wide, head toward the camera, the big abdomen rising behind and above the head. Front 3/4 from slightly above.
2. Two large curved fangs under the head, dark with glowing green tips, the brightest accents at the front of the frame.
5. The abdomen is a white frame of curved bands holding panes of CLEAR glass, with green coils glowing through. Never a solid white shell.
7. Thin black spike rods all along the legs, 10 to 20 per segment, pointing outward. They read as hair at thumbnail size.
第 5 条有意用了“绝不”一词。没有它,玻璃会变成又一片白色外壳,因为白色外壳是默认选择。
第 7 条是我会重新写的一条。它只说细,却没说有多细。结果刚毛变成了刺,长度是应有的两倍。解决办法是给出数字:腿部厚度的 0.15 到 0.25 倍。从那以后,每次修正都写成包含数字的一句话。
第 4 步:运行静帧循环,然后亲自评分
提示词译文(下方保留原文)
读取工作说明和这份检查清单。构建[捕鸟蛛]并循环:
1. 渲染一张 1600×900、姿态与参考图相同的静帧。
2. 将参考图、你的静帧和已通过的静帧并排放置,再提供同一组合宽 900 像素的缩略图。
3. 逐条将检查清单评为通过、部分通过或不通过,每条一行。
4. 先修复不通过项,再修复部分通过项。
第 2 轮后停下,向我展示对照图和评分。第 3 轮之前等待我的意见。
Read the job description and this checklist. Build the [tarantula] and loop:
1. Render a still at 1600×900 posed like the reference.
2. Stack the reference, your still and the approved still side by side, plus a thumbnail of the same stack 900 px wide.
3. Grade every checklist line yes, partial or no, one line each.
4. Fix the no's, then the partials.
Stop after round 2 and show me the stack and the grades. Wait for my notes before round 3.
然后自己对照图片评分,而不是凭记忆评分。
这个原则对我自己也一样。我误以为苍蝇的眼睛太繁杂,要求缩小镜片,结果头部变成了迪斯科球。参考图上的镜片本来就很大;是我看错了。
第 5 步:测量,不要目测
飞蛾、九头蛇和苍蝇都给自己的密度评了合格,但这 3 个作品看起来都像干净的白色示意图。飞蛾改了 9 轮后,我放弃了它。
清单检查的是特征:眼睛、嘴和轮廓。它从不检查能看到多少机械结构。所以现在 Claude 会计算:
提示词译文(下方保留原文)
将参考图和你的静帧裁剪至对象的边界框。计算深色像素(亮度低于 80)的占比。你的占比必须达到参考图的 0.8 倍。将白色表面拆成独立外板,并在机械结构上方留出缝隙,以提高占比。添加圆点不算。
Crop the reference and your still to the object's bounding box. Count the share of dark pixels (luma under 80). Your share has to reach 0.8 of the reference's. Raise it by breaking white surfaces into separate plates with gaps over the mechanism. Adding dots doesn't count.
九头蛇测得的数值只有参考图的 0.57 倍。针对这个数字修改一轮后达到 0.80。苍蝇的外板之间有了真正的缝隙后,达到了 0.96。
比例也同样处理。食人鱼的第 2 轮通过了密度检查,看起来却仍像鳄鱼:下颌占身体长度的 0.52,而图片中约为 0.37。第 3 轮得到了从图片测出的 4 个数字:体高为长度的 0.55,头部为 0.44,下颌为 0.36,张口高度与下颌长度相同。最终下颌比例为 0.35。

食人鱼第 2 轮和第 3 轮:下颌分别占身体长度的 0.52 和 0.35。
第 6 步:保存每一次修正
以下是我在这一批作品中的笔记,每一条都写进了工作说明:
- 捕鸟蛛的刚毛看起来像刺。现在用数字规定刚毛的粗细。
- 要求整只章鱼始终入画,使镜头后退成俯视的平面画面,触手也蜷缩起来。现在只要求正在打开的部件留在画面内。
- 飞蛾看起来像示意图。现在测量密度,而不是凭感觉评分。
- 食人鱼看起来像鳄鱼。现在写第一行代码前就从图片测量比例。
- 飞行章鱼和蝎子鱿鱼各有两组肢体。现在每个生物只保留一组主要肢体。
- 镜头停在原地。食人鱼的第一部视频中,每次拆解都从同一侧 20° 到 50° 的角度、相同的高度和距离拍摄。现在每个节拍都从各自的一侧对准对应部件。
每出现一个错误,文件就增加一行。下一次构建从所有这些修正开始。
第 7 步:根据一套已通过的动作编排拍摄
提示词译文(下方保留原文)
取身体结构最接近本对象、且已通过的视频,按 1:1 移植:相同节拍时间、相同动作,距离按对象大小缩放。只改变身体。
将 5 个部件映射到 5 个位置:[眼睛、锤头、侧腹、下颌、胸鳍]。
每个部件约用 1 秒打开,保持打开且内部零件继续旋转,再用 0.5 秒关闭。每个部件使用自己的镜头:各自的方位和高度,对准部件,并在其保持打开时推进。
随后在转过 330° 的转台上整体炸开,边旋转边快速重新组装,然后退场。
围绕它构建页面:虚构产品名称和标题、每个部件一个由光标点击的胶囊按钮,以及随部件移动的实时卡片。
给我看视频之前,把 1.5、4.5 和 12.4 秒的画面与已通过的视频并排比较。如果看起来更小、更平或更模糊,就不能发布。
Take the approved film of the build whose body is closest to this one and port it 1:1: the same beat times, the same moves, distances scaled to the object. Change the body only.
Map its 5 parts onto the 5 slots: [the eye, the hammer, the flank, the jaw, the pectoral fin].
Each part opens in about 1 s, holds with its parts still spinning, and closes in 0.5 s. Give every part its own camera: its own side and height, aimed at the part, pushing in while it hangs open.
Then a full explode on a 330° turntable, a fast reassembly while it turns, and an exit.
Build a page around it: an invented product name and title, one pill button per part that a cursor clicks, live cards that move with the parts.
Before you show me the film, put its frames at 1.5, 4.5 and 12.4 s next to the approved film's. If it looks smaller, flatter or blurrier, it doesn't ship.
我为第一部玻璃章鱼视频套用了另一只动物的动作编排,又加了一条自己的规则:让整只章鱼始终入画。结果画面遥远而扁平,触手缩在一起,像个玩具。
Hyalos GX-8:喷射进入画面,玻璃头部升起并翻转;整只章鱼在转台上炸开,然后喷射离开。
第二部以一部先前的章鱼视频为模板 1:1 复用,只替换头部,就是上面这部。食人鱼也以同样方式借用了安康鱼的视频:相同的深厚躯体,以及从铰链处落下的下颌。
圣甲虫说明了这个教训的另一面。我做过的作品里没有类似的身体,所以它只能借用镜头,身体则从零构建。经过 4 轮、约 45 万 token,它看起来仍然杂乱而廉价。现在,如果一个主体没有相近的身体模板,就会在开始前标记出来。
第 8 步:剪掉无聊的部分,再编写短版本
整部视频只用一个文件:
{"duration": 21.2, "script": [
{"t": 3.0, "act": "optics"},
{"t": 5.7, "act": "hammer"},
{"t": 8.2, "act": "flank"},
{"t": 10.8, "act": "jaw"},
{"t": 13.3, "act": "exploded"},
{"t": 16.5, "act": "assemble"},
{"t": 17.7, "act": "hero"}]}
锤头鲨的鳍拆下来时歪了,那个节拍也很乏味,所以我删掉了 1 行。视频从 24 秒缩短到 21.2 秒。对象、页面和声音读取的是同一份脚本,因此重新剪辑只需修改一个文件并渲染一次。
发布时我需要 10 秒。最初的短版本是从完整视频中截取最忙碌的片段,再用交叉淡化拼接。它们在片段间跳来跳去,看起来很廉价。
现在短版本有自己的脚本:入场、一个部件、整体炸开、退场。
{"duration": 11.3, "film": 10.0, "script": [
{"t": 2.7, "act": "abdomen"},
{"t": 5.2, "act": "exploded"},
{"t": 7.0, "act": "assemble"},
{"t": 7.8, "act": "hero"},
{"t": 9.6, "act": "jump"}]}
捕鸟蛛的场景长 11.3 秒,以 1.13 倍速播放后正好是 10 秒。每部短片也都有自己的入场和退场,因此连续两部不会相似:黄蜂俯冲进入并从画面顶部飞出;捕鸟蛛跳入落地,再跳向镜头;章鱼喷射离开。
Vespion VX-9:从上方俯冲进入,一只翅膀从铰链处拉出并在空中翻转;整只黄蜂慢动作炸开,随后直线上升飞出画面。
本文中的每段视频都是这样的短片:10 秒,一镜到底。
第 9 步:渲染
提示词译文(下方保留原文)
逐帧渲染视频:render(t) 是时间的纯函数。以 1600×900、设备像素比 2.4 捕获,再用 Lanczos 缩小到 1920×1080、60 fps,编码为 H.264、yuv420p、faststart。
根据同一脚本用代码配乐并添加音效:整部视频使用音乐底,按钮各有轻微点击声,每个移动部件都有短促强调音。母带调整至 -14 LUFS。对于加速播放的短版本,先按场景脚本制作音效,再以相同倍率拉伸声音。
Render the film frame by frame: render(t) is a pure function of time. Capture at 1600×900 with a device pixel ratio of 2.4, downscale to 1920×1080 at 60 fps with lanczos, H.264, yuv420p, faststart.
Score it in code on the same script: a music bed for the whole film, a quiet click per button, a short accent on every part that moves. Master to -14 LUFS. For a short version played faster, score the scene's script and time-stretch the sound by the same factor.
GPU 负载过高时,录屏会丢帧;按时间逐帧定位的影片不会。先以 4K 渲染再缩小到 1080p,鳍上的细脉络仍然清晰。
附加建议:不要同时运行 4 个
每次构建都使用一个全新的 agent,并提供工作说明、参考图和检查清单。一个新 agent 比一次很长的对话成本低,因为长对话的每次调用都会携带此前所有内容。
但同时运行更多任务并不会更快。我并行运行了飞蛾、九头蛇、苍蝇和章鱼,直到各自第 6 轮后才查看。仅飞蛾就在被我放弃前消耗了约 43 万 token。一张静帧约需 40 万 token,一部视频还要 15 万到 40 万,因此审查太晚会很昂贵。
现在我一次只运行 2 个,并在第 2 轮后查看,因为这时一条意见仍能改变结果。
工作说明就在上面。换一张图片即可。
或者省去复制步骤。整个方法是一个免费的 Claude Code skill:工作说明、检查清单、全部提示词,以及可以自行构建、拆解和拍摄的捕鸟蛛、食人鱼与黄蜂代码。一条命令即可安装:
npx skills add Nyxera0x/cutaway -g -a claude-code
GitHub 上的免费 skill: https://github.com/Nyxera0x/cutaway