cli-anything-inkscape 是做什么的?
用于矢量图形编辑的状态化命令行界面,遵循与 GIMP 和 Blender CLI 相同的模式。直接操作 SVG(XML)文档,并使用 JSON 项目格式进行状态追踪。
安装
该 CLI 作为 cli-anything-inkscape 包的一部分安装:
pip install cli-anything-inkscape
先决条件:
- Python 3.10+
- 系统上必须安装 Inkscape
用法
基本命令
# 显示帮助
cli-anything-inkscape --help
# 启动交互式 REPL 模式
cli-anything-inkscape
# 创建新文档
cli-anything-inkscape document new -o project.json
# 使用 JSON 输出运行(用于代理消费)
cli-anything-inkscape --json document info -p project.json
REPL 模式
当不带子命令调用时,CLI 将进入交互式 REPL 会话:
cli-anything-inkscape
# 交互式输入命令,支持 Tab 自动补全和历史记录
您也可以使用不存在的项目路径启动 REPL。CLI 现在会在内存中创建一个新文档,而不是立即失败:
cli-anything-inkscape --project /abs/path/new-title.inkscape-cli.json
命令组
文档
文档管理命令。
| 命令 | 描述 |
|---|---|
new | 创建新文档 |
open | 打开现有项目 |
save | 保存当前项目 |
info | 显示文档信息 |
profiles | 列出可用的文档配置文件 |
canvas-size | 设置画布大小 |
units | 设置文档单位 |
json | 打印原始项目 JSON |
形状
形状管理命令。
| 命令 | 描述 |
|---|---|
add-rect | 添加矩形 |
add-circle | 添加圆形 |
add-ellipse | 添加椭圆 |
add-line | 添加线条 |
add-polygon | 添加多边形 |
add-path | 添加路径 |
add-star | 添加星形 |
remove | 按索引删除形状 |
duplicate | 复制形状 |
list | 列出所有形状/对象 |
get | 获取形状的详细信息 |
文本
文本管理命令。
| 命令 | 描述 |
|---|---|
add | 添加文本元素;支持 --box-width、--box-height 和 --line-height 用于带换行的布局 |
set | 设置文本属性(text、font-family、font-size、fill、box-width、box-height、line-height 等) |
list | 列出所有文本对象 |
样式
样式管理命令。
| 命令 | 描述 |
|---|---|
set-fill | 设置对象的填充颜色 |
set-stroke | 设置对象的描边颜色(以及可选的宽度) |
set-opacity | 设置对象的不透明度(0.0-1.0) |
set | 在对象上设置任意样式属性 |
get | 获取对象的样式属性 |
list-properties | 列出所有可用的样式属性 |
变换
变换操作(平移、旋转、缩放、倾斜)。
| 命令 | 描述 |
|---|---|
translate | 平移(移动)对象 |
rotate | 旋转对象 |
scale | 缩放对象 |
skew-x | 水平倾斜对象 |
skew-y | 垂直倾斜对象 |
get | 获取对象当前的变换 |
clear | 清除对象上的所有变换 |
图层
图层管理命令。
| 命令 | 描述 |
|---|---|
add | 添加新图层 |
remove | 按索引删除图层 |
move-object | 将对象移动到不同图层 |
set | 设置图层属性(名称、可见性、锁定、不透明度) |
list | 列出所有图层 |
reorder | 将图层从一个位置移动到另一个位置 |
get | 获取图层的详细信息 |
路径组
路径布尔运算命令。
| 命令 | 描述 |
|---|---|
union | 两个对象的并集 |
intersection | 两个对象的交集 |
difference | 两个对象的差集(A 减 B) |
exclusion | 两个对象的排除(异或) |
convert | 将形状转换为路径 |
list-operations | 列出可用的路径布尔运算 |
渐变
渐变管理命令。
| 命令 | 描述 |
|---|---|
add-linear | 添加线性渐变 |
add-radial | 添加径向渐变 |
apply | 将渐变应用于对象 |
list | 列出所有渐变 |
导出组
导出/渲染命令。
| 命令 | 描述 |
|---|---|
png | 将文档渲染为 PNG |
svg | 将文档导出为 SVG |
pdf | 将文档导出为 PDF(需要 Inkscape) |
presets | 列出导出预设 |
会话
会话管理命令。
| 命令 | 描述 |
|---|---|
status | 显示会话状态 |
undo | 撤销上一次操作 |
redo | 重做上一次撤销的操作 |
history | 显示撤销历史 |
示例
创建新项目
创建一个新的 Inkscape 项目文件。
cli-anything-inkscape document new -o myproject.json
# 或者使用 JSON 输出以便程序化使用
cli-anything-inkscape --json document new -o myproject.json
交互式 REPL 会话
启动一个支持撤销/重做的交互式会话。
cli-anything-inkscape
# 交互式输入命令
# 使用 'help' 查看可用命令
# 使用 'undo' 和 'redo' 进行历史导航
导出项目
将项目导出为最终输出格式。
cli-anything-inkscape --project myproject.json export pdf output.pdf --overwrite
带换行的文本布局
对于标题卡片、徽章和竖屏安全面板,优先使用带自动换行的文本框,而不是手动插入换行符:
cli-anything-inkscape --project title.json text add \
--text "Real capture + Veo cold open + Gemini score + thumbnail plate" \
--x 180 --y 470 --font-size 118 \
--box-width 1180 --box-height 260 --line-height 1.05
cli-anything-inkscape --project title.json text set 0 box-width 980
cli-anything-inkscape --project title.json text set 0 line-height 1.15
注意:
box-width将长文本自动换行为多行导出的 SVGtspan行。box-height让长文本在超出画布时安全失败。- 在手动断行之前,优先使用带自动换行的文本框处理长文本图形。
状态管理
CLI 通过以下方式维护会话状态:
- 撤销/重做:最多 50 级历史记录
- 项目持久化:将项目状态保存/加载为 JSON
- 会话追踪:追踪修改和变更
输出格式
所有命令都支持双输出模式:
- 人类可读(默认):表格、颜色、格式化文本
- 机器可读(
--json标志):结构化的 JSON,供代理使用
# 人类可读输出
cli-anything-inkscape project info -p project.json
# JSON 输出(用于代理)
cli-anything-inkscape --json project info -p project.json
用于 AI 代理
当以编程方式使用此 CLI 时:
- 始终使用
--json标志 以获取可解析的输出 - 检查返回码 - 0 表示成功,非零表示错误
- 解析 stderr 以获取失败时的错误消息
- 对所有文件操作使用绝对路径
- 导出操作后验证输出文件是否存在
- 优先使用带自动换行的文本框 处理标题和可变长度文本,以确保布局在编辑过程中保持稳定
更多信息
- 完整文档:参见包内的 README.md
- 测试覆盖率:参见包内的 TEST.md
- 方法论:参见 cli-anything-plugin 中的 HARNESS.md
版本
1.0.1