meeting-analyzer

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Meeting 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
,
.json
).
For each file:
  • Extract meeting date from filename or content (expect
    YYYY-MM-DD
    prefix or embedded timestamps)
  • Identify speaker labels — look for patterns like
    Speaker 1:
    ,
    [John]:
    ,
    John Smith  00:14:32
    , VTT/SRT cue formatting
  • 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]:
    John Smith  00:14:32
    、VTT/SRT字幕格式的模式
  • 识别用户身份:若存在歧义则询问用户,否则从发言最频繁者或文件名提示中推断
  • 记录:文件名、日期、时长(来自时间戳)、参会人数、词数
打印简要盘点表格,让用户在深度分析前确认分析范围。

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 (
    <v Speaker>
    ) or prefixed.
  • Plain text: Look for
    Name:
    or
    [Name]
    prefixes per line. If no speaker labels exist, warn the user that per-speaker analysis is limited.
  • Markdown: Strip formatting, then treat as plain text.
  • DOCX: Extract text content, then treat as plain text.
  • JSON: Expect an array of objects with
    speaker
    /
    text
    fields (common Otter/Fireflies export).
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:
    [Name]
    前缀。若无speaker标签,需提醒用户基于发言者的分析将受限。
  • Markdown: 移除格式后按纯文本处理。
  • DOCX: 提取文本内容后按纯文本处理。
  • JSON: 预期格式为包含
    speaker
    /
    text
    字段的对象数组(Otter/Fireflies导出的常见格式)。
若缺少时间戳,需优雅降级——跳过依赖时间的指标(发言速度、停顿分析),但仍可运行基于文本的分析。

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:
    low
    (single hedge word),
    medium
    (pattern of hedging in one exchange),
    high
    (clearly avoided a necessary conversation)
  • 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
undefined

Meeting 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
[仅当有往期分析时展示——关键指标的变化]
undefined

5. 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
    .vtt
    from cloud recordings.
  • 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
    .txt
    or
    .json
    from the web dashboard.
  • Fireflies.ai: Export as
    .docx
    or
    .json
    — both work.
  • Microsoft Teams: Transcripts appear in the meeting chat. Download as
    .vtt
    .
Recommend
YYYY-MM-DD - Meeting Name.ext
naming convention for easy chronological analysis.

仅当用户似乎不确定如何获取记录时展示本部分:
  • 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.ext
命名规范,便于按时间顺序分析。

Anti-Patterns

反模式

Anti-PatternWhy It FailsBetter Approach
Analyzing without speaker labelsPer-person metrics impossible — results are generic word cloudsAsk user to re-export with speaker identification enabled
Running all modules on a 5-minute standupOverkill — filler word and conflict analysis need 20+ min meetingsAuto-detect meeting length and skip irrelevant modules
Presenting raw metrics without context"You said 'um' 47 times" is demoralizing without benchmarksAlways compare to norms and show trajectory over time
Analyzing a single meeting in isolationOne meeting is a snapshot, not a pattern — conclusions are unreliableRequire 3+ meetings minimum for trend-based coaching
Treating speaking time equality as the goalA facilitator SHOULD talk less; a presenter SHOULD talk moreWeight speaking ratios by meeting type and role
Flagging every hedge word as negative"I think" and "maybe" are appropriate in brainstormingDistinguish between decision meetings (hedges are bad) and ideation (hedges are fine)

反模式问题所在优化方案
无发言者标签时进行分析无法生成个人维度的指标——结果只是通用词云请用户重新导出带有发言者识别功能的记录
对5分钟站会运行所有模块过度分析——填充词与冲突分析需要20分钟以上的会议自动检测会议时长,跳过无关模块
仅展示原始指标而无上下文“你说‘um’47次”这种表述会打击士气,缺乏基准对比始终与常规水平对比,并展示时间趋势
孤立分析单场会议单场会议只是快照,而非模式——结论不可靠要求至少3场会议才能进行基于趋势的指导
将发言时间平等视为目标主持人理应少发言;演讲者理应多发言根据会议类型与角色调整发言占比的权重
将所有模糊词标记为负面“I think”和“maybe”在头脑风暴中是合适的区分决策会议(模糊词不可取)与创意会议(模糊词可接受)

Related Skills

相关Skill

SkillRelationship
project-management/senior-pm
Broader PM scope — use for project planning, risk, stakeholders
project-management/scrum-master
Agile ceremonies — pairs with meeting-analyzer for retro quality
project-management/confluence-expert
Store meeting analysis outputs as Confluence pages
c-level-advisor/executive-mentor
Executive communication coaching — complementary perspective
Skill关联关系
project-management/senior-pm
更广泛的PM范围——用于项目规划、风险、利益相关者管理
project-management/scrum-master
敏捷仪式——与会议分析器搭配用于回顾会议质量分析
project-management/confluence-expert
将会议分析结果存储为Confluence页面
c-level-advisor/executive-mentor
高管沟通指导——提供互补视角