meeting-brief
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMeeting Brief
会议简报
Automated daily meeting preparation system that researches meeting attendees and sends you personalized briefs.
自动化每日会议准备系统,可调研会议参会者并为你发送个性化简报。
What It Does
功能说明
Every morning (configurable time):
- Checks your calendar for today's meetings (via gcalcli)
- Extracts attendees from each meeting
- Filters out your team members (configurable)
- Deep researches each external person:
- LinkedIn profile (web search)
- Company information
- GitHub profile (if engineer)
- Past interactions/notes (memory search)
- Recent news/activity
- Generates AI-powered brief per person
- Sends 1 email per person to your inbox
每天早上(可配置时间):
- 检查你的日历获取今日会议(通过gcalcli)
- 提取每场会议的参会者
- 过滤掉你的团队成员(可配置)
- 深度调研每位外部人员:
- LinkedIn个人主页(网页搜索)
- 公司信息
- GitHub主页(若对方是工程师)
- 过往互动/记录(记忆搜索)
- 近期新闻/动态
- 为每位参会者生成AI驱动的简报
- 向你的收件箱发送每人一份的邮件简报
Setup
设置步骤
1. Configure Team Members
1. 配置团队成员
Edit to list your team members (these will be skipped):
config.jsonjson
{
"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:
- : Emails to skip (exact match)
team_members - : Domain patterns to skip (e.g., skip all @yourcompany.com)
team_domains - : Cron expression for daily run (default: 7am)
schedule - : Timezone for schedule
timezone - : Where to send briefs
your_email - : From address for briefs
brief_from - : Slack incoming webhook URL (optional)
slack_webhook - : Whether to send email briefs (default: true)
send_email - : Whether to send Slack notifications (default: false)
send_slack - : Include meeting time/location in brief
include_calendar_details - :
research_depth(web only),quick(web + GitHub),standard(web + GitHub + past notes)deep
编辑列出你的团队成员(这些人会被跳过):
config.jsonjson
{
\"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 - : 需跳过的域名模式(例如:跳过所有@yourcompany.com邮箱)
team_domains - : 每日运行的Cron表达式(默认:早上7点)
schedule - : 调度使用的时区
timezone - : 简报接收邮箱
your_email - : 简报发件人地址
brief_from - : Slack传入webhook URL(可选)
slack_webhook - : 是否发送邮件简报(默认:开启)
send_email - : 是否发送Slack通知(默认:关闭)
send_slack - : 是否在简报中包含会议时间/地点
include_calendar_details - :
research_depth(仅网页搜索)、quick(网页+GitHub搜索)、standard(网页+GitHub+过往记录搜索)deep
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.shHow It Works
工作原理
Main Workflow (scripts/run_daily.sh
)
scripts/run_daily.sh主工作流(scripts/run_daily.sh
)
scripts/run_daily.sh-
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
-
Filter external attendees (built into run_daily.sh)
- Loads config.json
- Filters out team members and team domains
- Creates list of people to research
-
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
-
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
-
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
- Email: Uses Gmail skill (
-
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
-
Track sent briefs (logs to)
data/sent/YYYY-MM-DD.json- Prevents duplicates
- Enables analytics
-
获取今日会议()
scripts/check_calendar.sh- 使用gcalcli获取今日日程
- 解析会议时间、标题、参会者
- 输出包含会议详情的JSON
-
过滤外部参会者(内置在run_daily.sh中)
- 加载config.json
- 过滤掉团队成员和团队域名对应的参会者
- 创建待调研人员列表
-
调研每位人员()
scripts/research_person.js- 网页搜索:LinkedIn主页、公司信息
- GitHub搜索:主页及代码仓库(如适用)
- 记忆搜索:过往互动/记录
- 新闻搜索:近期动态
- 输出结构化的调研JSON
-
生成简报()
scripts/generate_brief.js- 使用OpenClaw会话生成AI简报
- 输入:调研数据 + 会议背景
- 输出两种格式:
- 邮件:简洁的要点式简报
- Slack:内容丰富的段落式简报,包含更深入的背景和叙事
-
发送简报
- 邮件:使用Gmail Skill(时启用)
send_email: true - Slack:使用webhook(时启用,通过
send_slack: true)scripts/send_slack.sh - 主题:"Meeting Brief: [Person Name] - [Meeting Title]"
- 正文:AI生成的调研简报
- 邮件:使用Gmail Skill(
-
保存到个人CRM()
supernotes/people/- 每位被调研人员的信息保存为Markdown文件
- 包含:调研数据、会议背景、日期
- 逐步构建个人关系数据库
-
跟踪已发送简报(日志记录到)
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
)
research_depthstandarddeepGitHub搜索(当research_depth
为standard
或deep
时启用)
research_depthstandarddeep- GitHub profile lookup (by name/email)
- Recent repos and contributions
- Technical focus areas
- GitHub主页查找(通过姓名/邮箱)
- 近期代码仓库及贡献
- 技术专注领域
Memory/Past Notes (If research_depth
is deep
)
research_depthdeep记忆/过往记录搜索(当research_depth
为deep
时启用)
research_depthdeep- 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)
邮件格式(简洁要点式)
-
Quick Overview
- Who they are (name, title, company)
- Why you're meeting (meeting title/description)
-
Background
- Professional background (LinkedIn)
- Company context
- Technical expertise (GitHub, if applicable)
-
Conversation Starters
- Based on recent activity
- Shared interests/connections
- Relevant topics
-
Action Items / Notes
- Past interactions (if any)
- Things to remember
- Follow-up items
- 快速概览
- 参会者身份(姓名、职位、公司)
- 会议目的(会议标题/描述)
2.背景信息
- 职业背景(LinkedIn资料)
- 公司背景
- 技术专长(如适用,来自GitHub)
-
话题切入点
- 基于近期动态
- 共同兴趣/关联
- 相关讨论话题
-
行动项/注意事项
- 过往互动记录(如有)
- 需要记住的信息
- 后续跟进项
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)
undefinedManual Usage
手动使用方法
Run for a specific person:
bash
undefined针对特定人员运行:
bash
undefinedResearch 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.shData & 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 logsmeeting-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 logsTips
使用技巧
- Test with dry-run first: Set in run_daily.sh to preview without sending
DRY_RUN=true - Adjust research depth: Start with , upgrade to
quickorstandardas neededdeep - Refine team filter: Add domains/emails to skip internal meetings
- Review briefs: Check data/sent/ logs to see what's being sent
- Iterate on prompts: Edit generate_brief.js to customize AI prompt
- 先进行试运行:在run_daily.sh中设置,可预览结果而不实际发送简报
DRY_RUN=true - 调整调研深度:从开始,根据需要升级到
quick或standarddeep - 优化团队过滤规则:添加域名/邮箱以跳过内部会议
- 查看简报记录:检查data/sent/日志查看已发送的简报
- 优化提示词:编辑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 in config.json
research_depth - Check web_search and GitHub CLI are working
- Review research data in
data/research/
Duplicate briefs:
- Check for already-sent tracking
data/sent/ - 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 (): For GitHub profile lookup
gh - 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 ():查找GitHub主页
gh - 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目录中(无云存储)