Communitygithub.com

Angles

从屏幕录制或截图中制作平静、摄影风格的产品视频(慢速相机移动、近距离和倾斜角度、真实屏幕外观、柔和对焦),并使用 Angles Studio 在本地渲染。适用于演示视频、产品镜头、发布短片和“样机视频”。

Angles 是什么?

Angles 是一款专注于生成“电影感”产品视频的本地 AI 工具,适合制作高质量的演示视频、产品展示或发布短片。它通过一个简单的 JSON 配置文件 (spec.json) 描述所有视觉参数,并直接输出最终视频。其工作流程为“先检查,后生成”:用户可以在 spec.json 中定义多个变体 (variants),通过 `check` 命令快速生成一张包含所有变体静态帧的缩略图进行对比,挑选最佳方案后,再执行一次 `make` 命令生成最终视频。这种方法避免了多次渲染来比较视觉效果,将工作流从“试错型”转变为“精确型”。该工具集成了各种镜头风格 (如 close, raking, float)、运动强度 (从 still 到 bold) 以及丰富的后期效果 (如背景、阴影、焦距、按键叠加) 等细微控制。它依赖于 Chrome、ffmpeg、Node.js 18+ 和 Python3,并在本地 8790 端口自托管一个 Web 服务来支持其内部处理。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/HansEngebretsen/angles/tree/main

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Angles 是做什么的?

编写一个小的 JSON 规范,运行一个命令,然后读取一行 JSON 输出。不要打开或编辑 Studio;该规范足以表达它可以制作的所有内容,并且它会拒绝任何无法处理的内容。

node <this folder>/angles.mjs check spec.json   # ~5 秒,无视频:一张图片,每个变体一行显示 4 帧
node <this folder>/angles.mjs make spec.json    # mp4(宽 1920,每秒钟视频约需 4 秒处理时间)+ 一张图片
  1. 先检查再制作. 将您正在权衡的选项放在 variants 中。一次 check 会在一个小的图像中将它们全部显示为带标签的行。查看该图片,选择一行,然后用该行的字段合并到 spec 中(并删除 variants)执行一次 make。不要渲染视频来比较外观。
  2. 查看图片,不要看 mp4. 读取它打印的 sheet 路径。这足以判断构图、角度和对焦。
  3. 如果 ok: false,仅修复 warnings 中指出的问题. 它们列出了有效的选择。node angles.mjs schema 会在需要时打印出所有选择。不要猜测。
{ "source": "~/Desktop/demo.mov", "out": "~/Desktop/angles", "trim": { "in": 2, "out": 8 },
  "look": "bright", "background": "mist", "shadow": "soft",
  "variants": [{ "style": "close", "level": "gentle" }, { "style": "raking" }, { "style": "float" }] }
字段值
source录制文件 (.mov .mp4 .webm) 或截图 (.png .jpg)。录制的文件会被切分成帧并复用(使用 --fresh 重新处理)。
styleclose, raking(近距离真实角度);float, angle, flyby, focus, push, reveal, rise, tiltshift
levelstill, whisper (默认), gentle, lively, bold。每个都是一个速度预算,相机运动会适应它。speed ≤ budget 表示平静。
trim, loop, aspect{ "in": s, "out": s };true 将使结尾交叉淡入开头;16:9 (默认), 1:1, 9:16, 任意 W:H
beats在一个剪辑中使用多种风格:[{ "at": 0, "style": "float" }, { "at": 4, "style": "close" }]
look, lookAmountbright, crisp grain, glossy, sunlit, pixel macro, cool studio, film print, none;0–1
background, shadowmist linen sky sage blush dusk 或 #hex;none soft close float
focus{ "at": s, "u": 0–1, "v": 0–1, "size": 30 }。省略 u/v 可以对录制内容变化的地方进行对焦。
overlays[{ "at": 1, "dur": 1.5, "keys": ["⌘", "K"] }] 或 { "text": "…" }:相机顶部的标记
ease, dir, travelsteady soft settle constant;left right;0–2 (默认 .8)

品味:微妙更佳(whisper 或 gentle),每个剪辑一个创意(一种风格,或两三个 beats),并且修剪 3–8 秒并以动作结束。

需要 Chrome、ffmpeg、node 18+ 和带有 numpy 和 pillow 的 python3;在此文件夹中运行 npm i 一次。它将自身托管在端口 8790 上(设置 ANGLES_PORT 以更改端口)。

相关技能