name: process-meetings description: 处理从Granola同步的会议,更新人物页面,提取任务,组织会议笔记 context: fork hooks: PostToolUse: - matcher: Write type: command command: “node .claude/hooks/post-meeting-person-update.cjs” Stop: - type: command command: “node .claude/hooks/meeting-summary-generator.cjs”
处理会议
处理通过后台自动化从Granola同步的会议。更新人物页面,提取任务,组织会议笔记。
后台执行
此技能支持后台执行。当调用时:
- 确认:“在后台处理[N]个会议。完成后会通知您。”
- 处理所有会议
- 完成后提供总结:“已处理[N]个会议。更新了[X]个人物页面。创建了[Y]个行动项。”
工作原理
会议通过后台进程每30分钟自动同步。此命令读取这些同步文件并:
- 创建/更新人物和公司页面
- 将行动项提取到03-Tasks/Tasks.md
- 将所有内容链接在一起
不显示终端命令 - 繁重工作发生在后台。
参数
- 无参数:处理过去7天内所有未处理的会议
today:仅处理今天的会议"搜索词":按标题/与会者查找会议--people-only:仅更新人物/公司页面(跳过任务)--no-todos:创建笔记但不提取任务--setup:安装/检查后台自动化
处理流程
步骤1:检查后台同步状态
首先,检查后台同步是否已设置:
# 检查状态文件(表示同步已运行)
ls .scripts/meeting-intel/processed-meetings.json
如果状态文件存在: 后台同步正在工作。继续步骤2。
如果状态文件不存在:
"后台会议同步尚未设置。此功能每30分钟自动运行,因此
/process-meetings不需要终端命令。设置(一次性,需要30秒):
cd .scripts/meeting-intel && ./install-automation.sh或运行
/process-meetings --setup,我将为您执行。要求:
- 安装Granola应用(granola.ai)
- 在
.env中设置LLM API密钥(GEMINI_API_KEY、ANTHROPIC_API_KEY或OPENAI_API_KEY)"
如果用户运行--setup:
cd .scripts/meeting-intel && ./install-automation.sh
步骤2:查找同步会议
读取处理过的会议状态:
const state = JSON.parse(fs.readFileSync('.scripts/meeting-intel/processed-meetings.json'));
列出00-Inbox/Meetings/中的会议文件:
find 00-Inbox/Meetings -name "*.md" -mtime -7 | head -50
对于每个会议文件:
- 读取frontmatter以获取
granola_id、participants、company、date - 检查是否需要更新人物/公司页面
- 检查是否需要提取任务(查找“For Me”部分中的未勾选项)
报告发现:
“找到过去7天内的X个同步会议。Y个需要人物页面更新,Z个有未提取任务。”
步骤3:更新人物页面
对于同步会议中的每个参与者:
-
加载用户配置文件以获取电子邮件域:
读取System/user-profile.yaml → 获取email_domain -
分类为内部/外部:
- 如果参与者电子邮件域匹配用户的域 → 内部
- 否则 → 外部
-
检查人物页面是否存在:
- 内部:
05-Areas/People/Internal/{Name}.md - 外部:
05-Areas/People/External/{Name}.md
- 内部:
-
如果页面不存在,创建它:
# {Name} ## 概述 | 字段 | 值 | |-------|-------| | **公司** | {会议中的公司} | | **电子邮件** | {如果可用} | | **首次见面** | {会议日期} | ## 近期互动 - [{会议标题}](00-Inbox/Meetings/{date}/{slug}.md) — {date} ## 笔记 *从{date}的会议自动创建* -
如果页面存在,添加会议到近期互动:
- 读取现有页面
- 在“## 近期互动”下添加新会议链接
- 保持最多20条条目(如果需要删除最旧的)
- 更新frontmatter中的“最后互动”
步骤4:更新公司页面
对于每个唯一的外部公司域:
-
检查公司页面是否存在:
05-Areas/Companies/{Company}.md -
如果不存在,创建它:
# {公司名称} ## 概述 | 字段 | 值 | |-------|-------| | **网站** | {域名} | | **阶段** | 未知 | | **首次联系** | {日期} | ## 关键联系人 - [[05-Areas/People/External/{Person}|{Person}]] ## 会议历史 - [{会议标题}](00-Inbox/Meetings/{date}/{slug}.md) — {date} ## 笔记 *从{date}的会议自动创建* -
如果存在,更新:
- 添加任何新联系人到“关键联系人”
- 添加会议到“会议历史”
步骤4.5:语义丰富(如果QMD可用)
检查语义搜索是否可用,通过查找PATH中的qmd。
如果可用,使用基于意义的智能增强会议处理:
-
检测隐性承诺: 对于每个会议的讨论笔记,进行语义搜索:
qmd query "we should circle back on..." --limit 3 qmd query "let me think about..." --limit 3捕获正则表达式行动项提取错过的软承诺。
- 示例:“we should probably revisit the pricing model” → 隐性行动项
- “I need to noodle on the migration approach” → 隐性承诺
- “Let’s reconnect after the board meeting” → 隐性跟进
-
链接会议到项目: 对于会议主题,搜索:
qmd query "meeting topic/title" --limit 3针对
04-Projects/,自动将会议链接到关键字匹配会错过的相关项目。 -
丰富人物上下文: 对于每个新遇到的人物,搜索:
qmd query "person name + company" --limit 3查找他们是否在其他会议/笔记中被提及,即使他们不是直接参与者。
集成:
- 将隐性承诺添加到行动项列表,带注释:“(检测到 - 未明确说明)”
- 添加项目链接到会议frontmatter
- 将人物上下文合并到新创建的人物页面
- 如果QMD不可用,静默跳过 - 正则表达式提取仍有效
步骤5:提取任务(除非–no-todos或–people-only)
对于每个有未提取任务的会议:
-
在“## 行动项 > ### For Me”部分查找行动项
-
对于每个未勾选项(
- [ ]):- 提取任务描述
- 获取任务ID(格式:
^task-YYYYMMDD-XXX) - 从会议frontmatter读取支柱
-
使用Work MCP创建任务:
create_task( title: "任务描述", priority: "P2", // 默认,如果提到“urgent”则为P1 pillar: "{来自会议}", people: ["{参与者}"], source: "meeting:{会议路径}" ) -
标记为已提取,通过在会议笔记中添加注释:
<!-- tasks-extracted: 2026-02-03T10:30:00Z -->
步骤6:总结报告
## 会议处理完成 ✅
**找到同步会议:** X(过去7天)
**后台同步状态:** 运行中(最后同步:10分钟前)
### 更新内容
**人物页面:**
- 创建:3个新页面(Alice Chen, Bob Smith, Carol Wang)
- 更新:5个现有页面
**公司页面:**
- 创建:1个新页面(Acme Corp)
- 更新:2个现有页面
**提取任务:** 7个项目添加到03-Tasks/Tasks.md
### 近期会议
| 日期 | 会议 | 公司 | 参与者 |
|------|---------|---------|--------------|
| 2月3日 | 产品评审 | Acme | Alice, Bob |
| 2月2日 | 战略通话 | BigCo | Carol |
---
*后台同步每30分钟运行一次。检查状态:`.scripts/meeting-intel/install-automation.sh --status`*
错误处理
如果未找到会议:
"过去7天内没有同步会议。确保:
- Granola在会议期间运行
- 后台同步已设置(运行
/process-meetings --setup)- 检查日志:
.scripts/logs/meeting-intel.stdout.log"
如果后台同步未运行:
"后台同步似乎已停止。要重启:
cd .scripts/meeting-intel && ./install-automation.sh ```"
示例
/process-meetings
“找到8个同步会议。更新12个人物页面,提取5个任务…”
/process-meetings today
“找到今天的2个会议。处理中…”
/process-meetings --setup
“安装后台自动化…” [运行安装脚本]
/process-meetings --people-only
“仅更新人物和公司页面(跳过任务提取)…”
使用跟踪(静默)
更新System/usage_log.md以标记会议处理为已使用。
分析(静默):
调用track_event,事件名称meetings_processed和属性:
meetings_count:处理的会议数量people_created:创建的新人物页面数量todos_extracted:提取的任务数量
仅当用户选择分析时触发。如果返回“analytics_disabled”,则无需操作。