About my-mionote
my-mionote is a command-line skill for finding and processing meeting notes in 妙记. It helps users organize meeting records through filters and provides AI summaries as well as transcripts with speaker details.
Key features
- 01Filter notes by group, date, and title
- 02View AI summaries, key points, and conclusions
- 03Export segmented or plain-text transcripts
- 04Locate quotes by speaker and timestamp
Use cases
- 01Summarize meetings from a group for a month
- 02Find meetings within a date range
- 03Extract action items or decisions from a transcript
- 04Search for and cite meeting quotes
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ mionote/ my-mionote --skill my-mionoteAfter installing, type/my-mionotein Claude Code to confirm it loaded.
Bundled filesscripts/my-mionote.mjs
Details
From the project README前置检查
运行前确认以下两项:
- 已安装 Node.js 18+(
node --version) - 已设置环境变量
MIONOTE_API_KEY
先执行 echo $MIONOTE_API_KEY 检查是否已设置。如果为空,询问用户:
请提供您的妙记 API Key(在 App「我的 → 妙记 Skill」页面生成并复制,msk- 开头),我来帮您配置。
用户提供后,在当前 shell 执行:
export MIONOTE_API_KEY=<key>
保密要求:API Key 等同于用户的纪要数据访问凭证,任何回复中都不要展示完整 Key(只可展示 msk-**** 掩码),也不要写入日志或文件。
命令总览
node scripts/my-mionote.mjs groups [--pretty]
node scripts/my-mionote.mjs list [--page <n>] [--page-size <n>] [--keyword <词>] [--group-id <id>] \
[--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] [--all] [--max <n>] [--pretty]
node scripts/my-mionote.mjs detail <纪要id> [--pretty]
node scripts/my-mionote.mjs transcript <纪要id> [--format segments|text] [--output <文件>] [--pretty]
默认输出单行 JSON,--pretty 缩进。所有数据均为当前 Key 对应用户本人可见的纪要(本人创建 + 他人分享)。
groups — 分组列表
返回 [{id, name, meetingCount}]。用户提到"XX 分组/分类"时,先用它把名称解析成 --group-id;meetingCount=0 的分组直接告知为空,不用再查列表。
list — 纪要列表
- 默认第 1 页、每页 20 条,
--page-size上限 100;--all自动翻页(--max上限,默认 500) --keyword只按标题模糊匹配,不搜正文内容(内容级检索见下方菜谱)--group-id按分组过滤,传-1表示"未分组"--start-date/--end-date按创建时间(≈会议时间)过滤,含首尾两端
记录字段:id / title / voiceStartTime / voiceEndTime / duration / createTime / groupId / groupName / isShared,
aiStatus:0-待处理 1-处理中 2-说话人分离完成 3-AI 纪要生成完成。
detail — 纪要详情(速读首选)
返回基本信息 + AI 纪要(aiSummary 摘要、aiKeyPoint 要点、aiConclusion 结论,仅 aiStatus=3 时完整)+ 用户笔记(userMeetingNoteTitle / userMeetingNote)+ 发言人名单(speakers 逗号分隔,speakerCount)。不含转写原文——需要原文时用 transcript。
transcript — 转录原文(深加工用)
--format segments(默认):segments: [{startTime, speakerId, text}],适合精确引用原话、按发言人分析--format text:text为完整纯文本("发言人1:\n..."),适合整体重新总结--output <文件>:把内容落盘(text 存纯文本,segments 存 JSON),stdout 只回摘要(含 chars/segments 数)。转写可能非常长(1 小时会议可达数万字),拿不准长度时一律先 --output 落盘,再分段读取文件,不要直接吃进上下文- 转写未生成时报错(退出码 3,提示含 aiStatus),如实告知用户"该纪要转写尚未完成"
场景菜谱
「我上周开了哪些会」 → list --start-date <周一> --end-date <周日>,按天整理标题+时长回复。
「总结一下 XX 分组这个月的会」 → groups 解析分组名 → list --group-id <id> --start-date ... --end-date ... → 逐条 detail 取 AI 纪要 → 汇总成一份结构化总结。detail 的 AI 纪要通常足够,不要为"总结"场景拉 transcript。
「帮我重新提取这场会的行动项/决策/风险」(用户对固定口径的 AI 纪要不满足时)→ 定位纪要 id → transcript <id> --format text --output <临时文件> → 读文件按用户要求的口径重新提取。
「会上关于 X 的原话是什么」 → 定位纪要 → transcript <id> --format segments --output <临时文件> → 在文件中检索关键词,引用命中段落(带 speakerId 和 startTime)。
「哪场会提到了预算」(内容级搜索) → --keyword 搜不到正文。正确做法:先用时间/分组/标题把候选缩小到少量几场 → 逐场 transcript 落盘检索 → 汇报命中的会议与上下文。候选太多时,先向用户确认大致时间范围,不要盲目全量拉转写。
Token 经济原则
- 回答顺序永远是:list(定位)→ detail(AI 纪要速读)→ transcript(仅在需要原文时)
- transcript 默认
--output落盘 + 分段读,除非确认是短会(duration 很小) --all全量拉取仅用于"统计所有会议"类需求,总结类需求先收窄范围- 批量 detail 时逐条串行即可,接口限流 120 次/分钟;命中限流(提示"触发限流")稍等再试
注意事项
- 鉴权失败(退出码 2)通常是 Key 被重置——引导用户去 App「妙记 Skill」页面查看或重新生成,不要反复重试。
aiStatus != 3的纪要没有完整 AI 纪要;转写以实际有无为准(接口有数据就返回,没有则报"尚未生成")。- segments 的
startTime可能为 null(历史数据未记录时间戳),引用原话时以 speakerId + 文本为准。