meeting-notes-formatter

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Meeting Notes Formatter

会议记录格式化工具

Transform raw, unstructured meeting notes into clean, professional documents. Automatically detects sections, extracts action items, parses attendees, and exports to Markdown or PDF.
将原始、无结构的会议记录转换为整洁、专业的文档。可自动检测章节、提取行动项、解析参会人员,并导出为Markdown或PDF格式。

Quick Start

快速开始

python
from scripts.notes_formatter import MeetingNotesFormatter
python
from scripts.notes_formatter import MeetingNotesFormatter

Format raw notes

格式化原始记录

raw_notes = """ Project sync Jan 15 Attendees: John, Sarah, Mike
Discussed Q1 roadmap
  • Feature A is priority
  • Feature B pushed to Q2 Sarah to send updated timeline by Friday Mike will review budget
Next meeting Jan 22 """
formatter = MeetingNotesFormatter(raw_notes) formatter.format() formatter.save("meeting_notes.md")
raw_notes = """ Project sync Jan 15 Attendees: John, Sarah, Mike
Discussed Q1 roadmap
  • Feature A is priority
  • Feature B pushed to Q2 Sarah to send updated timeline by Friday Mike will review budget
Next meeting Jan 22 """
formatter = MeetingNotesFormatter(raw_notes) formatter.format() formatter.save("meeting_notes.md")

Or save as PDF

或保存为PDF

formatter.save("meeting_notes.pdf")
undefined
formatter.save("meeting_notes.pdf")
undefined

Features

功能特性

  • Auto-Detection: Identifies title, attendees, sections, action items
  • Action Item Extraction: Pulls out tasks with owners and due dates
  • Attendee Parsing: Extracts participant list from various formats
  • Section Organization: Groups content into logical sections
  • Output Formats: Markdown, PDF
  • Templates: Structured output with consistent formatting
  • 自动检测:识别标题、参会人员、章节和行动项
  • 行动项提取:提取包含负责人和截止日期的任务
  • 参会人员解析:从多种格式中提取参会人员列表
  • 章节组织:将内容分组为逻辑章节
  • 输出格式:支持Markdown、PDF
  • 模板系统:结构化输出,格式保持一致

API Reference

API 参考

Initialization

初始化

python
undefined
python
undefined

From string

从字符串初始化

formatter = MeetingNotesFormatter(raw_notes_string)
formatter = MeetingNotesFormatter(raw_notes_string)

From file

从文件初始化

formatter = MeetingNotesFormatter.from_file("notes.txt")
undefined
formatter = MeetingNotesFormatter.from_file("notes.txt")
undefined

Formatting

格式化

python
undefined
python
undefined

Auto-format (detects structure)

自动格式化(检测结构)

formatter.format()
formatter.format()

With manual overrides

手动覆盖配置

formatter.set_title("Weekly Standup") formatter.set_date("2024-01-15") formatter.set_attendees(["John Smith", "Sarah Jones"]) formatter.format()
undefined
formatter.set_title("每周站会") formatter.set_date("2024-01-15") formatter.set_attendees(["John Smith", "Sarah Jones"]) formatter.format()
undefined

Manual Configuration

手动配置

python
undefined
python
undefined

Set meeting metadata

设置会议元数据

formatter.set_title("Project Review Meeting") formatter.set_date("January 15, 2024") formatter.set_time("2:00 PM - 3:00 PM") formatter.set_location("Conference Room A")
formatter.set_title("项目评审会议") formatter.set_date("2024年1月15日") formatter.set_time("下午2:00 - 3:00") formatter.set_location("A会议室")

Set attendees

设置参会人员

formatter.set_attendees(["John Smith", "Sarah Jones", "Mike Wilson"])
formatter.set_attendees(["John Smith", "Sarah Jones", "Mike Wilson"])

Add sections manually

手动添加章节

formatter.add_section("Discussion", [ "Reviewed Q1 roadmap", "Discussed resource allocation", "Agreed on priorities" ])
formatter.add_section("讨论内容", [ "评审Q1路线图", "讨论资源分配", "达成优先级共识" ])

Add action items

添加行动项

formatter.add_action_item("Send timeline update", owner="Sarah", due="Friday") formatter.add_action_item("Review budget proposal", owner="Mike")
undefined
formatter.add_action_item("发送时间线更新", owner="Sarah", due="周五") formatter.add_action_item("评审预算提案", owner="Mike")
undefined

Output

输出

python
undefined
python
undefined

Get formatted markdown

获取格式化后的Markdown内容

markdown = formatter.to_markdown()
markdown = formatter.to_markdown()

Save to file

保存到文件

formatter.save("notes.md") # Markdown formatter.save("notes.pdf") # PDF
formatter.save("notes.md") # Markdown格式 formatter.save("notes.pdf") # PDF格式

Get structured data

获取结构化数据

data = formatter.to_dict()
undefined
data = formatter.to_dict()
undefined

Auto-Detection Features

自动检测功能

Title Detection

标题检测

Identifies meeting title from:
  • First line if short and descriptive
  • Lines containing "meeting", "sync", "standup", "review"
  • Date patterns at start of notes
从以下内容识别会议标题:
  • 简短且描述性的第一行
  • 包含“meeting”、“sync”、“standup”、“review”的行
  • 记录开头的日期模式

Attendee Detection

参会人员检测

Extracts attendees from:
  • "Attendees: John, Sarah, Mike"
  • "Present: John Smith, Sarah Jones"
  • "Participants: @john @sarah @mike"
  • Lists following attendee keywords
从以下格式提取参会人员:
  • "Attendees: John, Sarah, Mike"
  • "Present: John Smith, Sarah Jones"
  • "Participants: @john @sarah @mike"
  • 参会人员关键词后的列表

Action Item Detection

行动项检测

Identifies tasks from:
  • "ACTION: Send report"
  • "TODO: Review document"
  • "[John] to send update"
  • "Sarah will review by Friday"
  • Lines with owner/assignee patterns
从以下内容识别任务:
  • "ACTION: Send report"
  • "TODO: Review document"
  • "[John] to send update"
  • "Sarah will review by Friday"
  • 包含负责人/经办人模式的行

Date Detection

日期检测

Extracts dates from:
  • "January 15, 2024"
  • "2024-01-15"
  • "01/15/2024"
  • "Jan 15"
从以下格式提取日期:
  • "January 15, 2024"
  • "2024-01-15"
  • "01/15/2024"
  • "Jan 15"

Output Formats

输出格式

Markdown Output

Markdown输出

markdown
undefined
markdown
undefined

Weekly Project Sync

每周项目同步会

Date: January 15, 2024 Time: 2:00 PM - 3:00 PM Attendees: John Smith, Sarah Jones, Mike Wilson

日期: 2024年1月15日 时间: 下午2:00 - 3:00 参会人员: John Smith, Sarah Jones, Mike Wilson

Discussion

讨论内容

  • Reviewed Q1 roadmap progress
  • Feature A is on track for release
  • Feature B moved to Q2 due to resource constraints
  • 评审Q1路线图进展
  • Feature A按计划推进,即将发布
  • 由于资源限制,Feature B推迟到Q2

Decisions

决策事项

  • Prioritize performance improvements
  • Delay new feature development until Q2
  • 优先处理性能优化
  • 新功能开发推迟至Q2

Action Items

行动项

TaskOwnerDue Date
Send updated timelineSarahJan 19
Review budget proposalMikeJan 22
Schedule follow-upJohnJan 16

Next Meeting: January 22, 2024
undefined
任务负责人截止日期
发送更新后的时间线Sarah1月19日
评审预算提案Mike1月22日
安排跟进会议John1月16日

下次会议: 2024年1月22日
undefined

PDF Output

PDF输出

Professional formatted PDF with:
  • Clean typography
  • Organized sections
  • Action item table
  • Header with meeting details
专业格式化的PDF文件包含:
  • 清晰的排版
  • 有序的章节
  • 行动项表格
  • 包含会议详情的页眉

CLI Usage

CLI使用方法

bash
undefined
bash
undefined

Format notes file

格式化记录文件

python notes_formatter.py --input raw_notes.txt --output formatted.md
python notes_formatter.py --input raw_notes.txt --output formatted.md

Output as PDF

输出为PDF格式

python notes_formatter.py --input notes.txt --output notes.pdf
python notes_formatter.py --input notes.txt --output notes.pdf

With manual metadata

手动指定元数据

python notes_formatter.py --input notes.txt
--title "Weekly Standup"
--date "Jan 15, 2024"
--output standup.md
undefined
python notes_formatter.py --input notes.txt
--title "每周站会"
--date "2024年1月15日"
--output standup.md
undefined

CLI Arguments

CLI参数

ArgumentDescriptionDefault
--input
Input text fileRequired
--output
Output file path
notes.md
--title
Meeting title overrideAuto-detect
--date
Meeting date overrideAuto-detect
--template
Output template
standard
参数描述默认值
--input
输入文本文件必填
--output
输出文件路径
notes.md
--title
手动指定会议标题自动检测
--date
手动指定会议日期自动检测
--template
输出模板
standard

Examples

示例

Raw Notes Input

原始会议记录输入

text
Team standup 1/15

john sarah mike present

Updates:
- John: finished API integration
- Sarah: working on frontend
- Mike: reviewing PRs

Blockers:
Sarah blocked on design specs
need mike to review sarah's PR

action items:
john to deploy to staging today
sarah follow up with design team
mike review PR by EOD

next standup wednesday
text
Team standup 1/15

john sarah mike present

Updates:
- John: finished API integration
- Sarah: working on frontend
- Mike: reviewing PRs

Blockers:
Sarah blocked on design specs
need mike to review sarah's PR

action items:
john to deploy to staging today
sarah follow up with design team
mike review PR by EOD

next standup wednesday

Formatted Output

格式化后输出

markdown
undefined
markdown
undefined

Team Standup

团队站会

Date: January 15, 2024 Attendees: John, Sarah, Mike

日期: 2024年1月15日 参会人员: John, Sarah, Mike

Updates

更新内容

  • John: Finished API integration
  • Sarah: Working on frontend
  • Mike: Reviewing PRs
  • John: 完成API集成
  • Sarah: 开发前端功能
  • Mike: 评审PR

Blockers

阻塞问题

  • Sarah blocked on design specs
  • Need Mike to review Sarah's PR
  • Sarah因设计规范受阻
  • 需要Mike评审Sarah的PR

Action Items

行动项

TaskOwnerDue
Deploy to stagingJohnToday
Follow up with design teamSarah-
Review PRMikeEOD

Next Meeting: Wednesday
undefined
任务负责人截止日期
部署到预发布环境John今日
跟进设计团队Sarah-
评审PRMike当日结束前

下次会议: 周三
undefined

Project Review Notes

项目评审记录示例

python
notes = """
Q4 Review - Dec 15

Present: Leadership team, Product, Engineering

Revenue exceeded targets by 12%
Customer satisfaction at 94%
Engineering delivered 15 of 18 planned features

Challenges:
- Hiring slower than expected
- Two key features delayed

2024 Planning:
Q1 focus on performance
Q2 new product launch
Need budget approval for new hires

Actions:
CEO to approve headcount by Dec 20
VP Eng to present technical roadmap
Product to finalize Q1 priorities
"""

formatter = MeetingNotesFormatter(notes)
formatter.format()
formatter.save("q4_review.pdf")
python
notes = """
Q4 Review - Dec 15

Present: Leadership team, Product, Engineering

Revenue exceeded targets by 12%
Customer satisfaction at 94%
Engineering delivered 15 of 18 planned features

Challenges:
- Hiring slower than expected
- Two key features delayed

2024 Planning:
Q1 focus on performance
Q2 new product launch
Need budget approval for new hires

Actions:
CEO to approve headcount by Dec 20
VP Eng to present technical roadmap
Product to finalize Q1 priorities
"""

formatter = MeetingNotesFormatter(notes)
formatter.format()
formatter.save("q4_review.pdf")

Templates

模板

Standard (Default)

标准模板(默认)

  • Title and metadata header
  • Sections with bullet points
  • Action items table
  • Next meeting footer
  • 标题和元数据页眉
  • 带项目符号的章节
  • 行动项表格
  • 下次会议页脚

Minimal

极简模板

  • Simple markdown
  • No tables
  • Compact format
  • 简洁的Markdown格式
  • 无表格
  • 紧凑布局

Detailed

详细模板

  • Full metadata
  • Timestamps
  • Expanded sections
  • Decision log
  • 完整元数据
  • 时间戳
  • 展开的章节
  • 决策日志

Dependencies

依赖项

reportlab>=4.0.0
python-dateutil>=2.8.0
reportlab>=4.0.0
python-dateutil>=2.8.0

Limitations

局限性

  • English language only
  • Best with structured raw notes
  • May miss context in very informal notes
  • PDF styling is basic
  • 仅支持英文
  • 对结构化的原始记录处理效果最佳
  • 可能无法识别非常非正式记录中的上下文
  • PDF样式较为基础