Meeting Prep 是一个面向开发团队的自动化会议准备与每日提交摘要工具,主要围绕 Google Calendar 和 GitHub 两个数据源工作。
用途 它用于在会议开始前自动检查日程、提醒用户,并基于代码提交生成会议所需的更新内容;同时提供每日提交汇总,帮助团队了解当天所有开发者的工作进展。
主要能力
- 会议准备(Meeting Prep):检查 Google Calendar 中即将到来的、带有视频链接(Google Meet 链接,即 hangoutLink 或 conferenceData)的会议,通知用户,并生成基于提交记录的更新。
- 每日摘要(Daily Summary):在每天结束时汇总所有开发者当天的全部提交。
工作流程 会议准备检查(Meeting Prep Check):
- 触发方式:每 15 分钟一次的 Cron 或心跳。
- 查询已配置日历中未来 45 分钟内的活动。
- 筛选带有 Google Meet 链接(hangoutLink 或 conferenceData)的活动。
- 若会议在 30-45 分钟后且尚未通知:询问用户“会议 [标题] 将在 X 分钟后开始。你上次更新是什么时候?需要我检查哪些仓库?”并在状态文件中记录以避免重复通知。
- 若会议在 10-20 分钟后:根据提交生成更新并发送格式化内容。
每日提交摘要(Daily Commit Summary):
- 触发方式:每天结束时的 Cron。
- 获取已配置仓库当天的全部提交,包含所有开发者。
- 按仓库和子目录分组,并标注作者姓名。
- 发送摘要。
使用方式与配置要求 Google Calendar OAuth:
- 在 Google Cloud Console 中创建 OAuth 凭据:启用 Google Calendar API;创建 OAuth 2.0 桌面凭据;将 client_secret.json 存放在 credentials/ 目录;使用作用域 https://www.googleapis.com/auth/calendar 进行授权;将令牌存放在 credentials/calendar_tokens.json。多账号时,为每个账号存放单独的令牌文件。
GitHub Token:
- 创建具有 repo 作用域的经典个人访问令牌,存放在 credentials/github_token。
API 参考 检查日历: NOW=$(date -u +%Y-%m-%dT%H:%M:%SZ) LATER=$(date -u -d "+45 minutes" +%Y-%m-%dT%H:%M:%SZ) TOKEN=$(jq -r '.access_token' credentials/calendar_tokens.json)
curl -s "https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=$NOW&timeMax=$LATER&singleEvents=true"
-H "Authorization: Bearer $TOKEN" |
jq '[.items[] | select(.hangoutLink != null or .conferenceData != null)]'
刷新令牌: CLIENT_ID=$(jq -r '.installed.client_id' credentials/client_secret.json) CLIENT_SECRET=$(jq -r '.installed.client_secret' credentials/client_secret.json) REFRESH_TOKEN=$(jq -r '.refresh_token' credentials/calendar_tokens.json)
curl -s -X POST https://oauth2.googleapis.com/token
-d "client_id=$CLIENT_ID"
-d "client_secret=$CLIENT_SECRET"
-d "refresh_token=$REFRESH_TOKEN"
-d "grant_type=refresh_token"
获取提交: TOKEN=$(cat credentials/github_token) SINCE=$(date -u -d "-7 days" +%Y-%m-%dT%H:%M:%SZ)
List org repos
curl -s -H "Authorization: Bearer $TOKEN"
"https://api.github.com/orgs/ORG_NAME/repos?per_page=50&sort=pushed"
Get commits
curl -s -H "Authorization: Bearer $TOKEN"
"https://api.github.com/repos/ORG/REPO/commits?since=$SINCE&per_page=30"
输出格式 纯文本,无 markdown,无表情符号:
Update - [DATE]
[repo-name]
[subdirectory] • Verbose description of change (Author) • Another change (Author)
Today • [user input]
Blockers • None
Discussion • None
格式规则
- 先按仓库分组,再按子目录分组。
- 将提交汇总为有意义的描述。
- 包含作者姓名。
- 仅使用纯文本,便于复制粘贴。
状态管理 在 data/meeting-prep-state.json 中跟踪状态: { "notified": {}, "config": { "repoFilter": "org-name/*" } }
适用场景 适用于需要定期站会更新、希望自动从代码提交生成会议材料的开发团队,尤其是使用 Google Calendar 安排带视频链接会议、并使用 GitHub 托管代码的组织。
限制 资料未提供关于收费、价格、平台支持范围、效果保证或具体使用步骤之外的更多信息;实际使用需自行完成上述 OAuth 与令牌配置。