iwork-studio 是一个开源项目,旨在让 AI 安全地编辑 Apple iWork 套件文件,包括 Numbers 电子表格、Keynote 演示文稿和 Pages 文档。它提供 MCP 服务器、Python 库以及面向 Claude 和其他 MCP 客户端的智能体技能包。
用途
该工具的核心用途是让 AI 智能体在可控、可验证、可回滚的前提下操作 iWork 文件。它支持从数据生成设计感演示文稿、应用品牌设计套件、编辑表格与公式、导出为 PowerPoint 或 PDF 等。同时,它特别强调阿拉伯语和 RTL(从右到左)文本的安全处理。
主要能力
- 设计套件:内置六套设计套件,每套包含拉丁与阿拉伯语字体对(均随 macOS 提供,无需额外安装)、经过 WCAG 对比度检查的克制配色以及字号层级。可通过
keynote_build_deck(..., kit="midnight")直接构建,或用keynote_apply_design、numbers_apply_design重新设计现有文件。 - 品牌提取:
iwork_extract_design_kit可从已有演示文稿或表格中读取字体(拉丁与阿拉伯语)和颜色,保存为命名套件;也可用iwork_save_design_kit直接保存颜色与字体。 - 幻灯片中的 Numbers 数据:
keynote_build_deck中的幻灯片可携带图表或表格,数据可来自 Numbers 表格,表头行作为列、首列作为行。表格会应用套件的表头带、字体、斑马纹和右对齐数字,且每个单元格都会被回读验证。 - 设计审查:
keynote_review_deck通过 Keynote 渲染演示文稿,将每条绘制线与文本框对比:文本超出幻灯片或超出文本框为错误;Keynote 被迫缩小文本、文本框重叠、文本小于 18pt 以及幻灯片过于拥挤为警告。keynote_slide_image可将幻灯片导出为图片,供智能体在确认完成前查看。 - 文件操作:支持预览任何更改(
dry_run)、查询元数据、获取预览缩略图、用 Spotlight 查找文件、检查单词是否可见渲染、检查渲染后的字体/字号/颜色、列出备份和撤销。 - 阿拉伯语支持:阿拉伯语文本在三个应用中均可精确往返,包括演讲者备注、Pages 占位符和 Pages 表格单元格。
使用方式
安装通过 uvx 完成,安装器会在需要时设置 uv,uv 自带 Python。推荐用 --roots 限制可访问的文件夹,例如 --roots ~/Documents ~/Desktop。其他客户端可设置 IWORK_STUDIO_ROOTS 环境变量(用 : 分隔)。
可选地减少加载的工具集:设置 IWORK_STUDIO_TOOLSETS=keynote,design(可选值:files、numbers、keynote、pages、design,默认全部)。Claude Desktop 扩展有 Toolsets 字段;在 Claude Code 中可用 claude mcp add iwork-studio -e IWORK_STUDIO_TOOLSETS=keynote,design -- uvx --from iwork-studio@latest iwork-studio-mcp .。能力、读取、查找、撤销和套件列表始终加载。
首次运行时,macOS 会询问一次是否允许 Claude 控制 Keynote / Pages / Numbers,点击“好”即可。可在系统设置 → 隐私与安全性 → 自动化中调整。
卸载:uvx --from iwork-studio@latest iwork-studio-mcp uninstall。
使用示例包括:用英文或阿拉伯语直接提问,如“把 iWork Studio 示例复制到桌面,并将 sample-sales.numbers 变成董事会演示文稿”;“为太阳能板初创公司构建 6 页 pitch deck,使用 midnight 套件,带演讲者备注,并导出为 PowerPoint”;“把 sales.numbers 变成董事会演示文稿:按季度绘制图表,列出顶级地区表格,使用我们的 Acme 套件”;“从 brand.key 提取字体和颜色,保存为 Acme 套件”;“审查 pitch.key,修复任何溢出或过小的内容”;“让 budget.numbers 用 banking 套件看起来专业——先给我预览”;“把 sales.csv 变成 Numbers 文件,表头加粗、青色填充,B 列显示为 SAR 两位小数,并添加合计行”;“在 pitch.key 中切换到 Gradient 主题,第 1 页标题白色 60pt,每页之间添加溶解过渡,最后一页放 logo.png”;“在第 4 页添加 2025 和 2026 年季度收入柱状图”;“复制第 3 页,把副本移到最前,添加演讲者备注:ملاحظات المتحدث”;“填写 offer-letter.pages 中的 Name 和 Date 字段,然后导出为密码保护的 PDF”;“在 invoice.pages 表格中,把 B3 的数量设为 12,让 D9 成为 D2:D8 的合计”;“找到我本周的 Keynote 演示文稿,每个都导出为 PowerPoint”;“撤销对 budget.numbers 的最后一次更改”。
安全模型
iWork 应用可能会对刚损坏的文件说“已保存”,因此该工具不信任“已保存”。
- 先备份:版本化且私有,存放在
~/.iwork-studio/backups/(或IWORK_STUDIO_BACKUP_DIR),绝不放在文件旁边,避免备份填满或同步 iCloud 桌面和文档。每个文件保留最近 10 个版本。 - 不绕过应用:如果文件已在 Numbers、Keynote 或 Pages 中打开,写入会被拒绝,因为应用的下次保存会悄悄覆盖更改。
- 重读并对比:确认恰好发生了请求的更改,且没有其他变化。单元格编辑会回读编辑的单元格并检查其他所有单元格;行插入检查新位置上的每个单元格;幻灯片操作检查其他每张幻灯片;排序检查是否为纯重排,并在表格公式读取其他行时提前拒绝。有图表的文件会前后计数每个图表;有表格的演示文稿会对比每个表格的单元格。导出会用第二个独立工具回读。
- 原子替换:文件一步替换,崩溃不会留下半个文件。
- 撤销只需一次调用:
iwork_list_backups→iwork_restore_backup。恢复前会先备份当前版本,因此撤销也可撤销。 - 先预览:每个更改现有文档的写入都接受
dry_run=true(恢复和导出除外)。它在一次性副本上运行真实更改并执行所有检查,显示确切会改变什么,不触碰原文件。 - 查找替换保留格式:在 Pages 中,只重写包含该文本的段落。
- 新文件绝不覆盖现有文件。
- 拒绝而非破坏:最坏情况是明确的“不”,绝不是损坏的文件。
适用场景
- 需要让 AI 智能体安全地批量编辑或生成 iWork 文件,同时保留可回滚能力。
- 需要从数据快速生成设计感演示文稿或表格,并应用品牌规范。
- 需要处理阿拉伯语或 RTL 文本的 iWork 文档。
- 需要将 iWork 文件导出为 PowerPoint 或 PDF,并确保导出结果可验证。
- 需要设计审查,自动发现幻灯片中的溢出、过小文本等问题。
限制
- 图表文件:不依赖应用的工具会拒绝含图表的文件,因为重写可能悄悄破坏图表与数据的链接。应用驱动的工具(Keynote 幻灯片、主题、过渡、图片;Numbers 公式和排序)可处理它们,并检查每个图表仍在。
- Numbers 和 Pages 中的图表无法创建:它们无法可靠脚本化,工具选择拒绝而非点击应用菜单冒险。Keynote 图表可以添加。
- Pages 仅限文本和现有表格:可替换、设置正文、占位符和表格单元格。无法创建新表格(Pages 15 不支持脚本化),页面布局文档(如大多数信件模板)没有正文文本。没有 Pages 文件格式解析器,工具不会伪造一个。
- 公式和行移动:在有公式的表格中,不依赖应用时只能追加行和列,中间插入会导致引用指向错误单元格。
- Apple 不支持脚本化的功能不提供:Numbers 表格样式、Keynote 形状填充和文本对齐、删除 Keynote 表格、编辑主题母版幻灯片。页边距和页面设置计划中。
- 平台限制:除纯 Python 工具外,其余需要 Mac 且已登录会话,驱动真实应用(经典 iWork 或 Creator Studio 应用)。
- 首次运行权限和模板选择对话框会阻塞所有脚本调用,预检会将挂起转为清晰提示。
- 不要将仓库放在 iCloud Drive 中,同步会在 .git 内创建“main 2”副本。
其他
项目采用 MIT 许可证。提供 AGENTS.md(面向任何智能体的设置和使用规则)、MCP 指令(服务器连接时发送规则)、技能包(skill-pack/SKILL.md,Claude Code 自动发现,或其他技能型智能体用 bash skill-pack/install.sh 安装)、llms.txt(机器可读摘要)。契约是 JSON 输入、JSON 输出,错误类型化并说明该告诉用户什么。