meeting-prep
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMeeting Prep
会议准备
Prepares comprehensive meeting prep notes for upcoming Cal.com bookings by researching participants and auditing session history from the Obsidian vault.
为即将到来的Cal.com预订会议创建全面的准备笔记,包括调研参会人员并查阅Obsidian知识库中的会议历史记录。
Configuration
配置
All paths and settings are in next to this file. Read it before executing any steps.
config.yamlyaml
undefined所有路径和设置都在本文件旁的中。执行任何步骤前请先阅读该文件。
config.yamlyaml
undefinedconfig.yaml — key fields:
config.yaml — 关键字段:
vault.root # Obsidian vault root
vault.meetings # Where meeting notes live
vault.people_search_depth # How deep to search for person notes
prep_notes.prefix # Filename prefix (default: "prep")
prep_notes.type_tag # Frontmatter type value (default: "meeting-prep")
calcom.lookahead_days # Default booking lookahead
calcom.timezone # Display timezone
calcom.time_format # 12h or 24h
**On first run:** Read `config.yaml` from the same directory as this SKILL.md file. Resolve `~` to the user's home directory. Use these values for all path references below — never hardcode paths.vault.root # Obsidian 知识库根目录
vault.meetings # 会议笔记存储位置
vault.people_search_depth # 人员笔记的搜索深度
prep_notes.prefix # 文件名前缀(默认值:"prep")
prep_notes.type_tag # Frontmatter 类型值(默认值:"meeting-prep")
calcom.lookahead_days # 默认预订提前查看天数
calcom.timezone # 显示时区
calcom.time_format # 12小时制或24小时制
**首次运行时:** 读取与本SKILL.md文件同目录下的`config.yaml`。将`~`解析为用户主目录。后续步骤中所有路径引用均使用这些值——切勿硬编码路径。When to Use
使用场景
- User invokes
/meeting-prep - User asks to prepare for upcoming meetings/sessions/calls
- User says "who do I have coming up" or "prep for my next session"
- 用户调用
/meeting-prep - 用户要求为即将到来的会议/会话/通话做准备
- 用户询问“我接下来要见谁”或“为我的下一场会话做准备”
Arguments
参数
- No args → prep all bookings in the next days
calcom.lookahead_days - Date () → prep bookings on that specific date
2026-06-03 - Name () → prep only bookings with that participant
Greg - /
tomorrow/today→ natural date rangesthis week - → scan for unlinked prep↔session note pairs and connect them
link - → reconcile prep notes with Cal.com booking state (cancelled, rescheduled, deleted)
sync - → show Dataview-style overview of all prep notes and their link status
status
- 无参数 → 为未来天内的所有预订做准备
calcom.lookahead_days - 日期()→ 为该特定日期的预订做准备
2026-06-03 - 姓名()→ 仅为包含该参会人员的预订做准备
Greg - /
tomorrow/today→ 自然语言日期范围this week - → 扫描未关联的准备笔记↔会议记录配对并建立关联
link - → 使准备笔记与Cal.com预订状态(已取消、已重新安排、已删除)保持一致
sync - → 以Dataview风格展示所有准备笔记及其关联状态的概览
status
Workflow
工作流程
Step 0: Load Config
步骤0:加载配置
Read from the skill directory. Resolve all paths (expand ). Store as variables for use in subsequent steps:
config.yaml~VAULT_ROOT = config.vault.root
MEETINGS_DIR = config.vault.meetings
PEOPLE_DEPTH = config.vault.people_search_depth
PREP_PREFIX = config.prep_notes.prefix
TYPE_TAG = config.prep_notes.type_tag
LOOKAHEAD = config.calcom.lookahead_days
TIMEZONE = config.calcom.timezone从技能目录读取。解析所有路径(展开)。将其存储为变量供后续步骤使用:
config.yaml~VAULT_ROOT = config.vault.root
MEETINGS_DIR = config.vault.meetings
PEOPLE_DEPTH = config.vault.people_search_depth
PREP_PREFIX = config.prep_notes.prefix
TYPE_TAG = config.prep_notes.type_tag
LOOKAHEAD = config.calcom.lookahead_days
TIMEZONE = config.calcom.timezoneStep 1: Fetch Bookings
步骤1:获取预订信息
Load Cal.com MCP tools via ToolSearch (query: "calcom", max_results: 20). Then:
- Call to retrieve upcoming bookings (status: accepted) within the target date range
get_bookings - For each booking, call to get the full attendee list — Cal.com bookings can have multiple attendees (e.g., lab sessions, masterminds, group calls)
get_booking_attendees - Filter by arguments if provided (date, name)
- If no bookings found, report and stop
通过ToolSearch加载Cal.com MCP工具(查询:"calcom",最大结果数:20)。然后:
- 调用获取目标日期范围内的即将到来的预订(状态:已接受)
get_bookings - 对于每个预订,调用获取完整参会人员列表——Cal.com预订可包含多名参会者(例如实验室会议、智囊团会议、群组通话)
get_booking_attendees - 如果提供了参数(日期、姓名),则按参数过滤
- 如果未找到任何预订,报告结果并停止
Step 2: Search Vault for Session History
步骤2:在知识库中搜索会议历史
For each unique participant, search for previous session notes:
MEETINGS_DIRbash
grep -rl "PARTICIPANT_NAME" $MEETINGS_DIR 2>/dev/nullRead matching files (up to 5 most recent) to extract:
- Date and duration of each past session
- Key topics discussed (from headings, summary sections, or transcript excerpts)
- Any action items or follow-ups mentioned
- Session source (Fathom, Granola, manual)
Also search for a person note in the vault:
bash
find $VAULT_ROOT -maxdepth $PEOPLE_DEPTH -name "*PARTICIPANT_NAME*" -not -path "*/Meetings/*" 2>/dev/null针对每位唯一参会者,在中搜索过往会议记录:
MEETINGS_DIRbash
grep -rl "PARTICIPANT_NAME" $MEETINGS_DIR 2>/dev/null读取匹配文件(最多最近5个)以提取:
- 每场过往会议的日期和时长
- 讨论的关键主题(来自标题、摘要部分或转录片段)
- 提及的任何行动项或跟进事项
- 会议来源(Fathom、Granola、手动记录)
同时在知识库中搜索人员笔记:
bash
find $VAULT_ROOT -maxdepth $PEOPLE_DEPTH -name "*PARTICIPANT_NAME*" -not -path "*/Meetings/*" 2>/dev/nullStep 3: Research Participants (Workflow)
步骤3:调研参会人员(工作流)
Use the Workflow tool to parallelize participant research. Pass and via workflow args so subagents know where to search.
MEETINGS_DIRVAULT_ROOTFor each unique participant, spawn an agent that:
- Web-searches the participant's name + company/email domain
- Checks LinkedIn profile (via web search, not direct scrape)
- Summarizes: role, company, recent activity, mutual context
- For returning participants: cross-references with vault history to identify patterns and continuity points
使用工作流工具并行处理参会人员调研。通过工作流参数传递和,以便子Agent知道搜索位置。
MEETINGS_DIRVAULT_ROOT针对每位唯一参会者,生成一个Agent执行以下操作:
- 网络搜索参会者姓名 + 公司/邮箱域名
- 查看LinkedIn资料(通过网络搜索,而非直接爬取)
- 总结:职位、公司、近期活动、共同关联背景
- 对于回头参会者:与知识库历史记录交叉引用,识别模式和连续性要点
Step 4: Create Prep Notes in Obsidian
步骤4:在Obsidian中创建准备笔记
There are two modes depending on the number of attendees:
- Solo session (1 attendee): one prep note per session, exactly as described below. Filename:
YYYYMMDD-$PREP_PREFIX-PARTICIPANT_SLUG.md - Group session (2+ attendees): one prep note for the whole session. Filename: (where
YYYYMMDD-$PREP_PREFIX-EVENT_SLUG.mdis the Cal.com event type slug in lowercase kebab-case). The note lists all attendees with brief profiles, and the research section covers all participants.EVENT_SLUG
If a prep note already exists for that date+session, update it instead of creating a duplicate.
根据参会人数分为两种模式:
- 一对一会议(1名参会者):每场会议对应一份准备笔记,具体如下。文件名:
YYYYMMDD-$PREP_PREFIX-PARTICIPANT_SLUG.md - 群组会议(2名及以上参会者):整场会议对应一份准备笔记。文件名:(其中
YYYYMMDD-$PREP_PREFIX-EVENT_SLUG.md为Cal.com活动类型的小写短横线格式别名)。笔记中列出所有参会者的简要资料,调研部分涵盖所有参会人员。EVENT_SLUG
如果该日期+会议的准备笔记已存在,则更新笔记而非创建重复文件。
Solo Session Template
一对一会议模板
Use this template:
markdown
---
type: $TYPE_TAG
date: YYYY-MM-DD
participant: "Full Name"
email: email@example.com
event_type: "Cal.com event type name"
duration: X min
time: "HH:MM $TIMEZONE"
zoom_link: "https://..."
status: prep
session_note: ""
tags:
- $TYPE_TAG
- SESSION_TYPE
---使用以下模板:
markdown
---
type: $TYPE_TAG
date: YYYY-MM-DD
participant: "全名"
email: email@example.com
event_type: "Cal.com活动类型名称"
duration: X min
time: "HH:MM $TIMEZONE"
zoom_link: "https://..."
status: prep
session_note: ""
tags:
- $TYPE_TAG
- SESSION_TYPE
---Prep: Full Name — YYYY-MM-DD
准备:全名 — YYYY-MM-DD
Session Info
会议信息
- Time: HH:MM–HH:MM $TIMEZONE (Day of week)
- Type: Event type name (X min)
- Location: Zoom link
- Participant timezone: Timezone
- 时间: HH:MM–HH:MM $TIMEZONE(星期X)
- 类型: 活动类型名称(X分钟)
- 地点: Zoom链接
- 参会者时区: 时区
About FIRST_NAME
关于FIRST_NAME
RESEARCH_SUMMARY
调研摘要
Previous Sessions (N total)
过往会议(共N场)
Most Recent: YYYY-MM-DD — Event Type
最近一场:YYYY-MM-DD — 活动类型
KEY_TOPICS_AND_OUTCOMES
关键主题与成果
Earlier Sessions
更早的会议
BRIEF_LIST_WITH_DATES_AND_TOPICS
包含日期和主题的简要列表
Continuity & Follow-ups
连续性与跟进事项
- Outstanding action items from previous sessions
- Recurring themes or patterns
- Progress on previously discussed goals
- 过往会议中未完成的行动项
- 重复出现的主题或模式
- 之前讨论目标的进展情况
Prep Ideas
准备思路
- Conversation starters from research
- Topics to revisit based on session history
- Questions to explore
- 基于调研的对话开场话题
- 根据会议历史需要重温的主题
- 有待探讨的问题
Notes
笔记
Space for pre-meeting thoughts and during-meeting notes
undefined用于记录会前想法和会中笔记的空间
undefinedSequential Bookings for the Same Participant
同一参会者的连续预订
When multiple bookings exist for the same participant within the lookahead window (e.g., Jun 3 and Jun 9), sort them by date and handle as follows:
- First booking: standard prep note, no changes.
- Second+ booking: the prep note should acknowledge the earlier session:
- Add to frontmatter, pointing to the earlier prep note
prior_prep: "[[YYYYMMDD-prep-participant]]" - Include a ## Prior Session section after Session Info:
markdown
## Prior Session A session with FIRST_NAME is scheduled for PRIOR_DATE — it will have happened by the time this session occurs. Update this note after the PRIOR_DATE session with fresh context. - Keep the full research/history sections but flag them as "will be stale after PRIOR_DATE" so the user knows to revisit
- The note is still useful as-is for background research, but action items and continuity will need a post-session refresh
- Add
For first-time participants (no vault history), replace the "Previous Sessions" and "Continuity" sections with:
markdown
undefined当同一参会者在提前查看窗口内有多个预订时(例如6月3日和6月9日),按日期排序并按以下方式处理:
- 第一场预订:标准准备笔记,无需修改。
- 第二场及后续预订:准备笔记应提及之前的会议:
- 在Frontmatter中添加,指向更早的准备笔记
prior_prep: "[[YYYYMMDD-prep-participant]]" - 在会议信息后添加**## 之前的会议**部分:
markdown
## 之前的会议 将于PRIOR_DATE与FIRST_NAME举行一场会议——在本次会议召开前,该会议已结束。 PRIOR_DATE会议结束后,请更新本笔记以获取最新背景信息。 - 保留完整的调研/历史部分,但标记为“PRIOR_DATE后将过期”,以便用户知晓需要重新查看
- 笔记本身仍可作为背景调研资料,但行动项和连续性内容需要在会后更新
- 在Frontmatter中添加
对于首次参会者(知识库中无历史记录),将“过往会议”和“连续性”部分替换为:
markdown
undefinedFirst Meeting
首次会议
No previous sessions found in vault.
知识库中未找到过往会议记录。
Context & Talking Points
背景与谈话要点
- Research-based conversation starters
- Questions to understand their goals and needs
- How they likely found you / booking context
undefined- 基于调研的对话开场话题
- 用于了解他们目标和需求的问题
- 他们可能找到您的方式/预订背景
undefinedGroup Session Template
群组会议模板
For bookings with 2+ attendees, use this template instead:
markdown
---
type: $TYPE_TAG
date: YYYY-MM-DD
participants:
- name: "Full Name 1"
email: email1@example.com
- name: "Full Name 2"
email: email2@example.com
event_type: "Cal.com event type name"
duration: X min
time: "HH:MM $TIMEZONE"
zoom_link: "https://..."
status: prep
session_note: ""
tags:
- $TYPE_TAG
- SESSION_TYPE
---对于有2名及以上参会者的预订,改用以下模板:
markdown
---
type: $TYPE_TAG
date: YYYY-MM-DD
participants:
- name: "全名1"
email: email1@example.com
- name: "全名2"
email: email2@example.com
event_type: "Cal.com活动类型名称"
duration: X min
time: "HH:MM $TIMEZONE"
zoom_link: "https://..."
status: prep
session_note: ""
tags:
- $TYPE_TAG
- SESSION_TYPE
---Prep: Event Type Name — YYYY-MM-DD
准备:活动类型名称 — YYYY-MM-DD
Session Info
会议信息
- Time: HH:MM–HH:MM $TIMEZONE (Day of week)
- Type: Event type name (X min)
- Location: Zoom link
- Attendees: N participants
- 时间: HH:MM–HH:MM $TIMEZONE(星期X)
- 类型: 活动类型名称(X分钟)
- 地点: Zoom链接
- 参会者: N名参与者
Attendees
参会者
FIRST_NAME_1 LAST_NAME_1
FIRST_NAME_1 LAST_NAME_1
BRIEF_PROFILE_AND_RESEARCH_SUMMARY
简要资料与调研摘要
FIRST_NAME_2 LAST_NAME_2
FIRST_NAME_2 LAST_NAME_2
BRIEF_PROFILE_AND_RESEARCH_SUMMARY
简要资料与调研摘要
Previous Sessions per Attendee
每位参会者的过往会议
SUMMARY_OF_VAULT_HISTORY_PER_ATTENDEE (grouped by person, skip if no history)
知识库中每位参会者的历史记录摘要(按人员分组,无历史记录则跳过)
Prep Ideas
准备思路
- Group dynamics to consider
- Topics to cover with the full group
- Individual follow-ups to weave in
- 需要考虑的群组动态
- 需要向全体参会者覆盖的主题
- 需要融入的个人跟进事项
Notes
笔记
Space for pre-meeting thoughts and during-meeting notes
undefined用于记录会前想法和会中笔记的空间
undefinedStep 5: Report
步骤5:报告
After creating all prep notes, output a concise summary:
- List of prepped sessions (date, time, participant, event type)
- Key highlights (first-timers flagged, notable follow-ups from history)
- Links to the created prep notes as
[[YYYYMMDD-PREP_PREFIX-participant-slug]]
创建所有准备笔记后,输出简洁摘要:
- 已准备的会议列表(日期、时间、参会者、活动类型)
- 关键亮点(标记首次参会者、历史记录中值得注意的跟进事项)
- 所创建准备笔记的链接,格式为
[[YYYYMMDD-PREP_PREFIX-participant-slug]]
Notes
注意事项
- Always convert times to the configured for display
TIMEZONE - Participant research should be respectful — professional context only
- If a participant has many previous sessions (>5), focus on the 3 most recent + overall patterns
- The prep note should be actionable: things to discuss, not just a dossier
- Tag first-time participants so they're easy to filter in Obsidian
- For group sessions, use the event type slug for the filename instead of participant name
- 始终将时间转换为配置的进行显示
TIMEZONE - 参会者调研应保持尊重——仅收集专业背景信息
- 如果参会者有大量过往会议(超过5场),重点关注最近3场+整体模式
- 准备笔记应具备可操作性:包含待讨论事项,而非仅仅是资料汇编
- 标记首次参会者,以便在Obsidian中轻松筛选
- 对于群组会议,使用活动类型别名作为文件名,而非参会者姓名
Linking: meeting-prep link
meeting-prep link关联功能:meeting-prep link
meeting-prep linkWhen invoked with , scan for prep notes that don't yet have a linked session note, and connect them.
link调用参数时,扫描尚未关联会议记录的准备笔记并建立关联。
linkHow It Works
工作原理
- Find all prep notes:
bash
grep -rl "type: $TYPE_TAG" $MEETINGS_DIR 2>/dev/null-
For each prep note with(unlinked):
session_note: ""- Extract and
datefrom frontmatterparticipant - Search for a matching post-meeting note by date + participant name:
bashfind $MEETINGS_DIR -name "YYYYMMDD-*" -not -name "*$PREP_PREFIX*" | xargs grep -l "PARTICIPANT_NAME" 2>/dev/null- Fathom notes have in YAML frontmatter; Granola notes have
participants:tooparticipants: - Match by date prefix AND participant name appearing in the file
- Extract
-
When a match is found, update both files:In the prep note:
- Update frontmatter:
session_note: "[[YYYYMMDD-matching-note-filename]]" - Update →
status: prepstatus: done
In the session note:- Append a section at the end (before any existing
## Prep Notesection if present):## See also
markdown## Prep Note - [[YYYYMMDD-PREP_PREFIX-participant-slug]]- If the session note already has a section, add the link there instead of creating a new section
## See also
- Update frontmatter:
-
Report which notes were linked and which prep notes are still unlinked (meeting hasn't happened yet or transcript not imported)
- 查找所有准备笔记:
bash
grep -rl "type: $TYPE_TAG" $MEETINGS_DIR 2>/dev/null-
对于每个(未关联)的准备笔记:
session_note: ""- 从Frontmatter中提取和
dateparticipant - 按日期+参会者姓名搜索匹配的会后记录:
bashfind $MEETINGS_DIR -name "YYYYMMDD-*" -not -name "*$PREP_PREFIX*" | xargs grep -l "PARTICIPANT_NAME" 2>/dev/null- Fathom笔记的YAML Frontmatter中包含;Granola笔记同样包含
participants:participants: - 按日期前缀和文件中出现的参会者姓名进行匹配
- 从Frontmatter中提取
-
找到匹配项后,更新两个文件:在准备笔记中:
- 更新Frontmatter:
session_note: "[[YYYYMMDD-matching-note-filename]]" - 更新→
status: prepstatus: done
在会议记录中:- 在末尾添加部分(如果已有
## 准备笔记部分,则添加到该部分之前):## 另请参阅
markdown## 准备笔记 - [[YYYYMMDD-PREP_PREFIX-participant-slug]]- 如果会议记录已有部分,则在该部分添加链接,而非创建新部分
## 另请参阅
- 更新Frontmatter:
-
报告已关联的笔记以及仍未关联的准备笔记(会议尚未举行或转录内容未导入)
Matching Rules
匹配规则
- Date must match exactly (same YYYYMMDD prefix)
- Participant name match is fuzzy: check both full name and first name, case-insensitive
- Skip files that are themselves prep notes (in filename)
-$PREP_PREFIX- - If multiple session notes match the same date+participant, prefer the one with a transcript (longer file)
- Never create duplicate links — check if the link already exists before adding
- 日期必须完全匹配(相同的YYYYMMDD前缀)
- 参会者姓名匹配为模糊匹配:检查全名和名字,不区分大小写
- 跳过本身是准备笔记的文件(文件名中包含)
-$PREP_PREFIX- - 如果多个会议记录匹配同一日期+参会者,优先选择包含转录内容的文件(文件更长)
- 切勿创建重复链接——添加前检查链接是否已存在
Sync: meeting-prep sync
meeting-prep sync同步功能:meeting-prep sync
meeting-prep syncWhen invoked with , reconcile all active prep notes with the current state of their Cal.com bookings. This catches cancellations, reschedules, and deleted bookings that would otherwise leave stale prep notes in the vault.
sync调用参数时,使所有活跃准备笔记与Cal.com预订的当前状态保持一致。这可以捕捉到取消、重新安排和删除的预订,避免知识库中留下过时的准备笔记。
syncHow It Works
工作原理
- Find all active prep notes:
bash
grep -rl "type: $TYPE_TAG" $MEETINGS_DIR 2>/dev/nullFilter to only notes where (skip , , ).
status: prepdonecancelledorphaned-
Extract booking identifiers from each prep note's frontmatter:
- (YYYY-MM-DD)
date - (full name)
participant - (attendee email)
email - (Cal.com event type name)
event_type
-
Check Cal.com state: Load Cal.com MCP tools via ToolSearch (query: "calcom", max_results: 20). Callto retrieve bookings covering the date range of all active prep notes. For each prep note, match against Cal.com bookings by date + attendee email.
get_bookings -
Update based on booking status:Cancelled — the booking exists on Cal.com with a cancelled status:
- Update frontmatter: →
status: prepstatus: cancelled - Append a section to the note:
markdown## Cancelled Booking was cancelled on YYYY-MM-DD (detected during sync).Rescheduled — the booking exists but with a different date/time:- Update the field in frontmatter to the new date
date - Update the field to the new time
time - Rename the file from to
YYYYMMDD-$PREP_PREFIX-participant-slug.mdNEW_YYYYMMDD-$PREP_PREFIX-participant-slug.md - Append a section to the note:
markdown## Rescheduled Moved from ORIGINAL_DATE to NEW_DATE (detected during sync on YYYY-MM-DD).Still active — booking exists, same date/time, accepted status:- No changes needed.
- Update frontmatter:
-
Report what changed: Output a summary table listing each prep note and the action taken (no change / cancelled / rescheduled / orphaned).
- 查找所有活跃准备笔记:
bash
grep -rl "type: $TYPE_TAG" $MEETINGS_DIR 2>/dev/null过滤出的笔记(跳过、、状态)。
status: prepdonecancelledorphaned-
从每个准备笔记的Frontmatter中提取预订标识符:
- (YYYY-MM-DD)
date - (全名)
participant - (参会者邮箱)
email - (Cal.com活动类型名称)
event_type
-
检查Cal.com状态: 通过ToolSearch加载Cal.com MCP工具(查询:"calcom",最大结果数:20)。调用获取涵盖所有活跃准备笔记日期范围的预订。对于每个准备笔记,按日期+参会者邮箱与Cal.com预订进行匹配。
get_bookings -
根据预订状态更新:已取消——Cal.com上的预订状态为已取消:
- 更新Frontmatter:→
status: prepstatus: cancelled - 在笔记末尾添加部分:
markdown## 已取消 预订于YYYY-MM-DD取消(同步时检测到)。已重新安排——预订存在但日期/时间不同:- 将Frontmatter中的字段更新为新日期
date - 将字段更新为新时间
time - 将文件名从重命名为
YYYYMMDD-$PREP_PREFIX-participant-slug.mdNEW_YYYYMMDD-$PREP_PREFIX-participant-slug.md - 在笔记末尾添加部分:
markdown## 已重新安排 从ORIGINAL_DATE移至NEW_DATE(YYYY-MM-DD同步时检测到)。仍活跃——预订存在,日期/时间不变,状态为已接受:- 无需修改。
- 更新Frontmatter:
-
报告变更内容: 输出摘要表格,列出每个准备笔记及所执行的操作(无变更/已取消/已重新安排/孤立)。
Edge Cases
边缘情况
- Booking not found on Cal.com (may have been deleted entirely, or is older than Cal.com's retention): Update frontmatter →
status: prep. Append:status: orphanedmarkdown## Orphaned No matching booking found on Cal.com (detected during sync on YYYY-MM-DD). The booking may have been deleted. - Multiple bookings on the same day with the same participant: Match by in addition to date + attendee email to disambiguate. If ambiguity remains, skip the note and flag it in the report for manual review.
event_type - Prep notes with : Skip entirely — these are already linked to session notes and should not be modified by sync.
status: done
- Cal.com上未找到预订(可能已完全删除,或超出Cal.com的保留期限):更新Frontmatter的→
status: prep。添加:status: orphanedmarkdown## 孤立 Cal.com上未找到匹配的预订(YYYY-MM-DD同步时检测到)。该预订可能已被删除。 - 同一日期同一参会者有多个预订:除了日期+参会者邮箱外,还按进行匹配以消除歧义。如果仍存在歧义,则跳过该笔记并在报告中标记以便手动审核。
event_type - 的准备笔记:完全跳过——这些笔记已关联到会议记录,同步不应修改它们。
status: done
Status & Queries: meeting-prep status
meeting-prep status状态与查询:meeting-prep status
meeting-prep statusWhen invoked with , scan all prep notes and report their current state. Also output useful Dataview queries the user can paste into their vault.
status调用参数时,扫描所有准备笔记并报告其当前状态。同时输出用户可粘贴到知识库中的实用Dataview查询。
statusStatus Report
状态报告
Scan for files matching . For each, read frontmatter and report:
$MEETINGS_DIR*-$PREP_PREFIX-*.md| Date | Participant | Status | Session Note |
|---|---|---|---|
from | from | | linked note or |
After the table, output a Top 5 most-met participants summary by scanning all prep notes in the vault, counting occurrences per participant, and listing the top 5 with their session count and date of last meeting.
扫描中匹配的文件。对于每个文件,读取Frontmatter并报告:
$MEETINGS_DIR*-$PREP_PREFIX-*.md| 日期 | 参会者 | 状态 | 会议记录 |
|---|---|---|---|
来自 | 来自 | | 关联笔记或 |
表格之后,输出参会次数最多的前5名人员摘要:扫描知识库中所有准备笔记,统计每位参会者的出现次数,列出前5名及其会议次数和最后一次会议日期。
Dataview Queries
Dataview查询
Include these ready-to-paste queries in the status output:
Upcoming preps (unlinked):
markdown
```dataview
TABLE participant AS "Who", time AS "Time", event_type AS "Type", duration + " min" AS "Duration"
FROM "Meetings"
WHERE type = "$TYPE_TAG" AND status = "prep"
SORT date ASC
```Completed preps (linked to session notes):
markdown
```dataview
TABLE participant AS "Who", date AS "Date", session_note AS "Session Note"
FROM "Meetings"
WHERE type = "$TYPE_TAG" AND status = "done"
SORT date DESC
```Prep coverage — sessions without a prep note:
markdown
```dataview
TABLE title AS "Session", date AS "Date", participants AS "Participants"
FROM "Meetings"
WHERE !contains(file.name, "$PREP_PREFIX") AND !contains(file.inlinks.file.name, "$PREP_PREFIX")
SORT date DESC
LIMIT 20
```All preps by participant:
markdown
```dataview
TABLE date AS "Date", status AS "Status", event_type AS "Type", session_note AS "Linked"
FROM "Meetings"
WHERE type = "$TYPE_TAG"
SORT participant ASC, date DESC
```在状态输出中包含以下可直接粘贴的查询:
即将到来的准备笔记(未关联):
markdown
```dataview
TABLE participant AS "参会者", time AS "时间", event_type AS "类型", duration + " min" AS "时长"
FROM "Meetings"
WHERE type = "$TYPE_TAG" AND status = "prep"
SORT date ASC
```已完成的准备笔记(关联到会议记录):
markdown
```dataview
TABLE participant AS "参会者", date AS "日期", session_note AS "会议记录"
FROM "Meetings"
WHERE type = "$TYPE_TAG" AND status = "done"
SORT date DESC
```准备覆盖情况——无准备笔记的会议:
markdown
```dataview
TABLE title AS "会议", date AS "日期", participants AS "参会者"
FROM "Meetings"
WHERE !contains(file.name, "$PREP_PREFIX") AND !contains(file.inlinks.file.name, "$PREP_PREFIX")
SORT date DESC
LIMIT 20
```按参会者汇总所有准备笔记:
markdown
```dataview
TABLE date AS "日期", status AS "状态", event_type AS "类型", session_note AS "已关联"
FROM "Meetings"
WHERE type = "$TYPE_TAG"
SORT participant ASC, date DESC
```Relationship & Activity Queries
关系与活动查询
Meeting frequency by participant:
markdown
```dataview
TABLE length(rows) AS "Sessions", min(rows.date) AS "First", max(rows.date) AS "Last"
FROM "Meetings"
WHERE type = "$TYPE_TAG"
GROUP BY participant
SORT length(rows) DESC
```Participant timeline (embed in a participant's person note — uses for context):
this.participantmarkdown
```dataview
TABLE date AS "Date", event_type AS "Type", status AS "Status", session_note AS "Linked"
FROM "Meetings"
WHERE type = "$TYPE_TAG" AND participant = this.participant
SORT date DESC
```Recent meeting activity (last 30 days, all sessions, cross-referenced with prep coverage):
markdown
```dataview
TABLE title AS "Session", participants AS "With",
choice(contains(file.inlinks.file.name, "prep"), "✓", "—") AS "Prepped"
FROM "Meetings"
WHERE date >= date(today) - dur(30 days) AND !contains(file.name, "prep")
SORT date DESC
```First-timers list (people met only once — potential follow-up candidates):
markdown
```dataview
TABLE participant AS "Who", date AS "Met On", event_type AS "Type"
FROM "Meetings"
WHERE type = "$TYPE_TAG"
GROUP BY participant
FLATTEN length(rows) AS count
WHERE count = 1
FLATTEN rows.date AS date
FLATTEN rows.event_type AS event_type
SORT date DESC
```按参会者统计会议频率:
markdown
```dataview
TABLE length(rows) AS "会议次数", min(rows.date) AS "首次", max(rows.date) AS "末次"
FROM "Meetings"
WHERE type = "$TYPE_TAG"
GROUP BY participant
SORT length(rows) DESC
```参会者时间线(嵌入到参会者的个人笔记中——使用获取上下文):
this.participantmarkdown
```dataview
TABLE date AS "日期", event_type AS "类型", status AS "状态", session_note AS "已关联"
FROM "Meetings"
WHERE type = "$TYPE_TAG" AND participant = this.participant
SORT date DESC
```近期会议活动(过去30天,所有会议,交叉引用准备覆盖情况):
markdown
```dataview
TABLE title AS "会议", participants AS "参会者",
choice(contains(file.inlinks.file.name, "prep"), "✓", "—") AS "已准备"
FROM "Meetings"
WHERE date >= date(today) - dur(30 days) AND !contains(file.name, "prep")
SORT date DESC
```首次参会者列表(仅见过一次的人员——潜在跟进对象):
markdown
```dataview
TABLE participant AS "参会者", date AS "会面日期", event_type AS "类型"
FROM "Meetings"
WHERE type = "$TYPE_TAG"
GROUP BY participant
FLATTEN length(rows) AS count
WHERE count = 1
FLATTEN rows.date AS date
FLATTEN rows.event_type AS event_type
SORT date DESC
```