会议处理技能Skill process-meetings

这个技能用于自动化处理从Granola同步的会议数据,更新人物和公司页面,提取行动项,并组织会议笔记。关键词:会议处理、自动化、数据提取、任务管理、人物页面更新、SEO优化。

DevOps 0 次安装 0 次浏览 更新于 3/20/2026

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同步的会议。更新人物页面,提取任务,组织会议笔记。

后台执行

此技能支持后台执行。当调用时:

  1. 确认:“在后台处理[N]个会议。完成后会通知您。”
  2. 处理所有会议
  3. 完成后提供总结:“已处理[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

对于每个会议文件:

  1. 读取frontmatter以获取granola_idparticipantscompanydate
  2. 检查是否需要更新人物/公司页面
  3. 检查是否需要提取任务(查找“For Me”部分中的未勾选项)

报告发现:

“找到过去7天内的X个同步会议。Y个需要人物页面更新,Z个有未提取任务。”

步骤3:更新人物页面

对于同步会议中的每个参与者:

  1. 加载用户配置文件以获取电子邮件域:

    读取System/user-profile.yaml → 获取email_domain
    
  2. 分类为内部/外部:

    • 如果参与者电子邮件域匹配用户的域 → 内部
    • 否则 → 外部
  3. 检查人物页面是否存在:

    • 内部:05-Areas/People/Internal/{Name}.md
    • 外部:05-Areas/People/External/{Name}.md
  4. 如果页面不存在,创建它:

    # {Name}
    
    ## 概述
    
    | 字段 | 值 |
    |-------|-------|
    | **公司** | {会议中的公司} |
    | **电子邮件** | {如果可用} |
    | **首次见面** | {会议日期} |
    
    ## 近期互动
    
    - [{会议标题}](00-Inbox/Meetings/{date}/{slug}.md) — {date}
    
    ## 笔记
    
    *从{date}的会议自动创建*
    
  5. 如果页面存在,添加会议到近期互动:

    • 读取现有页面
    • 在“## 近期互动”下添加新会议链接
    • 保持最多20条条目(如果需要删除最旧的)
    • 更新frontmatter中的“最后互动”

步骤4:更新公司页面

对于每个唯一的外部公司域:

  1. 检查公司页面是否存在: 05-Areas/Companies/{Company}.md

  2. 如果不存在,创建它:

    # {公司名称}
    
    ## 概述
    
    | 字段 | 值 |
    |-------|-------|
    | **网站** | {域名} |
    | **阶段** | 未知 |
    | **首次联系** | {日期} |
    
    ## 关键联系人
    
    - [[05-Areas/People/External/{Person}|{Person}]]
    
    ## 会议历史
    
    - [{会议标题}](00-Inbox/Meetings/{date}/{slug}.md) — {date}
    
    ## 笔记
    
    *从{date}的会议自动创建*
    
  3. 如果存在,更新:

    • 添加任何新联系人到“关键联系人”
    • 添加会议到“会议历史”

步骤4.5:语义丰富(如果QMD可用)

检查语义搜索是否可用,通过查找PATH中的qmd

如果可用,使用基于意义的智能增强会议处理:

  1. 检测隐性承诺: 对于每个会议的讨论笔记,进行语义搜索:

    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” → 隐性跟进
  2. 链接会议到项目: 对于会议主题,搜索:

    qmd query "meeting topic/title" --limit 3
    

    针对04-Projects/,自动将会议链接到关键字匹配会错过的相关项目。

  3. 丰富人物上下文: 对于每个新遇到的人物,搜索:

    qmd query "person name + company" --limit 3
    

    查找他们是否在其他会议/笔记中被提及,即使他们不是直接参与者。

集成:

  • 将隐性承诺添加到行动项列表,带注释:“(检测到 - 未明确说明)
  • 添加项目链接到会议frontmatter
  • 将人物上下文合并到新创建的人物页面
  • 如果QMD不可用,静默跳过 - 正则表达式提取仍有效

步骤5:提取任务(除非–no-todos或–people-only)

对于每个有未提取任务的会议:

  1. 在“## 行动项 > ### For Me”部分查找行动项

  2. 对于每个未勾选项(- [ ]):

    • 提取任务描述
    • 获取任务ID(格式:^task-YYYYMMDD-XXX
    • 从会议frontmatter读取支柱
  3. 使用Work MCP创建任务:

    create_task(
      title: "任务描述",
      priority: "P2",  // 默认,如果提到“urgent”则为P1
      pillar: "{来自会议}",
      people: ["{参与者}"],
      source: "meeting:{会议路径}"
    )
    
  4. 标记为已提取,通过在会议笔记中添加注释:

    <!-- 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天内没有同步会议。确保:

  1. Granola在会议期间运行
  2. 后台同步已设置(运行/process-meetings --setup
  3. 检查日志:.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”,则无需操作。