{"id":50126149,"url":"https://github.com/ztxtech/meeting-auto-summary","last_synced_at":"2026-05-23T20:03:17.870Z","repository":{"id":359570964,"uuid":"1246667019","full_name":"ztxtech/meeting-auto-summary","owner":"ztxtech","description":"Local meeting audio/video transcription skill with speaker diarization, subtitles, summaries, reports, and optional translation.","archived":false,"fork":false,"pushed_at":"2026-05-22T14:14:28.000Z","size":22,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T18:13:34.111Z","etag":null,"topics":["ai-skills","claude-code","codex","local-ai","meeting-summary","mlx","mlx-audio","opencode","qwen3-asr","speaker-diarization","speech-to-text","subtitles"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ztxtech.png","metadata":{"files":{"readme":"README.zh-CN.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-22T12:29:56.000Z","updated_at":"2026-05-22T14:14:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ztxtech/meeting-auto-summary","commit_stats":null,"previous_names":["ztxtech/meeting-auto-summary"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ztxtech/meeting-auto-summary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztxtech%2Fmeeting-auto-summary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztxtech%2Fmeeting-auto-summary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztxtech%2Fmeeting-auto-summary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztxtech%2Fmeeting-auto-summary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ztxtech","download_url":"https://codeload.github.com/ztxtech/meeting-auto-summary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztxtech%2Fmeeting-auto-summary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33410346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T18:09:33.147Z","status":"ssl_error","status_checked_at":"2026-05-23T18:09:31.380Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-skills","claude-code","codex","local-ai","meeting-summary","mlx","mlx-audio","opencode","qwen3-asr","speaker-diarization","speech-to-text","subtitles"],"created_at":"2026-05-23T20:03:14.554Z","updated_at":"2026-05-23T20:03:17.863Z","avatar_url":"https://github.com/ztxtech.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Meeting_Auto_Summary-Local_Media_Notes-7C3AED?style=for-the-badge\u0026logo=openai\u0026logoColor=white\" alt=\"Meeting Auto Summary\" /\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003e\u003cstrong\u003eEnglish\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"README.zh-CN.md\"\u003e\u003cstrong\u003e简体中文\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**Meeting Auto Summary** 是一个本地会议音视频处理 skill，用于把会议音频或视频转换成结构化产物：带说话人标签的转写稿、SRT 字幕、纯文本字幕、会议总结、正式报告，以及可选的翻译版本。\n\n它内置基于 **Qwen3-ASR MLX** 的本地语音识别流程，以及轻量的 **Sortformer MLX 人声区分**模型。这个 skill 面向编码 Agent 工作流：Agent 会先检查本地环境，再询问缺失的输入/输出信息，运行转写脚本，最后在指定输出目录生成 `summary.md` / `report.md`。\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-快速开始\"\u003e\u003cimg src=\"https://img.shields.io/badge/Quick_Start-Local-blue?style=for-the-badge\" alt=\"Quick Start\"\u003e\u003c/a\u003e\n  \u003ca href=\"#-安装-skill\"\u003e\u003cimg src=\"https://img.shields.io/badge/Install-Skills-8B5CF6?style=for-the-badge\" alt=\"Install\"\u003e\u003c/a\u003e\n  \u003ca href=\"#-支持的-agent\"\u003e\u003cimg src=\"https://img.shields.io/badge/Agents-5-10B981?style=for-the-badge\" alt=\"Agents\"\u003e\u003c/a\u003e\n  \u003ca href=\"#-输出文件\"\u003e\u003cimg src=\"https://img.shields.io/badge/Outputs-Transcript%2FSubtitles%2FSummary-F59E0B?style=for-the-badge\" alt=\"Outputs\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## ✨ 功能\n\n这个 skill 会在同一个输出目录下生成：\n\n```text\naudio.wav\ntranscript.md\nsubtitles.srt\nsubtitles.txt\nsummary.md\nreport.md                 # 用户需要正式报告时生成\ntranscript-\u003clang\u003e.md       # 用户需要翻译时生成\nsubtitles-\u003clang\u003e.srt\nsubtitles-\u003clang\u003e.txt\nsummary-\u003clang\u003e.md\nreport-\u003clang\u003e.md\n```\n\n核心流程：\n\n1. 检查 Python、ffmpeg、MLX Audio 和模型路径。\n2. 确认交互语言；默认使用用户输入语言。\n3. 如果缺少输入媒体路径或输出目录，先询问用户。\n4. 询问是否需要翻译转写相关文件。\n5. 运行本地 ASR 和可选人声区分。\n6. 生成 `summary.md`，需要时生成 `report.md`。\n7. 检查所有预期文件是否存在。\n\n---\n\n## 🚀 快速开始\n\n在仓库根目录运行：\n\n```bash\n# 检查 runner\nSKILL_DIR=\"skills/meeting-auto-summary\"\n\"$SKILL_DIR/.venv/bin/python\" \"$SKILL_DIR/run.py\" --help\n\n# 将音视频转写到输出目录\n\"$SKILL_DIR/.venv/bin/python\" \"$SKILL_DIR/run.py\" example/iShot_2026-05-22_14.54.02.mp4 \\\n  --model skills/meeting-auto-summary/model/Qwen3-ASR-0.6B-6bit \\\n  --speaker-mode diarize \\\n  --diarization-model skills/meeting-auto-summary/model/diar_sortformer_4spk-v1-fp16 \\\n  --output-dir tmp/iShot_2026-05-22_14.54.02 \\\n  --title iShot_2026-05-22_14.54.02\n```\n\n然后让你的编码 Agent 使用 `$meeting-auto-summary`，根据生成的转写稿创建 `summary.md` 和可选翻译文件。\n\n---\n\n## 📦 安装 Skill\n\n下面的命令会复制 skill 目录。假设你已经在本地 clone 了本仓库，并且模型已经位于：\n\n```text\nskills/meeting-auto-summary/model/\n```\n\n建议使用 `rsync` 而不是 `cp -R`，这样更新时可以干净地替换旧脚本文件，同时保留目录结构。\n\n### 选择 Qwen3-ASR MLX 模型\n\n这个 skill 可以使用任意本地 Qwen3-ASR MLX 模型目录。环境准备阶段，Agent 应该先检查你的 Mac 配置并给出推荐，但你仍然可以为了速度或内存余量主动选择更小的模型。\n\n模型 collection：\n\n```text\nhttps://huggingface.co/collections/mlx-community/qwen3-asr\n```\n\n检查 Mac 配置：\n\n```bash\nsystem_profiler SPHardwareDataType | sed -n '1,30p'\nsysctl -n hw.memsize\n```\n\n推荐默认值：\n\n| Mac 内存 | 推荐模型 | 适用场景 |\n|---|---|---|\n| 8 GB | `mlx-community/Qwen3-ASR-0.6B-4bit` | 最稳妥的小模型 |\n| 16 GB | `mlx-community/Qwen3-ASR-0.6B-6bit` | 平衡默认选择 |\n| 24-36 GB | `mlx-community/Qwen3-ASR-1.7B-4bit` | 更好识别质量，内存压力适中 |\n| 48 GB+ | `mlx-community/Qwen3-ASR-1.7B-6bit` | 更高质量 |\n| 64 GB+ | `mlx-community/Qwen3-ASR-1.7B-8bit` 或 `mlx-community/Qwen3-ASR-1.7B-bf16` | 质量优先，速度和内存成本更高 |\n\n安装所选模型：\n\n```bash\nSKILL_DIR=\"skills/meeting-auto-summary\"\nmkdir -p \"$SKILL_DIR/model\"\nhuggingface-cli download mlx-community/Qwen3-ASR-0.6B-6bit \\\n  --local-dir \"$SKILL_DIR/model/Qwen3-ASR-0.6B-6bit\"\n```\n\n可选版本：\n\n```text\nmlx-community/Qwen3-ASR-0.6B-4bit\nmlx-community/Qwen3-ASR-0.6B-5bit\nmlx-community/Qwen3-ASR-0.6B-6bit\nmlx-community/Qwen3-ASR-0.6B-8bit\nmlx-community/Qwen3-ASR-0.6B-bf16\nmlx-community/Qwen3-ASR-1.7B-4bit\nmlx-community/Qwen3-ASR-1.7B-5bit\nmlx-community/Qwen3-ASR-1.7B-6bit\nmlx-community/Qwen3-ASR-1.7B-8bit\nmlx-community/Qwen3-ASR-1.7B-bf16\n```\n\n人声区分模型：\n\n```text\nhttps://huggingface.co/mlx-community/diar_sortformer_4spk-v1-fp16\n```\n\n安装命令：\n\n```bash\nhuggingface-cli download mlx-community/diar_sortformer_4spk-v1-fp16 \\\n  --local-dir \"$SKILL_DIR/model/diar_sortformer_4spk-v1-fp16\"\n```\n\n### Claude Code\n\nClaude Code 的 skills 是包含 `SKILL.md` 的 Markdown skill 文件夹。项目级 skill 位于项目目录，用户级 skill 位于用户 Claude 目录。\n\n用户级安装：\n\n```bash\nmkdir -p \"$HOME/.claude/skills\"\nrsync -a --delete skills/meeting-auto-summary/ \"$HOME/.claude/skills/meeting-auto-summary/\"\n```\n\n项目级安装：\n\n```bash\nmkdir -p .claude/skills\nrsync -a --delete skills/meeting-auto-summary/ .claude/skills/meeting-auto-summary/\n```\n\n### Codex\n\nCodex skills 使用包含 `SKILL.md` 的文件夹。当前 OpenAI Codex 文档描述的项目级路径是 `.agents/skills`；本地 Codex 环境也支持 `$CODEX_HOME/skills` 或 `~/.codex/skills` 下的用户级 skill。\n\n用户级安装：\n\n```bash\nCODEX_HOME=\"${CODEX_HOME:-$HOME/.codex}\"\nmkdir -p \"$CODEX_HOME/skills\"\nrsync -a --delete skills/meeting-auto-summary/ \"$CODEX_HOME/skills/meeting-auto-summary/\"\n```\n\n项目级安装：\n\n```bash\nmkdir -p .agents/skills\nrsync -a --delete skills/meeting-auto-summary/ .agents/skills/meeting-auto-summary/\n```\n\n### OpenCode\n\nOpenCode 支持原生项目 skill 目录，很多设置中也兼容 Claude 风格的 skill 文件夹。\n\n用户级安装：\n\n```bash\nmkdir -p \"$HOME/.config/opencode/skill\"\nrsync -a --delete skills/meeting-auto-summary/ \"$HOME/.config/opencode/skill/meeting-auto-summary/\"\n```\n\n项目级安装：\n\n```bash\nmkdir -p .opencode/skill\nrsync -a --delete skills/meeting-auto-summary/ .opencode/skill/meeting-auto-summary/\n```\n\n兼容项目级安装：\n\n```bash\nmkdir -p .claude/skills\nrsync -a --delete skills/meeting-auto-summary/ .claude/skills/meeting-auto-summary/\n```\n\n### OpenClaw\n\nOpenClaw 文档中有 workspace、personal 和 managed 多级 skill 位置。仓库专用流程建议用 workspace 安装；跨项目复用建议用 personal 安装。\n\n用户级安装：\n\n```bash\nmkdir -p \"$HOME/.openclaw/skills\"\nrsync -a --delete skills/meeting-auto-summary/ \"$HOME/.openclaw/skills/meeting-auto-summary/\"\n```\n\n项目级安装：\n\n```bash\nmkdir -p .openclaw/skills\nrsync -a --delete skills/meeting-auto-summary/ .openclaw/skills/meeting-auto-summary/\n```\n\n### Hermes\n\nHermes skills 安装在 `~/.hermes/skills`。如果要项目级使用，可以把 skill 保留在仓库内，并配置 Hermes 的 external skill directories，或者把这个仓库作为 Hermes 可访问的 skill source。\n\n用户级安装：\n\n```bash\nmkdir -p \"$HOME/.hermes/skills\"\nrsync -a --delete skills/meeting-auto-summary/ \"$HOME/.hermes/skills/meeting-auto-summary/\"\n```\n\n项目级安装：\n\n```bash\nmkdir -p .hermes/skills\nrsync -a --delete skills/meeting-auto-summary/ .hermes/skills/meeting-auto-summary/\n```\n\n如果你的 Hermes 版本只加载 `~/.hermes/skills`，请把它的 external skill directory 指向：\n\n```text\n\u003cyour-project\u003e/.hermes/skills\n```\n\n---\n\n## 🧰 环境\n\n转写前必须完整安装环境。不要在 Python、MLX Audio、ffmpeg、Hugging Face 下载工具和所选模型全部检查通过之前启动长时间 ASR 任务。\n\n依赖：\n\n| 依赖 | 用途 |\n|---|---|\n| skill 本地 Python 虚拟环境 `$SKILL_DIR/.venv` | 运行转写脚本 |\n| `mlx-audio` | ASR 和人声区分后端 |\n| `ffmpeg` | 从视频抽取 16 kHz 单声道音频 |\n| `Qwen3-ASR-0.6B-6bit` | 本地语音识别模型 |\n| `diar_sortformer_4spk-v1-fp16` | 本地 MLX 人声区分模型 |\n\n检查：\n\n```bash\nSKILL_DIR=\"skills/meeting-auto-summary\"\ntest -x \"$SKILL_DIR/.venv/bin/python\"\nffmpeg -version\nhuggingface-cli --help\n\"$SKILL_DIR/.venv/bin/python\" - \u003c\u003c'PY'\nimport mlx_audio\nprint(\"mlx_audio ok\")\nPY\n```\n\n缺少基础 Python 环境时安装：\n\n```bash\nSKILL_DIR=\"skills/meeting-auto-summary\"\npython3 -m venv \"$SKILL_DIR/.venv\"\n\"$SKILL_DIR/.venv/bin/python\" -m pip install -U pip\n\"$SKILL_DIR/.venv/bin/python\" -m pip install -U mlx-audio huggingface_hub\nbrew install ffmpeg\n```\n\n---\n\n## 📁 输出文件\n\n`--output-dir` 模式会写入：\n\n| 文件 | 说明 |\n|---|---|\n| `audio.wav` | 抽取后的 16 kHz 单声道音频 |\n| `transcript.md` | Markdown 转写稿，启用人声区分时带 speaker 标签 |\n| `subtitles.srt` | 纯 SRT 字幕，带时间轴 |\n| `subtitles.txt` | 纯文本字幕式转写 |\n| `summary.md` | Agent 生成的会议总结 |\n| `report.md` | 可选正式报告 |\n\n翻译版本使用 `-\u003csuffix\u003e`：\n\n```text\nsummary-en.md\nreport-en.md\nsubtitles-en.srt\n```\n\n---\n\n## 🧭 支持的 Agent\n\n本仓库包含可移植的 `SKILL.md`，同一个文件夹可以复制到多个 Agent 生态中。\n\n| Agent | 用户级路径 | 项目级路径 |\n|---|---|---|\n| Claude Code | `~/.claude/skills/meeting-auto-summary` | `.claude/skills/meeting-auto-summary` |\n| Codex | `$CODEX_HOME/skills/meeting-auto-summary` 或 `~/.codex/skills/meeting-auto-summary` | `.agents/skills/meeting-auto-summary` |\n| OpenCode | `~/.config/opencode/skill/meeting-auto-summary` | `.opencode/skill/meeting-auto-summary` |\n| OpenClaw | `~/.openclaw/skills/meeting-auto-summary` | `.openclaw/skills/meeting-auto-summary` |\n| Hermes | `~/.hermes/skills/meeting-auto-summary` | `.hermes/skills/meeting-auto-summary` 或 external skill dir |\n\n---\n\n## 📚 参考资料\n\n- Claude Code skills: https://docs.claude.com/en/docs/claude-code/skills\n- Codex skills: https://developers.openai.com/codex/skills\n- OpenCode documentation: https://opencode.ai/docs\n- OpenClaw skills: https://github.com/openclaw/openclaw/blob/main/docs/tools/skills.md\n- Hermes skills: https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/skills.md\n\n---\n\n## 📄 License\n\n请遵循本仓库许可证，以及所使用上游模型文件的许可证。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fztxtech%2Fmeeting-auto-summary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fztxtech%2Fmeeting-auto-summary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fztxtech%2Fmeeting-auto-summary/lists"}