关于 iWork Studio
iWork Studio 是供 AI Agent 创建、读取、编辑和导出 Numbers、Keynote 与 Pages 文件的 MCP 服务。它通过备份、预览、重新读取校验和撤销来保护文件,并支持阿拉伯语及从数据生成演示文稿。
主要功能
- 01编辑 Numbers、Keynote 和 Pages
- 02从数据生成 Keynote 演示文稿
- 03设计套件与品牌样式
- 04渲染检查和变更预览
- 05备份、校验与撤销
- 06阿拉伯语和 RTL 支持
适用场景
- 01将 Numbers 表格制作成演示文稿
- 02按品牌样式调整表格或幻灯片
- 03检查演示文稿的溢出与可读性
- 04导出并撤销 iWork 文件变更
MCP 相关
作为 MCP 服务,向 AI 客户端提供 iWork 文件操作工具;可按应用选择工具集,并限制可访问的文件夹。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx iwork-studioIWORK_STUDIO_ROOTSFolders the server may touch, separated by ':' (recommended)IWORK_STUDIO_TOOLSETSLoad only some tools: comma-separated files, numbers, keynote, pages, design (default all)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
64收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
让 AI 安全编辑你的 Numbers、Keynote 和 Pages 文件。
根据你的数据和品牌设计演示文稿,并检查渲染效果。支持阿拉伯语。
每项更改都有备份、经过验证且可撤销;遇到任何风险操作都会拒绝,绝不猜测。
| 🛡️ 绝不损坏你的文件 | 🎨 根据你的数据设计 | ع 一流的阿拉伯语支持 |
|---|---|---|
| 备份 → 修改副本 → 重新读取并比较 → 原子替换。不会动正在打开的文件。一次调用即可撤销任何更改。 | 将电子表格转换为符合你品牌规范的 Keynote 演示文稿,包含图表和表格幻灯片,然后检查渲染效果。 | 在每款应用和每种导出格式中,阿拉伯语和从右到左的文本都能准确往返。 |
安装 · 试试看 · 安全机制 · 功能介绍 · 所有工具 · 面向 AI Agent · 更新日志
15 秒:数据 → 设计精美的演示文稿 → 安全回滚 → 阿拉伯语。高清视频
▶ 观看带声音的演示影片(46 秒)· 阅读发布故事
安装
| 你的应用 | 操作 |
|---|---|
| Claude 桌面应用,一键安装(Mac) | 从最新版本下载 iwork-studio-<version>.mcpb,双击打开,然后选择它可以使用的文件夹 |
| Claude 桌面应用(Mac,通过终端) | 在终端中粘贴:curl -LsSf https://raw.githubusercontent.com/Arkanji/iwork-studio/main/install.sh | sh,然后退出 Claude(Cmd-Q)并重新打开 |
| Claude Code,作为插件(工具 + 技能) | /plugin marketplace add Arkanji/iwork-studio,然后 /plugin install iwork-studio@iwork-studio |
| Claude Code,仅工具 | claude mcp add iwork-studio -- uvx --from iwork-studio@latest iwork-studio-mcp |
| Cursor、VS Code、Codex、任何 MCP 客户端 | uvx --from iwork-studio@latest iwork-studio-mcp config,然后将输出的 JSON 粘贴到客户端的 MCP 设置中。也已作为 io.github.Arkanji/iwork-studio 列入 MCP Registry |
就这么简单。安装程序会在需要时安装 uv,而 uv 自带 Python。
- 限制访问范围(推荐):
… | sh -s -- --roots ~/Documents ~/Desktop将访问范围限制在这些文件夹中。其他客户端:设置IWORK_STUDIO_ROOTS(以:分隔)。 - 减少加载内容(可选):只使用 Keynote?设置
IWORK_STUDIO_TOOLSETS=keynote,design(可选值为files、numbers、keynote、pages、design;默认全部启用)。工具越少,AI 越专注,上下文也越精简。Claude Desktop 扩展有一个 Toolsets 字段;在 Claude Code 中:claude mcp add iwork-studio -e IWORK_STUDIO_TOOLSETS=keynote,design -- uvx --from iwork-studio@latest iwork-studio-mcp。Capabilities、read、find、undo 和工具包列表始终会加载。 - **首次运行:**macOS 会询问一次是否允许 Claude 控制 Keynote / Pages / Numbers。点击 OK。(错过了?前往“系统设置” →“隐私与安全性” →“自动化”。)
- **检查是否正常:**询问 “iwork-studio 在这台 Mac 上能做什么?”。
- 移除:
uvx --from iwork-studio@latest iwork-studio-mcp uninstall
**正在为他人设置的 AI Agent?**选择适用于对方应用的那一行,运行命令,然后调用
iwork_capabilities。使用这些工具的规则请参阅AGENTS.md。
直接用英文或阿拉伯文提出需求
**手边没有文件?**可以这样说:“把 iWork Studio 示例复制到我的桌面,并将 sample-sales.numbers 制作成董事会演示文稿。” 示例是合成销售数据,包含英文和阿拉伯文工作表。
“使用 midnight 工具包,为一家太阳能电池板初创公司制作一份 6 页的路演演示文稿,添加演讲者备注,并导出为 PowerPoint。”
“把 sales.numbers 制作成董事会演示文稿:绘制各季度图表,添加地区销售额前列的表格,并使用我们的 Acme 工具包。”
“从 brand.key 中提取字体和颜色,并将其保存为我们的 Acme 工具包。”
“检查 pitch.key,并修复所有溢出或字号太小、难以阅读的内容。”
“用 banking 工具包美化 budget.numbers——并先给我看预览。”
“将 sales.csv 转成 Numbers 文件,把表头设为粗体、填充青绿色,将 B 列显示为 SAR,保留两位小数,并添加合计行。”
“在 pitch.key 中切换到 Gradient 主题,将第 1 张幻灯片的标题设为白色、60 pt,在每张幻灯片之间添加溶解转场,并将 logo.png 放到最后一张幻灯片。”
“在第 4 张幻灯片中添加一张柱状图,显示 2025 年和 2026 年各季度的收入。”
“复制第 3 张幻灯片,将副本移到最前面,并添加演讲者备注:ملاحظات المتحدث”
“填写 offer-letter.pages 中的 Name 和 Date 字段,然后将其导出为受密码保护的 PDF。”
“在 invoice.pages 的表格中,将 B3 的数量设为 12,并将 D9 设为 D2:D8 的合计。”
“找出我本周的 Keynote 演示文稿,并将每个文件都导出为 PowerPoint。”
“撤销对 budget.numbers 的上一次更改。”
功能
| Numbers | Keynote | Pages | |
|---|---|---|---|
| 读取 | 每张工作表、表格、单元格、公式和格式 | 每张幻灯片的文本、备注、布局、主题、样式和图表 | 正文文本、占位符和表格 |
| 创建 | 根据数据或 CSV 创建 ⚡ · 根据内置模板创建 · 根据自己的文件创建 | 根据大纲创建设计精美的演示文稿,其中包含图表和表格幻灯片(直接使用 Numbers 表格)· 根据内置主题创建 · 根据自己的演示文稿创建 | 根据内置模板创建 · 根据自己的文件创建 |
| 编辑内容 | 单元格 ⚡ · 公式 · 重新计算 · 插入/删除行和列 ⚡ · 添加表格和工作表 ⚡ · 排序 | 在整个演示文稿中查找/替换 ⚡ · 幻灯片标题和项目符号 · 添加、复制、删除、移动、隐藏幻灯片 · 演讲者备注 · 图像 · 图表 · 表格 | 全文替换 · 替换正文 · 填写占位符 · 表格单元格(文本、数字、公式) |
| 设计 | 设计套件 ⚡ · 品牌套件 ⚡ · 字体、颜色、填充、对齐、换行 ⚡ · 货币、%、日期、小数 ⚡ · 边框 ⚡ · 宽度和高度 ⚡ · 标题 ⚡ · 合并 ⚡ | 设计套件 · 品牌套件 · 主题 · 幻灯片布局 · 文本字体、大小和颜色 · 样式化表格 · 转场效果 | — |
| 审阅 | Keynote 渲染内容的设计审阅:文本超出幻灯片或其文本框、Keynote 被迫缩小的文本、重叠、小号文本、内容拥挤的幻灯片 · 将任意幻灯片导出为图像 | ||
| 导出 | PDF · Excel · CSV | PDF · PowerPoint · 图像 · 影片 | PDF · Word · EPUB · 文本 · RTF |
| 演示 | 开始、停止、下一张、上一张 |
⚡ = 随处可用,无需应用(纯 Python)。其他功能都需要在已登录会话的 Mac 上驱动实际应用,包括经典版 iWork 或 Creator Studio 应用。
支持所有文件类型: 在更改前预览(dry_run)、查询元数据、获取预览缩略图、使用 Spotlight 查找文件、检查某个词是否已实际渲染、检查渲染后的字体/大小/颜色、列出备份并撤销操作。
不支持的功能
这是有意为之,以免损坏文件:
- 包含图表的文件无法使用无需应用的工具处理:重写操作可能会在不提示的情况下破坏图表与其数据的关联。由应用驱动的工具(Keynote 幻灯片、主题设置、转场效果、图像;Numbers 公式和排序)可以处理这类文件,并会检查所有图表是否仍然存在。
- Numbers 和 Pages 中的图表无法创建:这些操作无法可靠地通过脚本实现,因此我们选择拒绝操作,而不是点击应用菜单并冒着损坏文件的风险。Keynote 可以添加图表。若要对排序后的数据创建图表,同时不改动 Numbers 图表,可将数据排序到新表格中(使用
numbers_sort的to_new_table),再据此创建 Keynote 图表幻灯片。 - Pages仅支持文本和现有表格:替换文本、设置正文、填充占位符和修改表格单元格。无法创建新表格(Pages 15 不支持脚本操作),而且页面布局文稿(例如大多数信件模板)没有正文文本。没有任何 Pages 文件格式解析器,因此不会假装有这样的解析器。
- 公式和行移位:含有公式的表格,只能在不使用应用的情况下追加行和列。在中间插入会导致引用指向错误的单元格。
- Apple 脚本不支持的功能,因此不提供:Numbers 表格样式、Keynote 形状填充和文本对齐、删除 Keynote 表格、编辑主题的母版幻灯片。页面边距和页面设置已列入计划。
不只是编辑,更是设计
六套设计套件能把普通的演示文稿或表格变成适合展示的作品:一组字体搭配(拉丁字母 + 阿拉伯字母,均已随 macOS 附带,无需安装)、经过 WCAG 对比度检查的克制配色,以及一套字号比例。
| 套件 | 风格 |
|---|---|
executive | 沉稳、商务:石板色中性色,搭配一种蓝色点缀 |
banking | 可信、厚重:深海军蓝,搭配克制的金色 |
classic | 正式报告与董事会风格:衬线标题,搭配海军蓝和琥珀色 |
teal | 清新、自信:深青色 |
analytics | 突出数据:亮蓝色,搭配琥珀色高光 |
midnight | 暗色舞台:近黑色幻灯片、白色标题、薄荷色点缀 |
使用一套套件构建(keynote_build_deck(..., kit="midnight"))、为任何内容重新设计样式(keynote_apply_design、numbers_apply_design),也可以用自己的品牌颜色和字体——系统会检查对比度。Agent 还可以使用设计指南:每张幻灯片表达一个想法、标题直陈要点、数字右对齐、配色克制。
一次设置品牌。 将已有品牌风格的演示文稿或表格交给 iwork_extract_design_kit,它会读取字体(拉丁字母和阿拉伯字母)与颜色,并将其保存为命名套件,可在任何支持套件的地方使用。也可以用 iwork_save_design_kit 直接保存颜色和字体。
幻灯片上的数字。 keynote_build_deck 中的幻灯片可以包含图表或表格,数据可以来自数据集,也可以直接取自 Numbers 表格:标题行定义列,第一列定义行。表格会应用套件的标题栏、字体、交替底色和右对齐数字,并读取回每个单元格。
它会检查自己的工作。 keynote_review_deck 会通过 Keynote 渲染演示文稿,并将每一行绘制内容与对应的文本框进行比较:文本超出幻灯片或溢出文本框属于错误;Keynote 为适应文本而缩小字号、文本框重叠、字号低于 18 pt 以及幻灯片内容过于拥挤属于警告。keynote_slide_image 会将幻灯片作为图像返回,让 Agent 在说“完成”前先检查效果。
安全模型
iWork 应用会轻易地对一个刚被它弄坏的文件说“已保存”。这里绝不相信“已保存”。
backup → change a scratch copy → re-open it and compare → atomic swap
↘ anything off: your file is untouched, the error says why
- 先备份,备份带版本且仅供本地使用:存放于
~/.iwork-studio/backups/(或IWORK_STUDIO_BACKUP_DIR),绝不放在文件旁边,以免备份占满或同步到 iCloud Desktop 和 Documents。每个文件保留最近 10 份备份。 - 绝不绕过应用直接修改:如果文件已在 Numbers、Keynote 或 Pages 中打开,就会拒绝写入。否则应用下次保存时可能会悄悄覆盖更改。
- 重新读取并比较:确认只发生了请求的更改,没有其他改动。编辑单元格后会重新读取该单元格,并检查所有其他单元格。插入行后会检查新位置上的每个单元格。幻灯片操作会检查所有其他幻灯片。排序会检查是否只是重新排列;如果表格公式引用了其他行,就会提前拒绝操作,因为 Numbers 自带的排序会破坏公式。对于含图表的文件,会在操作前后统计所有图表;对于含表格的演示文稿,会比较所有表格的单元格。导出内容会由第二个独立工具重新读取。
- 原子替换:文件一次性替换,因此即使崩溃也不会留下不完整的文件。
- 绝不相信应用的“正常”反馈。 应用执行的写入会从磁盘重新读取;如果写入显示“成功”却未实际生效,就会回滚。
- 一次调用即可撤销:
iwork_list_backups→iwork_restore_backup。恢复前会先备份当前版本,因此撤销操作也可以撤销。 - 先预览:所有会更改现有文档的写入都需要设置
dry_run=true(恢复和导出除外)。它会在临时副本上执行实际更改并运行所有检查,准确展示将要发生的变化。你的文件不会受到影响。 - 查找和替换会保留格式:在 Pages 中,只会重写包含目标文本的段落。
- 新文件绝不覆盖已有文件。
- 宁可拒绝,也不损坏。 最坏的结果只是明确说“不”,绝不会弄坏文件。
阿拉伯语与 RTL
- 阿拉伯语文本在三个应用中都能精确往返,包括演讲者备注、Pages 占位符和 Pages 表格单元格。
- 在 Pages 中检查段落方向。 如果替换操作将从右向左的段落改为从左向右,则会回滚。Pages 会将新段落设为从左向右,即使内容是阿拉伯语也一样,而且脚本无法更改方向,因此这类情况会被标记:请在 Pages 中设置方向(格式 › 文本)。
- 按原样保留输入的值:阿拉伯-印度数字(
١٢٣)、"$1,234.56"和=…文本仍为文本。需要数字时,请传入真正的数值。 - 检查渲染后的 PDF 时,请断言一个阿拉伯语词。PDF 文本层会重新排列多个 RTL 词语。
全部 65 个工具
写入操作标记为有破坏性,读取操作标记为只读,因此客户端可以在写入前询问。每个会更改现有文件的写入操作都支持 dry_run=true 预览。每个工具都有标题和参数说明,并注明应在何时使用它,而不是同类工具。需要更少工具?只加载部分工具集(参见安装中的减少加载)。
任意文件(17)
| 工具 | 功能 |
|---|---|
iwork_capabilities | 此设备的能力:应用、GUI 会话、可用的操作路径 |
iwork_read | 任意 .numbers / .key / .pages → JSON |
iwork_find | 按类型和名称查找 iWork 文件(Mac 上使用 Spotlight) |
iwork_samples | 复制示例文件(合成销售数据、英语和阿拉伯语),无需使用自己的文件即可试用 |
iwork_metadata · iwork_thumbnail | 模板、应用构建版本、格式版本、幻灯片数量 · 存储的预览图像 |
iwork_create · iwork_create_from_template | 使用 Apple 内置模板创建新文件 · 复制自己的文件 |
iwork_list_templates | 内置模板(Numbers、Pages)和主题(Keynote) |
iwork_list_design_kits | 设计套件:字体、调色板、字体比例 — 预设和已保存的套件 |
iwork_extract_design_kit | 从自己的演示文稿或表格提取套件:其中的字体和颜色;可按名称保存 |
iwork_save_design_kit · iwork_delete_design_kit | 按名称保留品牌套件 · 删除套件 |
iwork_export | PDF、Excel、CSV、Word、EPUB、文本、RTF、PowerPoint、幻灯片图像、影片;可选密码 |
iwork_verify_render · iwork_verify_format | 渲染后的 PDF 是否显示此文本 · 字体、字号、颜色和页面尺寸是否符合要求 |
iwork_list_backups · iwork_restore_backup | 撤销 |
Numbers(17)
| 工具 | 功能 |
|---|---|
numbers_create · numbers_import_csv | 使用数据行创建新文件 · 从 CSV/TSV 创建 |
numbers_edit_cell | 设置一个单元格 |
numbers_set_formula | 在单元格中填入公式;由 Numbers 计算 |
numbers_recalculate | 对未通过 Numbers 执行的编辑后,让 Numbers 重新计算所有公式 |
numbers_insert · numbers_delete | 在任意位置插入或删除行、列 |
numbers_add_table | 在工作表上或新工作表上创建新表格 |
numbers_sort | 按列对表格数据行排序。若表格公式会读取其他行,则拒绝排序,因为 Numbers 的排序会破坏这些公式;to_new_table 会将已排序的值副本放入新表格,并保留原表格、公式和图表 |
numbers_inspect_format | 列宽、行高、标题、合并单元格,以及每个单元格的样式、数字格式和边框 |
numbers_set_cell_style | 字体、字号、粗体/斜体/下划线/删除线、颜色、填充、对齐、换行 |
numbers_set_number_format | 数字、货币(任意 ISO 代码)、百分比、科学计数、分数、日期、文本;小数位数、分隔符、负数 |
numbers_set_borders | 全部 / 外框 / 内部 / 单侧;宽度、颜色、样式 |
numbers_set_dimensions · numbers_set_headers · numbers_merge_cells | 列宽和行高 · 标题行/列 · 合并单元格 |
Keynote(23)
| 工具 | 功能 | |---|---| | `keynote_build_deck` | 根据大纲新建演示文稿:标题、项目符号、备注、图片、图表和表格幻灯片、切换效果、设计套件 | | `keynote_review_deck` | 审查渲染后的演示文稿设计:超出幻灯片范围和溢出的文本、重叠内容、小字号文本、内容拥挤的幻灯片 | | `keynote_slide_image` | 将单张幻灯片呈现为图像,供查看 | | `keynote_set_slide_text` | 填写幻灯片的标题和正文 | | `keynote_apply_design` | 使用设计套件为每张幻灯片重新设置样式 | | `keynote_replace_text` | 在每张幻灯片中查找并替换文本,不更改格式 | | `keynote_list_slides` | 列出每张幻灯片的文本、备注、隐藏状态和图表数量 | | `keynote_add_slide` · `keynote_duplicate_slide` · `keynote_delete_slide` · `keynote_move_slide` · `keynote_skip_slide` | 幻灯片操作 | | `keynote_set_presenter_notes` | 演讲者备注 | | `keynote_list_themes` · `keynote_inspect_style` | 可用主题 · 演示文稿的主题、版式和文本样式 | | `keynote_set_theme` · `keynote_set_slide_layout` · `keynote_format_text` | 主题 · 单张幻灯片的版式 · 单个文本项的字体、字号、颜色 | | `keynote_set_transition` | 效果、时长、延迟、自动播放 | | `keynote_add_image` | 在幻灯片上放置图片 | | `keynote_add_chart` | 根据数据添加柱状图、折线图、面积图、饼图或散点图 | | `keynote_add_table` | 添加使用设计套件设置样式的表格;会回读每个单元格 | | `keynote_slideshow` | 开始、停止、下一张、上一张 |Pages(7)
| 工具 | 功能 |
|---|---|
pages_preflight | 检查 Pages 是否可以响应(先运行一次) |
pages_replace_all · pages_set_body | 替换所有位置的文本 · 替换整个正文(重置其格式) |
pages_list_placeholders · pages_fill_placeholders | 模板字段,例如姓名和日期 |
pages_read_tables · pages_set_table_cells | 读取所有表格 · 向现有表格中写入文本、数字和公式 |
如果演示文稿已在 Keynote 中打开,Keynote 幻灯片、主题、切换效果和图片工具会拒绝操作(它们绝不会关闭可能包含未保存内容的窗口)。要全部隐藏这些工具:IWORK_STUDIO_DISABLE_SLIDE_OPS=1。
提示词。 能显示 MCP 提示词的客户端会提供四种现成的工作流:根据大纲制作推介演示文稿、根据 Numbers 表格制作报告演示文稿、使用我的品牌重新设置样式和为这个表格设计样式。每种工作流都会写入设计规则、通过一次调用完成构建、在重新设置样式前预览,并在宣布任务完成前进行设计审查。
面向 AI Agent
AGENTS.md:适用于任何 Agent(Codex、Cursor、Copilot、Gemini;Claude Code 通过CLAUDE.md读取)的设置和使用规则。- MCP 说明:服务在连接时会发送规则,因此即使没有此仓库,模型也能获取这些规则。
- 技能:
skill-pack/SKILL.md,Claude Code 会在此仓库中自动发现此文件;其他基于技能的 Agent 可运行bash skill-pack/install.sh。其中包含为不使用 MCP 的 Agent 提供 JSON 输出的 CLI 脚本。 llms.txt:简短、机器可读的摘要。
**约定:**输入 JSON,输出 JSON。错误均有明确类型,并说明应告知用户的内容,例如 ChartRefusalError、DocumentOpenError、PagesOutOfScopeError、AquaSessionError(此处没有 Mac GUI),等等。写入操作遭拒时,不要试图绕过限制后重试。
Python
pip install iwork-studio # Python 3.12
from iwork_studio import numbers_structure, numbers_format, numbers_io, keynote_io, keynote_slides, exporter, backups
from iwork_studio import keynote_deck, design, review
keynote_deck.build_deck("pitch.key", [{"title": "شمس", "body": "Clean energy for every home"},
{"title": "Why now", "body": ["Trust", "Access"]},
{"title": "Riyadh leads growth", "chart": {"type": "bar", "from": "sales.numbers"}}],
kit="midnight") # macOS + Keynote
review.review_deck("pitch.key")["findings"] # macOS + Keynote
design.extract_kit("brand.numbers", name="Acme", save=True)
numbers_structure.import_csv("sales.csv", "sales.numbers")
design.apply_to_numbers("sales.numbers", "banking")
numbers_format.set_cell_style("sales.numbers", "A1:D1", bold=True, fill_color="#1A7F79", font_color="#FFFFFF")
numbers_format.set_number_format("sales.numbers", "B2:B99", "currency", currency_code="SAR", decimal_places=2)
numbers_io.edit_cell("sales.numbers", "B2", 2500)
keynote_io.edit_text("pitch.key", "2025", "2026")
keynote_slides.set_presenter_notes("pitch.key", 1, "ملاحظات") # macOS + Keynote
exporter.export("pitch.key", "pptx") # macOS + Keynote
backups.restore_backup("sales.numbers", backups.list_backups("sales.numbers")[0]["name"])
我们已摸清这些陷阱,避免你的 Agent 踩坑
- iWork 沙盒会拒绝
save in <path>。 原地save和export可以正常使用。→sandbox-trap.md - Keynote 的幻灯片
title/body属性会报错-1700。 请使用文本项的object text。→keynote-1700-defect.md - 图表文件会悄无声息地损坏,因此文件级库重写图表文件的处理方式会拒绝这些文件。由应用执行编辑时,图表会保持关联,因此应用驱动的处理方式允许编辑,并会在前后统计每个图表。
- iWork 格式不支持保存后字节完全相同。 真正的标准是语义正确:文件可以重新打开,且完整模型保持一致。
- 首次运行时的权限和模板选择器对话框会阻塞所有脚本调用。预检会将卡住的问题转化为一条明确提示。→
tcc-preflight.md - “Creator Studio”应用的名称各不相同。 硬编码的
Application("Numbers")会驱动错误的应用;应用名称会在每次调用时解析。→apps.py - stdout 是 MCP 的通信通道。 库在导入时输出的警告会破坏通信,因此这些警告会发送到 stderr。
- Keynote 的 JavaScript 插入和移动功能有缺陷;AppleScript
make new slide和move slide … to before slide …可以正常使用。 - 无法通过 JavaScript 访问 Keynote 母版幻灯片(
-1700);布局操作通过 AppleScript 完成。 - numbers-parser 不会保存原地进行的样式编辑。 必须先注册样式,再应用样式。
- numbers-parser 会将 12 存储为 12.000000000000002。 现在会对小数进行精确编码。
- numbers-parser 移动行时不会更新公式引用,因此会拒绝在公式表格中间插入行。
- Keynote 颜色的每个通道范围是 0–65535,而不是 0–255 或 0–1。
- Pages 页面布局文档没有正文文本(
bodyText()为 null),而且大多数信件和传单模板都采用页面布局。我们会改为填充占位符,并检查每个文本框。 - JavaScript 脚本无法读取 Pages 表格,但 AppleScript 可以读写;Pages 15 中创建表格的功能有缺陷,因此只提供现有表格。
- Pages 沙盒会拒绝 AppleScript
open打开沙盒外的文件;JavaScriptopen则可以,因此会通过 JavaScript 打开文档,再按其确切路径查找。 - numbers-parser 重新保存时可能会破坏公式(上游报告)。所有不使用应用的写入操作都会逐一比较每个公式,因此一旦公式损坏就会被发现,且不会进行任何更改。
- Numbers 打开未经其修改的文件时不会重新计算公式:总计会保留旧结果。未通过应用进行的编辑会明确说明这一点,而
numbers_recalculate会让 Numbers 重新计算所有公式。 - numbers-parser 使用的舍入库每次保存时都会清除进程中的所有警告筛选器。 我们对它进行了封装,使其保持静默,同时不影响其他人的设置。
- 不要将仓库放在 iCloud Drive 中。 同步会在
.git中创建“main 2”副本。 - Keynote 只能通过一种方式创建表格:
tell slide n to make new table可以正常使用,而make new table at end of tables of slide n和删除表格会报错-10000。添加表格失败时,会通过恢复备份撤销操作。
更多陷阱及其状态,请参阅:jxa-traps.md(包括从 reichenbach/iwork_mcp 借鉴的陷阱)。
构建方式
pure Python file parsers (headless, deterministic) → .numbers everything, .key text
the real app via AppleScript / JXA → .key slides & theming, .pages text & tables, formulas, sort, export, render checks
MCP server · CLI scripts · skill → thin wrappers over the same library and the same safety model
src/iwork_studio/ numbers_io · numbers_format · numbers_structure · keynote_io · keynote_slides · keynote_theme
keynote_deck · keynote_table · design · review · preview · pages_io · app_ops · exporter
helpers · format_check · render_verify · pdf · backups · apps · mcp_server
mcpb/ Claude Desktop extension manifest (scripts/build_mcpb.sh builds the .mcpb)
skill-pack/ SKILL.md · CLI scripts · references (capabilities, traps, pins); also the Claude Code plugin
.claude-plugin/ plugin marketplace (one plugin: skill-pack/)
tests/ headless suite (CI) · `pytest -m aqua` = live suite for a Mac with iWork
install.sh one-line setup for the Claude desktop app
git clone https://github.com/Arkanji/iwork-studio.git && cd iwork-studio
uv run --extra test pytest -m "not aqua" # headless suite, what CI runs
uv run --extra test pytest -m aqua # live suite: a Mac with Numbers, Keynote and Pages
scripts/live.sh # the same, unattended: logs to ~/.iwork-studio/probes, quits the apps it opened
iWork 在不同版本间会有变化。如果出现问题,请查看功能和陷阱,运行实时测试套件,并记录发生的变化。新的写入路由必须遵循安全模型,并附带证明可回滚的测试。请在 iCloud 同步文件夹之外克隆仓库。
许可证
MIT,包含陷阱。拿去吧。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。