词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
| 来源 | 内置(默认安装) |
| 路径 | skills/productivity/airtable |
| 版本 | 1.1.0 |
| 作者 | community |
| 许可证 | MIT |
| 平台 | linux, macos, windows |
| 标签 | Airtable, Productivity, Database, API |
terminal 工具,使用 curl 直接调用 Airtable 的 REST API。无需 MCP server,无需 OAuth 流程,无需 Python SDK——只需 curl 和一个个人访问令牌(PAT)。pat... 开头)。data.records:read — 读取行data.records:write — 创建 / 更新 / 删除行schema.bases:read — 列出 bases 和 tables403。~/.hermes/.env 中(或通过 hermes setup 配置):AIRTABLE_API_KEY=pat_your_token_here注意:旧版 key...API 密钥已于 2024 年 2 月弃用。目前仅支持 PAT 和 OAuth 令牌。
https://api.airtable.com/v0Authorization: Bearer $AIRTABLE_API_KEYContent-Type: application/json)。app...,table 为 tbl...,record 为 rec...,field 为 fld...。ID 永不变更;名称可能变更。自动化流程中优先使用 ID。429 时需退避重试。单个 base 的突发请求会被限流。-s 会抑制 curl 的进度条——每次调用都保持此设置,以确保工具输出对 Hermes 保持整洁。通过 python3 -m json.tool(始终可用)或 jq(若已安装)管道输出以获得可读的 JSON。| 字段类型 | 写入格式 |
|---|---|
| 单行文本 | "Name": "hello" |
| 长文本 | "Notes": "multi\nline" |
| 数字 | "Score": 42 |
| 复选框 | "Done": true |
| 单选 | "Status": "Todo"(选项名必须已存在,除非设置 typecast: true) |
| 多选 | "Tags": ["urgent", "bug"] |
| 日期 | "Due": "2026-04-01" |
| 日期时间(UTC) | "At": "2026-04-01T14:30:00.000Z" |
| URL / 邮箱 / 电话 | "Link": "https://…" |
| 附件 | "Files": [{"url": "https://…"}](Airtable 会抓取并重新托管) |
| 关联记录 | "Owner": ["recXXXXXXXXXXXXXX"](record ID 数组) |
| 用户 | "AssignedTo": {"id": "usrXXXXXXXXXXXXXX"} |
"typecast": true,可让 Airtable 自动强制转换值(例如动态创建新的单选选项,或将 "42" 转换为 42)。options.choices,并获取主字段名称。{Email}='user@example.com'FIND('bug', LOWER({Title}))AND({Status}='Todo', {Priority}='High')OR({Owner}='alice', {Owner}='bob')NOT({Assignee}='')IS_AFTER({Due}, TODAY())%5B / %5D)。performUpsert 会为合并字段值不存在的记录执行创建操作,为合并字段值已存在的记录执行更新操作。非常适合幂等同步场景。"offset": "...",需在下一次请求中传回该值。循环直至该字段不再出现:curl -s -o /dev/null -w "%{http_code}\n" https://api.airtable.com/v0/meta/bases -H "Authorization: Bearer $AIRTABLE_API_KEY" — 期望返回 200。schema.bases:read 权限时直接向用户索取 app... ID。GET /v0/meta/bases/$BASE_ID/tables — 在执行任何变更操作前,在会话中本地缓存精确的字段名和主字段名。filterByFormula 解析出 rec... ID,再执行 PATCH /v0/$BASE_ID/$TABLE/$RECORD_ID。切勿猜测 record ID。filterByFormula 必须进行 URL 编码。 包含空格或非 ASCII 字符的字段名也需要编码({My Field} → %7BMy%20Field%7D)。使用 Python 标准库(见上方模式)——切勿手动转义。"Assignee" 键并不意味着该字段不存在——而是表示该记录的值为空。在判断字段缺失之前,请先检查 schema(步骤 3)。PATCH 将提供的字段合并到记录中。PUT 会完全替换记录,并清除所有未包含的字段。默认使用 PATCH。Shipping 不在字段的选项列表中,写入 "Status": "Shipping" 会报错 INVALID_MULTIPLE_CHOICE_OPTIONS,除非传入 "typecast": true(会自动创建该选项)。403 而其他 base 正常,说明该 base 未添加到令牌的 Access 列表中——而非权限范围或认证问题。请引导用户前往 https://airtable.com/create/tokens 授权。baseA 每秒 5 次、baseB 每秒 5 次是允许的;单独在 baseA 上每秒 6 次则会被限流。收到 429 时请监控 Retry-After 响应头。terminal 工具配合 curl。 不要使用 web_extract(无法发送认证头)或 browser_navigate(需要 UI 认证且速度慢)。AIRTABLE_API_KEY 会在此 skill 加载时自动从 ~/.hermes/.env 注入到子进程环境中——每次 curl 调用前无需重新导出。{Status} 是字面量。在 shell 参数中,{Status} 在 {...} 大括号展开上下文之外是安全的——但在拼接到 URL 之前,动态字符串应通过 python3 urllib.parse.quote 处理。python3 -m json.tool 格式化输出(始终可用),而非 jq(可选)。仅在需要过滤/投影时才使用 jq。offset 循环直至该字段不再出现。errors 数组——Airtable 会返回结构化错误码,如 AUTHENTICATION_REQUIRED、INVALID_PERMISSIONS、MODEL_ID_NOT_FOUND、INVALID_MULTIPLE_CHOICE_OPTIONS,可精确定位问题所在。