meeting-analyzer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMeeting Insights Analyzer
会议洞察分析器
Originally contributed by maximcoding — enhanced and integrated by the claude-skills team.
Transform meeting transcripts into concrete, evidence-backed feedback on communication patterns, leadership behaviors, and interpersonal dynamics.
最初由maximcoding贡献——经claude-skills团队增强与整合。
将会议记录转化为关于沟通模式、领导行为及人际互动的具体、有依据的反馈。
Core Workflow
核心工作流程
1. Ingest & Inventory
1. 导入与盘点
Scan the target directory for transcript files (, , , , , ).
.txt.md.vtt.srt.docx.jsonFor each file:
- Extract meeting date from filename or content (expect prefix or embedded timestamps)
YYYY-MM-DD - Identify speaker labels — look for patterns like ,
Speaker 1:,[John]:, VTT/SRT cue formattingJohn Smith 00:14:32 - Detect the user's identity: ask if ambiguous, otherwise infer from the most frequent speaker or filename hints
- Log: filename, date, duration (from timestamps), participant count, word count
Print a brief inventory table so the user confirms scope before heavy analysis begins.
扫描目标目录,查找记录文件(、、、、、)。
.txt.md.vtt.srt.docx.json针对每个文件:
- 从文件名或内容中提取会议日期(预期格式为前缀或内嵌时间戳)
YYYY-MM-DD - 识别speaker标签——查找类似、
Speaker 1:、[John]:、VTT/SRT字幕格式的模式John Smith 00:14:32 - 识别用户身份:若存在歧义则询问用户,否则从发言最频繁者或文件名提示中推断
- 记录:文件名、日期、时长(来自时间戳)、参会人数、词数
打印简要盘点表格,让用户在深度分析前确认分析范围。
2. Normalize Transcripts
2. 记录标准化
Different tools produce wildly different formats. Normalize everything into a common internal structure before analysis:
{ speaker: string, timestamp_sec: number | null, text: string }[]Handling per format:
- VTT/SRT: Parse cue timestamps + text. Speaker labels may be inline () or prefixed.
<v Speaker> - Plain text: Look for or
Name:prefixes per line. If no speaker labels exist, warn the user that per-speaker analysis is limited.[Name] - Markdown: Strip formatting, then treat as plain text.
- DOCX: Extract text content, then treat as plain text.
- JSON: Expect an array of objects with /
speakerfields (common Otter/Fireflies export).text
If timestamps are missing, degrade gracefully — skip timing-dependent metrics (speaking pace, pause analysis) but still run text-based analysis.
不同工具生成的格式差异极大。分析前需将所有记录标准化为统一的内部结构:
{ speaker: string, timestamp_sec: number | null, text: string }[]按格式分别处理:
- VTT/SRT: 解析字幕时间戳与文本。speaker标签可能内嵌()或前缀显示。
<v Speaker> - 纯文本: 查找每行中的或
Name:前缀。若无speaker标签,需提醒用户基于发言者的分析将受限。[Name] - Markdown: 移除格式后按纯文本处理。
- DOCX: 提取文本内容后按纯文本处理。
- JSON: 预期格式为包含/
speaker字段的对象数组(Otter/Fireflies导出的常见格式)。text
若缺少时间戳,需优雅降级——跳过依赖时间的指标(发言速度、停顿分析),但仍可运行基于文本的分析。
3. Analyze
3. 分析
Run all applicable analysis modules below. Each module is independent — skip any that don't apply (e.g., skip speaking ratios if there are no speaker labels).
运行以下所有适用的分析模块。各模块相互独立——跳过不适用的模块(例如:若无speaker标签则跳过发言占比分析)。
Module: Speaking Dynamics
模块:发言动态分析
Calculate per-speaker:
- Word count & percentage of total meeting words
- Turn count — how many times each person spoke
- Average turn length — words per uninterrupted speaking turn
- Longest monologue — flag turns exceeding 60 seconds or 200 words
- Interruption detection — a turn that starts within 2 seconds of the previous speaker's last timestamp, or mid-sentence breaks
Produce a per-meeting summary and a cross-meeting average if multiple transcripts exist.
Red flags to surface:
- User speaks > 60% in a 1:many meeting (dominating)
- User speaks < 15% in a meeting they're facilitating (disengaged or over-delegating)
- One participant never speaks (excluded voice)
- Interruption ratio > 2:1 (user interrupts others twice as often as they're interrupted)
计算每位speaker的:
- 总发言词数及占会议总词数的百分比
- 发言次数——每个人发言的次数
- 平均发言时长——每次不间断发言的词数
- 最长独白——标记时长超过60秒或词数超过200的发言
- 打断检测——在前一位发言者最后时间戳的2秒内开始的发言,或中途打断句子的情况
生成单场会议总结;若有多份记录,则生成跨会议平均值。
需重点标记的警示信号:
- 在一对多会议中,用户发言占比>60%(主导过度)
- 在用户主持的会议中,发言占比<15%(参与度低或过度授权)
- 某参会者全程未发言(被排除的声音)
- 打断比率>2:1(用户打断他人的次数是被他人打断的两倍)
Module: Conflict & Directness
模块:冲突与直接性分析
Scan the user's speech for hedging and avoidance markers:
Hedging language (score per-instance, aggregate per meeting):
- Qualifiers: "maybe", "kind of", "sort of", "I guess", "potentially", "arguably"
- Permission-seeking: "if that's okay", "would it be alright if", "I don't know if this is right but"
- Deflection: "whatever you think", "up to you", "I'm flexible"
- Softeners before disagreement: "I don't want to push back but", "this might be a dumb question"
Conflict avoidance patterns (requires more context, flag with confidence level):
- Topic changes after tension (speaker A raises problem → user pivots to logistics)
- Agreement-without-commitment: "yeah totally" followed by no action or follow-up
- Reframing others' concerns as smaller than stated: "it's probably not that big a deal"
- Absent feedback in 1:1s where performance topics would be expected
For each flagged instance, extract:
- The full quote (with surrounding context — 2 turns before and after)
- A severity tag: (single hedge word),
low(pattern of hedging in one exchange),medium(clearly avoided a necessary conversation)high - A rewrite suggestion: what a more direct version would sound like
扫描用户发言中的回避与模糊表达标记:
模糊表达(按实例打分,按会议汇总):
- 限定词:“maybe”、“kind of”、“sort of”、“I guess”、“potentially”、“arguably”
- 寻求许可:“if that's okay”、“would it be alright if”、“I don't know if this is right but”
- 转移话题:“whatever you think”、“up to you”、“I'm flexible”
- 异议前的软化表达:“I don't want to push back but”、“this might be a dumb question”
冲突回避模式(需更多上下文,标记置信度):
- 出现紧张情绪后转移话题(发言者A提出问题→用户转向后勤话题)
- 无承诺的同意:“yeah totally”后无任何行动或跟进
- 将他人的担忧轻描淡写:“it's probably not that big a deal”
- 在本该讨论绩效的一对一会议中未给出反馈
针对每个标记实例,提取:
- 完整引用(含前后2轮发言的上下文)
- 严重程度标签:(单个模糊词)、
low(单次对话中出现多次模糊表达)、medium(明显回避必要对话)high - 改写建议:更直接的表达示例
Module: Filler Words & Verbal Habits
模块:填充词与语言习惯分析
Count occurrences of: "um", "uh", "like" (non-comparative), "you know", "actually", "basically", "literally", "right?" (tag question), "so yeah", "I mean"
Report:
- Total count per meeting
- Rate per 100 words spoken (normalizes across meeting lengths)
- Breakdown by filler type
- Contextual spikes — do fillers increase in specific situations? (e.g., when responding to a senior stakeholder, when giving negative feedback, when asked a question cold)
Only flag this as an issue if the rate exceeds ~3 per 100 words. Below that, it's normal speech.
统计以下词汇的出现次数:"um"、"uh"、"like"(非比较用法)、"you know"、"actually"、"basically"、"literally"、"right?"(附加疑问句)、"so yeah"、"I mean"
生成报告:
- 每场会议的总次数
- 每100词的出现频率(平衡不同会议时长的差异)
- 填充词类型细分
- 上下文峰值——填充词是否在特定场景下增加?(例如:回应资深利益相关者时、给出负面反馈时、即兴回答问题时)
仅当频率超过约每100词3次时才标记为问题。低于该数值属于正常发言。
Module: Question Quality & Listening
模块:提问质量与倾听能力分析
Classify the user's questions:
- Closed (yes/no): "Did you finish the report?"
- Leading (answer embedded): "Don't you think we should ship sooner?"
- Open genuine: "What's blocking you on this?"
- Clarifying (references prior speaker): "When you said X, did you mean Y?"
- Building (extends another's idea): "That's interesting — what if we also Z?"
Good listening indicators:
- Clarifying and building questions (shows active processing)
- Paraphrasing: "So what I'm hearing is..."
- Referencing a point someone made earlier in the meeting
- Asking quieter participants for input
Poor listening indicators:
- Asking a question that was already answered
- Restating own point without acknowledging the response
- Responding to a question with an unrelated topic
Report the ratio of open/clarifying/building vs. closed/leading questions.
对用户的问题进行分类:
- 封闭式(是/否):"Did you finish the report?"
- 引导式(答案内嵌):"Don't you think we should ship sooner?"
- 开放式真诚提问:"What's blocking you on this?"
- 澄清式(引用前一位发言者):"When you said X, did you mean Y?"
- 延伸式(拓展他人观点):"That's interesting — what if we also Z?"
良好倾听的指标:
- 澄清式与延伸式问题(体现主动思考)
- paraphrasing:"So what I'm hearing is..."
- 引用会议中他人之前提出的观点
- 邀请沉默的参会者发言
不良倾听的指标:
- 提出已被回答过的问题
- 不回应他人的观点,仅重复自身观点
- 用无关话题回应问题
报告开放式/澄清式/延伸式问题与封闭式/引导式问题的比率。
Module: Facilitation & Decision-Making
模块:会议主持与决策分析
Only apply when the user is the meeting organizer or facilitator.
Evaluate:
- Agenda adherence: Did the meeting follow a structure or drift?
- Time management: How long did each topic take vs. expected?
- Inclusion: Did the facilitator actively draw in quiet participants?
- Decision clarity: Were decisions explicitly stated? ("So we're going with option B — Sarah owns the follow-up by Friday.")
- Action items: Were they assigned with owners and deadlines, or left vague?
- Parking lot discipline: Were off-topic items acknowledged and deferred, or did they derail?
仅当用户为会议组织者或主持人时适用。
评估维度:
- 议程 adherence:会议是否遵循既定结构,还是偏离主题?
- 时间管理:每个话题实际耗时与预期耗时的对比?
- 包容性:主持人是否主动引导沉默的参会者发言?
- 决策清晰度:决策是否被明确表述?(例如:“所以我们选择方案B——Sarah负责在周五前跟进。”)
- 行动项:是否分配了负责人与截止日期,还是表述模糊?
- 场外话题管理:是否确认并推迟场外话题,还是让其打乱会议节奏?
Module: Sentiment & Energy
模块:情绪与能量分析
Track the emotional arc of the user's language across the meeting:
- Positive markers: enthusiastic agreement, encouragement, humor, praise
- Negative markers: frustration, dismissiveness, sarcasm, curt responses
- Neutral/flat: low-energy responses, monosyllabic answers
Flag energy drops — moments where the user's engagement visibly decreases (shorter turns, less substantive responses). These often correlate with discomfort, boredom, or avoidance.
跟踪用户语言在会议中的情绪变化曲线:
- 积极标记:热情的同意、鼓励、幽默、表扬
- 消极标记:沮丧、轻视、讽刺、简短生硬的回应
- 中性/平淡:低能量回应、单音节回答
标记能量下降时刻——用户参与度明显降低的瞬间(发言更短、回应更空洞)。这些时刻通常与不适、无聊或回避相关。
4. Output the Report
4. 生成报告
Structure the final output as a single cohesive report. Use this skeleton — omit any section where data was insufficient:
markdown
undefined将最终输出整理为一份连贯的报告。使用以下框架——省略数据不足的部分:
markdown
undefinedMeeting Insights Report
会议洞察报告
Period: [earliest date] – [latest date]
Meetings analyzed: [count]
Total transcript words: [count]
Your speaking share (avg): [X%]
周期: [最早日期] – [最晚日期]
分析会议数量: [数量]
记录总词数: [数量]
您的平均发言占比: [X%]
Top 3 Findings
三大核心发现
[Rank by impact. Each finding gets 2-3 sentences + one concrete example with a direct quote and timestamp.]
[按影响程度排序。每个发现需2-3句话,加一个带直接引用与时间戳的具体示例。]
Detailed Analysis
详细分析
Speaking Dynamics
发言动态
[Stats table + narrative interpretation + flagged red flags]
[统计表格 + 解读说明 + 标记的警示信号]
Directness & Conflict Patterns
直接性与冲突模式
[Flagged instances grouped by pattern type, with quotes and rewrites]
[按模式类型分组标记的实例,含引用与改写建议]
Verbal Habits
语言习惯
[Filler word stats, contextual spikes, only if rate > 3/100 words]
[填充词统计、上下文峰值,仅当频率>3/100词时展示]
Listening & Questions
倾听与提问
[Question type breakdown, listening indicators, specific examples]
[问题类型细分、倾听指标、具体示例]
Facilitation
会议主持
[Only if applicable — agenda, decisions, action items]
[仅适用时展示——议程、决策、行动项]
Energy & Sentiment
能量与情绪
[Arc summary, flagged drops]
[情绪曲线总结、标记的下降时刻]
Strengths
优势
[3 specific things the user does well, with evidence]
[3个用户做得好的具体方面,附证据]
Growth Opportunities
成长机会
[3 ranked by impact, each with: what to change, why it matters, a concrete "try this next time" action]
[按影响程度排序的3项,每项包含:需改变的内容、重要性、具体的“下次尝试”行动建议]
Comparison to Previous Period
与往期对比
[Only if prior analysis exists — delta on key metrics]
undefined[仅当有往期分析时展示——关键指标的变化]
undefined5. Follow-Up Options
5. 后续选项
After delivering the report, offer:
- Deep dive into any specific meeting or pattern
- A 1-page "communication cheat sheet" with the user's top 3 habits to change
- Tracking setup — save current metrics as a baseline for future comparison
- Export as markdown or structured JSON for use in performance reviews
交付报告后,提供以下选项:
- 针对特定会议或模式进行深度剖析
- 生成1页“沟通速查表”,列出用户最需改变的3个习惯
- 设置跟踪——保存当前指标作为未来对比的基准
- 导出为markdown或结构化JSON,用于绩效评估
Edge Cases
边缘情况
- No speaker labels: Warn the user upfront. Run text-level analysis (filler words, question types on the full transcript) but skip per-speaker metrics. Suggest re-exporting with speaker diarization enabled.
- Very short meetings (< 5 minutes or < 500 words): Analyze but caveat that patterns from short meetings may not be representative.
- Non-English transcripts: The filler word and hedging dictionaries are English-centric. For other languages, note the limitation and focus on structural analysis (speaking ratios, turn-taking, question counts).
- Single meeting vs. corpus: If only one transcript, skip trend/comparison language. Focus findings on that meeting alone.
- User not identified: If you can't determine which speaker is the user after scanning, ask before proceeding. Don't guess.
- 无speaker标签: 提前提醒用户。运行文本层面的分析(填充词、全记录的问题类型),但跳过基于发言者的指标。建议重新导出并启用发言者区分功能。
- 极短会议(<5分钟或<500词):进行分析,但需说明短会议的模式可能不具代表性。
- 非英文记录: 填充词与模糊表达词典基于英文。对于其他语言,需说明局限性,重点关注结构分析(发言占比、发言轮次、问题数量)。
- 单场会议 vs. 多场会议:若仅一份记录,跳过趋势/对比描述。重点聚焦该场会议的发现。
- 用户身份未识别: 扫描后仍无法确定哪位发言者是用户时,需先询问再继续。请勿猜测。
Transcript Source Tips
记录来源小贴士
Include this section in output only if the user seems unsure about how to get transcripts:
- Zoom: Settings → Recording → enable "Audio transcript". Download from cloud recordings.
.vtt - Google Meet: Auto-transcription saves to Google Docs in the calendar event's Drive folder.
- Granola: Exports to markdown. Best speaker label quality of consumer tools.
- Otter.ai: Export as or
.txtfrom the web dashboard..json - Fireflies.ai: Export as or
.docx— both work..json - Microsoft Teams: Transcripts appear in the meeting chat. Download as .
.vtt
Recommend naming convention for easy chronological analysis.
YYYY-MM-DD - Meeting Name.ext仅当用户似乎不确定如何获取记录时展示本部分:
- Zoom: 设置 → 录制 → 启用“音频转录”。从云端录制文件中下载格式。
.vtt - Google Meet: 自动转录内容保存至日历事件的Drive文件夹中的Google Docs。
- Granola: 导出为markdown格式。是消费级工具中speaker标签质量最佳的工具。
- Otter.ai: 从网页控制台导出为或
.txt格式。.json - Fireflies.ai: 导出为或
.docx格式——两种格式均适用。.json - Microsoft Teams: 记录出现在会议聊天中。下载为格式。
.vtt
推荐使用命名规范,便于按时间顺序分析。
YYYY-MM-DD - Meeting Name.extAnti-Patterns
反模式
| Anti-Pattern | Why It Fails | Better Approach |
|---|---|---|
| Analyzing without speaker labels | Per-person metrics impossible — results are generic word clouds | Ask user to re-export with speaker identification enabled |
| Running all modules on a 5-minute standup | Overkill — filler word and conflict analysis need 20+ min meetings | Auto-detect meeting length and skip irrelevant modules |
| Presenting raw metrics without context | "You said 'um' 47 times" is demoralizing without benchmarks | Always compare to norms and show trajectory over time |
| Analyzing a single meeting in isolation | One meeting is a snapshot, not a pattern — conclusions are unreliable | Require 3+ meetings minimum for trend-based coaching |
| Treating speaking time equality as the goal | A facilitator SHOULD talk less; a presenter SHOULD talk more | Weight speaking ratios by meeting type and role |
| Flagging every hedge word as negative | "I think" and "maybe" are appropriate in brainstorming | Distinguish between decision meetings (hedges are bad) and ideation (hedges are fine) |
| 反模式 | 问题所在 | 优化方案 |
|---|---|---|
| 无发言者标签时进行分析 | 无法生成个人维度的指标——结果只是通用词云 | 请用户重新导出带有发言者识别功能的记录 |
| 对5分钟站会运行所有模块 | 过度分析——填充词与冲突分析需要20分钟以上的会议 | 自动检测会议时长,跳过无关模块 |
| 仅展示原始指标而无上下文 | “你说‘um’47次”这种表述会打击士气,缺乏基准对比 | 始终与常规水平对比,并展示时间趋势 |
| 孤立分析单场会议 | 单场会议只是快照,而非模式——结论不可靠 | 要求至少3场会议才能进行基于趋势的指导 |
| 将发言时间平等视为目标 | 主持人理应少发言;演讲者理应多发言 | 根据会议类型与角色调整发言占比的权重 |
| 将所有模糊词标记为负面 | “I think”和“maybe”在头脑风暴中是合适的 | 区分决策会议(模糊词不可取)与创意会议(模糊词可接受) |
Related Skills
相关Skill
| Skill | Relationship |
|---|---|
| Broader PM scope — use for project planning, risk, stakeholders |
| Agile ceremonies — pairs with meeting-analyzer for retro quality |
| Store meeting analysis outputs as Confluence pages |
| Executive communication coaching — complementary perspective |
| Skill | 关联关系 |
|---|---|
| 更广泛的PM范围——用于项目规划、风险、利益相关者管理 |
| 敏捷仪式——与会议分析器搭配用于回顾会议质量分析 |
| 将会议分析结果存储为Confluence页面 |
| 高管沟通指导——提供互补视角 |