meeting-brief

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Meeting Brief

会议简报

Automated daily meeting preparation system that researches meeting attendees and sends you personalized briefs.
自动化每日会议准备系统,可调研会议参会者并为你发送个性化简报。

What It Does

功能说明

Every morning (configurable time):
  1. Checks your calendar for today's meetings (via gcalcli)
  2. Extracts attendees from each meeting
  3. Filters out your team members (configurable)
  4. Deep researches each external person:
    • LinkedIn profile (web search)
    • Company information
    • GitHub profile (if engineer)
    • Past interactions/notes (memory search)
    • Recent news/activity
  5. Generates AI-powered brief per person
  6. Sends 1 email per person to your inbox
每天早上(可配置时间):
  1. 检查你的日历获取今日会议(通过gcalcli)
  2. 提取每场会议的参会者
  3. 过滤掉你的团队成员(可配置)
  4. 深度调研每位外部人员:
    • LinkedIn个人主页(网页搜索)
    • 公司信息
    • GitHub主页(若对方是工程师)
    • 过往互动/记录(记忆搜索)
    • 近期新闻/动态
  5. 为每位参会者生成AI驱动的简报
  6. 向你的收件箱发送每人一份的邮件简报

Setup

设置步骤

1. Configure Team Members

1. 配置团队成员

Edit
config.json
to list your team members (these will be skipped):
json
{
  "team_members": [
    "alice@yourcompany.com",
    "bob@yourcompany.com",
    "team@yourcompany.com"
  ],
  "team_domains": [
    "@yourcompany.com"
  ],
  "schedule": "0 7 * * *",
  "timezone": "America/Los_Angeles",
  "your_email": "you@yourcompany.com",
  "brief_from": "Meeting Brief <briefbot@yourcompany.com>",
  "slack_webhook": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
  "send_email": true,
  "send_slack": true,
  "include_calendar_details": true,
  "research_depth": "standard"
}
Config options:
  • team_members
    : Emails to skip (exact match)
  • team_domains
    : Domain patterns to skip (e.g., skip all @yourcompany.com)
  • schedule
    : Cron expression for daily run (default: 7am)
  • timezone
    : Timezone for schedule
  • your_email
    : Where to send briefs
  • brief_from
    : From address for briefs
  • slack_webhook
    : Slack incoming webhook URL (optional)
  • send_email
    : Whether to send email briefs (default: true)
  • send_slack
    : Whether to send Slack notifications (default: false)
  • include_calendar_details
    : Include meeting time/location in brief
  • research_depth
    :
    quick
    (web only),
    standard
    (web + GitHub),
    deep
    (web + GitHub + past notes)
编辑
config.json
列出你的团队成员(这些人会被跳过):
json
{
  \"team_members\": [
    \"alice@yourcompany.com\",
    \"bob@yourcompany.com\",
    \"team@yourcompany.com\"
  ],
  \"team_domains\": [
    \"@yourcompany.com\"
  ],
  \"schedule\": \"0 7 * * *\",
  \"timezone\": \"America/Los_Angeles\",
  \"your_email\": \"you@yourcompany.com\",
  \"brief_from\": \"Meeting Brief <briefbot@yourcompany.com>\",
  \"slack_webhook\": \"https://hooks.slack.com/services/YOUR/WEBHOOK/URL\",
  \"send_email\": true,
  \"send_slack\": true,
  \"include_calendar_details\": true,
  \"research_depth\": \"standard\"
}
配置选项:
  • team_members
    : 需跳过的邮箱(精确匹配)
  • team_domains
    : 需跳过的域名模式(例如:跳过所有@yourcompany.com邮箱)
  • schedule
    : 每日运行的Cron表达式(默认:早上7点)
  • timezone
    : 调度使用的时区
  • your_email
    : 简报接收邮箱
  • brief_from
    : 简报发件人地址
  • slack_webhook
    : Slack传入webhook URL(可选)
  • send_email
    : 是否发送邮件简报(默认:开启)
  • send_slack
    : 是否发送Slack通知(默认:关闭)
  • include_calendar_details
    : 是否在简报中包含会议时间/地点
  • research_depth
    :
    quick
    (仅网页搜索)、
    standard
    (网页+GitHub搜索)、
    deep
    (网页+GitHub+过往记录搜索)

2. Set Up Daily Cron Job

2. 设置每日Cron任务

Use OpenClaw's cron tool to schedule the daily run:
javascript
// Create cron job for daily meeting briefs
{
  name: "Meeting Brief - Daily",
  schedule: {
    kind: "cron",
    expr: "0 7 * * *",  // 7 AM daily (UTC)
    tz: "America/Los_Angeles"
  },
  payload: {
    kind: "agentTurn",
    message: "Run the meeting-brief skill for today's meetings",
    timeoutSeconds: 600
  },
  sessionTarget: "isolated"
}
Alternatively, run manually:
bash
cd skills/meeting-brief
./scripts/run_daily.sh
使用OpenClaw的Cron工具调度每日运行:
javascript
// Create cron job for daily meeting briefs
{
  name: \"Meeting Brief - Daily\",
  schedule: {
    kind: \"cron\",
    expr: \"0 7 * * *\",  // 7 AM daily (UTC)
    tz: \"America/Los_Angeles\"
  },
  payload: {
    kind: \"agentTurn\",
    message: \"Run the meeting-brief skill for today's meetings\",
    timeoutSeconds: 600
  },
  sessionTarget: \"isolated\"
}
或者手动运行:
bash
cd skills/meeting-brief
./scripts/run_daily.sh

How It Works

工作原理

Main Workflow (
scripts/run_daily.sh
)

主工作流(
scripts/run_daily.sh

  1. Fetch today's meetings (
    scripts/check_calendar.sh
    )
    • Uses gcalcli to get today's agenda
    • Parses meeting times, titles, attendees
    • Outputs JSON with meeting details
  2. Filter external attendees (built into run_daily.sh)
    • Loads config.json
    • Filters out team members and team domains
    • Creates list of people to research
  3. Research each person (
    scripts/research_person.js
    )
    • Web search: LinkedIn profile, company info
    • GitHub search: Profile and repos (if applicable)
    • Memory search: Past interactions/notes
    • News search: Recent activity
    • Outputs structured research JSON
  4. Generate brief (
    scripts/generate_brief.js
    )
    • Uses OpenClaw session to generate AI brief
    • Inputs: research data + meeting context
    • Outputs: Two formats:
      • Email: Concise bullet-point brief
      • Slack: Rich paragraph-style story with deeper context and narrative
  5. Send brief
    • Email: Uses Gmail skill (
      send_email: true
      )
    • Slack: Uses webhook (
      send_slack: true
      ,
      scripts/send_slack.sh
      )
    • Subject: "Meeting Brief: [Person Name] - [Meeting Title]"
    • Body: AI-generated brief with research
  6. Save to personal CRM (
    supernotes/people/
    )
    • Each researched person saved as markdown file
    • Includes: research data, meeting context, date
    • Builds personal relationship database over time
  7. Track sent briefs (logs to
    data/sent/YYYY-MM-DD.json
    )
    • Prevents duplicates
    • Enables analytics
  1. 获取今日会议
    scripts/check_calendar.sh
    • 使用gcalcli获取今日日程
    • 解析会议时间、标题、参会者
    • 输出包含会议详情的JSON
  2. 过滤外部参会者(内置在run_daily.sh中)
    • 加载config.json
    • 过滤掉团队成员和团队域名对应的参会者
    • 创建待调研人员列表
  3. 调研每位人员
    scripts/research_person.js
    • 网页搜索:LinkedIn主页、公司信息
    • GitHub搜索:主页及代码仓库(如适用)
    • 记忆搜索:过往互动/记录
    • 新闻搜索:近期动态
    • 输出结构化的调研JSON
  4. 生成简报
    scripts/generate_brief.js
    • 使用OpenClaw会话生成AI简报
    • 输入:调研数据 + 会议背景
    • 输出两种格式:
      • 邮件:简洁的要点式简报
      • Slack:内容丰富的段落式简报,包含更深入的背景和叙事
  5. 发送简报
    • 邮件:使用Gmail Skill(
      send_email: true
      时启用)
    • Slack:使用webhook(
      send_slack: true
      时启用,通过
      scripts/send_slack.sh
    • 主题:"Meeting Brief: [Person Name] - [Meeting Title]"
    • 正文:AI生成的调研简报
  6. 保存到个人CRM
    supernotes/people/
    • 每位被调研人员的信息保存为Markdown文件
    • 包含:调研数据、会议背景、日期
    • 逐步构建个人关系数据库
  7. 跟踪已发送简报(日志记录到
    data/sent/YYYY-MM-DD.json
    • 避免重复发送
    • 支持数据分析

Research Process

调研流程

For each external attendee, the system researches:
针对每位外部参会者,系统会调研以下内容:

Web Search (Always)

网页搜索(默认开启)

  • LinkedIn profile (name + company)
  • Company information
  • Recent news mentions
  • Professional background
  • LinkedIn个人主页(姓名+公司)
  • 公司信息
  • �近期新闻提及
  • 职业背景

GitHub (If
research_depth
is
standard
or
deep
)

GitHub搜索(当
research_depth
standard
deep
时启用)

  • GitHub profile lookup (by name/email)
  • Recent repos and contributions
  • Technical focus areas
  • GitHub主页查找(通过姓名/邮箱)
  • 近期代码仓库及贡献
  • 技术专注领域

Memory/Past Notes (If
research_depth
is
deep
)

记忆/过往记录搜索(当
research_depth
deep
时启用)

  • Search MEMORY.md and daily notes
  • Past meeting notes
  • Previous interactions
  • Context from past conversations
  • 搜索MEMORY.md及日常记录
  • 过往会议记录
  • 之前的互动内容
  • 过往对话的背景信息

Output Format

输出格式

Research is structured as JSON:
json
{
  "person": {
    "name": "Jane Doe",
    "email": "jane@example.com",
    "company": "Example Corp",
    "title": "VP Engineering"
  },
  "linkedin": {
    "url": "...",
    "bio": "...",
    "experience": [...]
  },
  "github": {
    "username": "janedoe",
    "profile_url": "...",
    "recent_repos": [...]
  },
  "company": {
    "name": "Example Corp",
    "industry": "...",
    "recent_news": [...]
  },
  "past_interactions": [
    "Met at conference in 2024",
    "Discussed partnership opportunity"
  ]
}
调研结果以JSON结构化存储:
json
{
  \"person\": {
    \"name\": \"Jane Doe\",
    \"email\": \"jane@example.com\",
    \"company\": \"Example Corp\",
    \"title\": \"VP Engineering\"
  },
  \"linkedin\": {
    \"url\": \"...\",
    \"bio\": \"...\",
    \"experience\": [...]
  },
  \"github\": {
    \"username\": \"janedoe\",
    \"profile_url\": \"...\",
    \"recent_repos\": [...]
  },
  \"company\": {
    \"name\": \"Example Corp\",
    \"industry\": \"...\",
    \"recent_news\": [...]
  },
  \"past_interactions\": [
    \"Met at conference in 2024\",
    \"Discussed partnership opportunity\"
  ]
}

Brief Generation

简报生成

The AI-generated brief comes in two formats:
AI生成的简报有两种格式

Email Format (Concise Bullets)

邮件格式(简洁要点式)

  1. Quick Overview
    • Who they are (name, title, company)
    • Why you're meeting (meeting title/description)
  2. Background
    • Professional background (LinkedIn)
    • Company context
    • Technical expertise (GitHub, if applicable)
  3. Conversation Starters
    • Based on recent activity
    • Shared interests/connections
    • Relevant topics
  4. Action Items / Notes
    • Past interactions (if any)
    • Things to remember
    • Follow-up items
  1. 快速概览
    • 参会者身份(姓名、职位、公司)
    • 会议目的(会议标题/描述)
2.背景信息
  • 职业背景(LinkedIn资料)
  • 公司背景
  • 技术专长(如适用,来自GitHub)
  1. 话题切入点
    • 基于近期动态
    • 共同兴趣/关联
    • 相关讨论话题
  2. 行动项/注意事项
    • 过往互动记录(如有)
    • 需要记住的信息
    • 后续跟进项

Slack Format (Rich Story)

Slack格式(丰富叙事式)

Deeper, narrative-driven brief with:
  • Paragraph-style storytelling about the person
  • Context about their journey and recent work
  • Compelling hooks and conversation angles
  • More background color and detail
  • Stronger narrative flow than bullet points
Example Brief:
Subject: Meeting Brief: Jane Doe - Product Partnership Discussion

Hi,

You're meeting with Jane Doe today at 2pm.
更深入的叙事式简报,包含:
  • 关于参会者的段落式介绍
  • 其职业历程和近期工作的背景
  • 有吸引力的话题切入点
  • 更详细的背景信息
  • 比要点式更流畅的叙事结构
简报示例:
Subject: Meeting Brief: Jane Doe - Product Partnership Discussion

Hi,

You're meeting with Jane Doe today at 2pm.

Quick Overview

Quick Overview

Jane is VP of Engineering at Example Corp, a B2B SaaS company in the dev tools space. She's been there for 3 years and previously worked at GitHub and Microsoft.
Jane is VP of Engineering at Example Corp, a B2B SaaS company in the dev tools space. She's been there for 3 years and previously worked at GitHub and Microsoft.

Background

Background

  • Strong background in developer tooling and infrastructure
  • Recently led Example Corp's API platform overhaul (launched Q4 2025)
  • Active on GitHub (janedoe) - maintains several open-source CLI tools
  • Technical blog focuses on API design and developer experience
  • Strong background in developer tooling and infrastructure
  • Recently led Example Corp's API platform overhaul (launched Q4 2025)
  • Active on GitHub (janedoe) - maintains several open-source CLI tools
  • Technical blog focuses on API design and developer experience

Conversation Starters

Conversation Starters

  • Their new API platform (just launched, getting good traction)
  • Recent blog post on GraphQL vs REST (published last week)
  • Shared interest in developer experience (noted in her LinkedIn)
  • Their new API platform (just launched, getting good traction)
  • Recent blog post on GraphQL vs REST (published last week)
  • Shared interest in developer experience (noted in her LinkedIn)

Notes

Notes

  • You met briefly at DevTools Summit 2024
  • She mentioned interest in partnering on integration opportunities

Meeting: Product Partnership Discussion Time: Today at 2:00 PM Location: Zoom (link in calendar)
undefined
  • You met briefly at DevTools Summit 2024
  • She mentioned interest in partnering on integration opportunities

Meeting: Product Partnership Discussion Time: Today at 2:00 PM Location: Zoom (link in calendar)
undefined

Manual Usage

手动使用方法

Run for a specific person:
bash
undefined
针对特定人员运行:
bash
undefined

Research a person

Research a person

node scripts/research_person.js "Jane Doe" "jane@example.com" "Example Corp"
node scripts/research_person.js "Jane Doe" "jane@example.com" "Example Corp"

Generate brief

Generate brief

node scripts/generate_brief.js research_output.json meeting_context.json
node scripts/generate_brief.js research_output.json meeting_context.json

Send brief

Send brief

./scripts/send_brief.sh brief.html "Jane Doe"

Run for today's meetings:

```bash
./scripts/run_daily.sh
./scripts/send_brief.sh brief.html "Jane Doe"

针对今日会议运行:

```bash
./scripts/run_daily.sh

Data & Logs

数据与日志

meeting-brief/
├── data/
│   ├── sent/              # Sent brief logs (by date)
│   │   └── 2026-02-21.json
│   ├── research/          # Research cache (by person)
│   │   └── jane-doe.json
│   └── meetings/          # Meeting data (by date)
│       └── 2026-02-21.json
└── logs/
    └── run.log            # Execution logs
meeting-brief/
├── data/
│   ├── sent/              # Sent brief logs (by date)
│   │   └── 2026-02-21.json
│   ├── research/          # Research cache (by person)
│   │   └── jane-doe.json
│   └── meetings/          # Meeting data (by date)
│       └── 2026-02-21.json
└── logs/
    └── run.log            # Execution logs

Tips

使用技巧

  1. Test with dry-run first: Set
    DRY_RUN=true
    in run_daily.sh to preview without sending
  2. Adjust research depth: Start with
    quick
    , upgrade to
    standard
    or
    deep
    as needed
  3. Refine team filter: Add domains/emails to skip internal meetings
  4. Review briefs: Check data/sent/ logs to see what's being sent
  5. Iterate on prompts: Edit generate_brief.js to customize AI prompt
  1. 先进行试运行:在run_daily.sh中设置
    DRY_RUN=true
    ,可预览结果而不实际发送简报
  2. 调整调研深度:从
    quick
    开始,根据需要升级到
    standard
    deep
  3. 优化团队过滤规则:添加域名/邮箱以跳过内部会议
  4. 查看简报记录:检查data/sent/日志查看已发送的简报
  5. 优化提示词:编辑generate_brief.js自定义AI提示词

Troubleshooting

故障排查

No briefs sent:
  • Check gcalcli authentication (
    gcalcli agenda today tomorrow
    )
  • Verify calendar has events with external attendees
  • Check logs in
    logs/run.log
Briefs missing information:
  • Increase
    research_depth
    in config.json
  • Check web_search and GitHub CLI are working
  • Review research data in
    data/research/
Duplicate briefs:
  • Check
    data/sent/
    for already-sent tracking
  • Verify cron job isn't running multiple times
未发送简报:
  • 检查gcalcli认证(运行
    gcalcli agenda today tomorrow
  • 确认日历中有包含外部参会者的活动
  • 查看
    logs/run.log
    中的日志
简报信息缺失:
  • 在config.json中提高
    research_depth
  • 检查web_search和GitHub CLI是否正常工作
  • 查看
    data/research/
    中的调研数据
重复发送简报:
  • 检查
    data/sent/
    中的已发送跟踪记录
  • 确认Cron任务未多次运行

Integration with OpenClaw

与OpenClaw的集成

This skill uses:
  • gcalcli-calendar: For fetching today's meetings
  • web_search: For LinkedIn and company research
  • GitHub CLI (
    gh
    )
    : For GitHub profile lookup
  • memory_search: For past interactions (deep mode)
  • gmail skill: For sending brief emails
  • sessions_spawn: For AI brief generation
  • cron: For daily scheduling
本Skill使用:
  • gcalcli-calendar:获取今日会议
  • web_search:调研LinkedIn和公司信息
  • GitHub CLI (
    gh
    )
    :查找GitHub主页
  • memory_search:查找过往互动(深度模式)
  • gmail skill:发送简报邮件
  • sessions_spawn:生成AI简报
  • cron:每日调度

Privacy & Security

隐私与安全

  • Research data is cached locally in
    data/research/
  • No external APIs (uses web_search, GitHub CLI, memory_search)
  • Briefs sent only to configured email
  • Team member filtering prevents leaking internal info
  • All data stored in skill directory (no cloud storage)
  • 调研数据缓存在本地
    data/research/
    目录
  • 不使用外部API(使用web_search、GitHub CLI、memory_search)
  • 简报仅发送到配置的邮箱
  • 团队成员过滤规则可防止内部信息泄露
  • 所有数据存储在Skill目录中(无云存储)