OmniFocus命令行界面(of)
(非官方) macOS上OmniFocus 4的命令行桥。
of 是一个快速、可编写脚本的命令行界面,可将您的OmniFocus任务、项目和GTD工作流带到终端。
______________________________________________________________________
💡 问题
OmniFocus是苹果平台上GTD的黄金标准,但编写脚本总是很痛苦:
- AppleScript开销: 每个命令都会产生一个新的脚本过程,使批处理操作变慢。
- 无CLI本机: 居住在终端中的高级用户必须上下文切换到GUI进行任务管理。
- 管道不友好: OmniFocus不能很好地与Unix工具集成(
grep,xargs,jq等等)。
🚀 解决方案
of 使用现代Node.js CLI封装优化的JXA(JavaScript for Automation)脚本,为您提供:
- 快速查询: 以毫秒为单位列出收件箱、今天、标记、项目等
- Unix友好输出: JSON和安静脚本模式
- 批量操作: 要添加、完成或修改的管道任务列表
- 干运行安全: 提交前预览更改
______________________________________________________________________
🛠 安装
# Clone or download this repository
cd omnifocus-cli
# Install dependencies
bun install
# Link globally (makes 'of' available everywhere)
bun link要求:
- macOS(已安装OmniFocus 4)
- Node.js 18+或Bun
______________________________________________________________________
⚡ 快速开始
# List your inbox
of list inbox
# Today's tasks
of list today
# Add a quick task
of add "Buy milk"
# Add task with options
of add "Review proposal" --project "Work" --due tomorrow --flagged
# Complete a task
of complete
# Search for tasks
of search "meeting"
# Trigger sync
of sync______________________________________________________________________
📖 命令
列表
| 命令 | 描述 |
|---|---|
of list inbox | 收件箱任务 |
of list today | 今天到期或可用 |
of list flagged | 标记的任务 |
of list projects | 活跃项目 |
of list folders | 文件夹层次结构 |
of list tags | 所有标签 |
of list forecast | 未来7天(或 --days N) |
常见标志: --json, --pretty, --quiet (仅限ID), --limit N, --all (包括已完成)
添加
# Single task
of add "Task name" --project "Project" --due tomorrow --tag "Context"
# Quick add (inbox only)
of quick "Fast task" --flagged
# New project with tasks
of add project "New Website" --folder "Work" --tasks "Design,Build,Deploy"
# Bulk from stdin
cat tasks.txt | of add --project "Inbox Processing"
# Batch projects from outline
cat outline.md | of add batch --folder "Q1 Goals"修改
# Update task
of modify --due "+3d" --flagged
# Move task to project
of modify --project "Different Project"
# Reorder tasks within a project
of modify --order 0 # Move to first position
# Update project
of project modify --status on-hold完成
# Complete task
of complete
# Drop task (mark abandoned)
of complete --drop
# Delete task permanently
of complete --delete
# Bulk complete from stdin
of list inbox -q | xargs -I {} of complete {}组织
# Create folder
of folder add "New Folder"
# Create tag
of tag add "New Tag"
# Move project to folder
of project move
--folder "Work"
# Review projects needing review
of review公用事业
# Trigger OmniFocus sync
of sync
# Get task details
of get task
# Search tasks
of search "keyword" --limit 20
# Generate shell completions
of completion bash >> ~/.bashrc
of completion zsh >> ~/.zshrcMCP服务器
# Start MCP server (stdio transport)
of mcp run
# Show MCP configuration info
of mcp info______________________________________________________________________
🔧 输出模式
所有命令都支持多种输出格式:
# Human-readable (default)
of list inbox
# JSON for scripting
of list inbox --json
# Pretty JSON
of list inbox --json --pretty
# IDs only (for piping)
of list inbox -q______________________________________________________________________
🏗 建筑
omnifocus-cli/
├── bin/of.js # CLI entry point
├── src/
│ ├── index.js # Command registration
│ ├── jxa-runner.js # JXA execution bridge
│ ├── output.js # Output formatting
│ ├── commands/ # Command handlers
│ └── mcp/
│ └── server.js # MCP server implementation
└── jxa/
├── read/ # Query scripts
├── write/ # Mutation scripts
└── utils/ # Shared helpersCLI生成 osascript -l JavaScript 执行通过macOS脚本桥与OmniFocus通信的JXA脚本。MCP服务器封装了这些相同的JXA脚本,将它们作为AI助手的工具公开。
______________________________________________________________________
💻 例子
每日回顾脚本
#!/bin/bash
echo "=== Today's Focus ==="
of list today --limit 5
echo -e "\n=== Flagged Items ==="
of list flagged --limit 5
echo -e "\n=== Inbox Count ==="
of list inbox -q | wc -l | xargs echo "Items in inbox:"将收件箱处理为项目
# Move all inbox items to a project
of list inbox -q | while read id; do
of modify "$id" --project "Processing"
done从文件批量添加
# tasks.txt (one per line)
# Review Q4 report
# Schedule team meeting
# Update documentation
cat tasks.txt | of add --project "Work" --due "+1w"创建项目结构
# outline.md
# - Website Redesign
# - Research competitors
# - Create wireframes
# - Build prototype
# - Marketing Campaign
# - Draft copy
# - Design assets
cat outline.md | of add batch --folder "2026 Projects"______________________________________________________________________
🤖 MCP服务器
of 包括内置 模型上下文协议 服务器,使AI助手(Claude等)能够直接管理OmniFocus。
设置
添加到您的Claude代码配置中(~/.claude/settings.json):
{
"mcpServers": {
"omnifocus": {
"command": "of",
"args": ["mcp", "run"]
}
}
}或者使用完整路径:
{
"mcpServers": {
"omnifocus": {
"command": "node",
"args": ["/path/to/omnifocus-cli/bin/of.js", "mcp", "run"]
}
}
}可用工具(5个合并工具)
| 工具 | 操作 | 描述 |
|---|---|---|
omnifocus_task | 列表、获取、创建、更新、完成、删除 | 完整任务CRUD,包括收件箱/今天/标记/预测/搜索视图 |
omnifocus_project | list、get、get_tasks、create、update、complete、drop、set_status | 项目管理和生命周期 |
omnifocus_folder | 列表、创建、更新、移动项目 | 文件夹组织 |
omnifocus_tag | 列表、任务、创建、更新、删除 | 标签管理 |
omnifocus_util | 同步、review_list、mark_reviewed、状态 | 实用程序和审核工作流 |
每个工具都使用 action 参数来选择操作。这种整合的设计最大限度地减少了令牌开销,同时提供了完整的OmniFocus访问权限。
示例提示
配置后,您可以向Claude询问以下问题:
- “我的OmniFocus收件箱里有什么?”
- “创建一个任务,明天给妈妈打电话”
- “显示所有标记的任务”
- 添加一个名为“网站重新设计”的项目,其中包含设计、开发和测试任务
- “将任务ABC123标记为已完成”
______________________________________________________________________
🗺 路线图
- \[x\] 第一阶段: 具有完整读/写OmniFocus访问权限的CLI工具
- \[x\] 第二阶段: 用于AI助手集成的MCP服务器
______________________________________________________________________
📄 许可证
麻省理工学院
作者:沈(@2b3pro) — 给我买一两杯咖啡 ☕
