Ghostmeet — AI Meeting Assistant
Control ghostmeet from chat. Self-hosted meeting transcription with Whisper + AI summaries.
Prerequisites
ghostmeet backend must be running (Docker):
CODEBLOCK0
Chrome Extension must be installed in developer mode from extension/ folder.
Default backend: INLINECODE1
What This Skill Can Do
- - List sessions → query recorded meeting sessions
- Fetch transcripts → retrieve full text from a session
- Generate summaries → trigger AI summary via Claude API (requires
GHOSTMEET_ANTHROPIC_KEY) - Health check → verify backend is running
What This Skill Cannot Do
- - Start/stop recording → must be done manually via the Chrome Extension
- Install the Chrome Extension → user must load it in developer mode from
extension/ folder - Access browser audio → only the Chrome Extension captures audio; this skill only reads API results
Required Environment Variables
- -
GHOSTMEET_ANTHROPIC_KEY — required for AI summary generation. Without it, transcription still works but summaries will fail.
API Commands
Health Check
curl -s http://127.0.0.1:8877/api/health
Returns: INLINECODE5
List Sessions
curl -s http://127.0.0.1:8877/api/sessions
Returns list of all meeting sessions with IDs, start times, and segment counts.
Get Transcript
curl -s http://127.0.0.1:8877/api/sessions/{session_id}/transcript
Returns full transcript with timestamps and text segments.
Generate Summary
curl -s -X POST http://127.0.0.1:8877/api/sessions/{session_id}/summarize
Triggers AI summary generation (requires
GHOSTMEET_ANTHROPIC_KEY).
Returns: key decisions, action items, and next steps.
Get Summary
curl -s http://127.0.0.1:8877/api/sessions/{session_id}/summary
Returns previously generated summary.
Workflow
During a Meeting
- 1. User joins a meeting (Google Meet, Zoom, Teams) in Chrome
- Clicks ghostmeet extension icon → side panel opens
- Clicks "Start" → real-time transcription begins
- Transcripts appear live in the side panel
After a Meeting
User asks: "Summarize my last meeting"
- 1. List sessions → find the latest session ID
- Get transcript → review what was discussed
- Generate summary → extract key points
- Deliver summary to user
Example Interaction
User: "What was discussed in my last meeting?"
→ curl http://127.0.0.1:8877/api/sessions → get latest session
→ curl http://127.0.0.1:8877/api/sessions/{id}/transcript → get transcript
→ Summarize key points for the user
User: "Generate a summary with action items"
→ curl -X POST http://127.0.0.1:8877/api/sessions/{id}/summarize
→ curl http://127.0.0.1:8877/api/sessions/{id}/summary
→ Deliver formatted summary
User: "How many meetings did I have today?"
→ curl http://127.0.0.1:8877/api/sessions → count today's sessions
Configuration
| Variable | Default | Description |
|---|
| INLINECODE12 | INLINECODE13 | Whisper model (tiny/base/small/medium/large-v3) |
| INLINECODE14 |
auto | Force language (en/ko/ja etc.) or auto-detect |
|
GHOSTMEET_CHUNK_INTERVAL |
10 | Transcription interval in seconds |
|
GHOSTMEET_ANTHROPIC_KEY | — | Claude API key for summaries |
|
GHOSTMEET_HOST |
0.0.0.0 | Backend bind address |
|
GHOSTMEET_PORT |
8877 | Backend port |
Model Size Guide
- - tiny (75MB): Fast, lower accuracy. Good for quick notes
- base (145MB): Balanced. Recommended for most users
- small (488MB): Better accuracy, slower
- medium (1.5GB): High accuracy, needs good CPU/GPU
- large-v3 (3GB): Best accuracy, requires GPU
Usage Guidelines
- 1. Always check health first — verify backend is running before other commands
- List sessions to find IDs — session IDs are date-based (e.g.,
20260308-065021) - Summarize only when asked — summary generation costs API tokens
- Format transcripts nicely — don't dump raw JSON, present as readable conversation
- Respect privacy — meeting transcripts are sensitive. Never share outside the current chat
- If backend is down — suggest
docker compose up -d in the ghostmeet directory
Privacy
- - Transcription is 100% local — Whisper runs on your machine, audio never leaves your device
- Summaries use Anthropic API — when you click Summarize, transcript text is sent to Claude API. If you don't want this, skip the summarize feature; transcription works without it
- Chrome Extension captures tab audio only — uses
chrome.tabCapture API, limited to the active tab. It cannot access other tabs, microphone, or system audio. Audit the extension source in extension/ before installing - No telemetry — ghostmeet sends zero analytics or tracking data
Troubleshooting
- - Connection refused → Backend not running. INLINECODE26
- No sessions → No meetings recorded yet. Chrome Extension must be active during meeting
- Summary fails →
GHOSTMEET_ANTHROPIC_KEY not set in INLINECODE28 - Poor transcription → Try larger Whisper model or set explicit language
Ghostmeet — AI会议助手
通过聊天控制ghostmeet。自托管会议转录,集成Whisper与AI摘要。
前置条件
ghostmeet后端必须正在运行(Docker):
bash
快速启动
git clone https://github.com/Higangssh/ghostmeet.git
cd ghostmeet
cp .env.example .env
编辑 .env:设置 GHOSTMEETANTHROPICKEY 以启用AI摘要
docker compose up -d
Chrome扩展必须从 extension/ 文件夹以开发者模式安装。
默认后端地址:http://127.0.0.1:8877
该技能可执行的操作
- - 列出会议 → 查询已记录的会议会话
- 获取转录文本 → 从会话中检索完整文本
- 生成摘要 → 通过Claude API触发AI摘要(需要 GHOSTMEETANTHROPICKEY)
- 健康检查 → 验证后端是否正在运行
该技能无法执行的操作
- - 开始/停止录制 → 必须通过Chrome扩展手动操作
- 安装Chrome扩展 → 用户必须从 extension/ 文件夹以开发者模式加载
- 访问浏览器音频 → 只有Chrome扩展能捕获音频;该技能仅读取API结果
所需环境变量
- - GHOSTMEETANTHROPICKEY — 生成AI摘要必需。缺少时转录仍可工作,但摘要会失败。
API命令
健康检查
bash
curl -s http://127.0.0.1:8877/api/health
返回:{status: ok, whisper_model: base, device: cpu}
列出会议
bash
curl -s http://127.0.0.1:8877/api/sessions
返回所有会议会话列表,包含ID、开始时间和片段数量。
获取转录文本
bash
curl -s http://127.0.0.1:8877/api/sessions/{session_id}/transcript
返回包含时间戳和文本片段的完整转录。
生成摘要
bash
curl -s -X POST http://127.0.0.1:8877/api/sessions/{session_id}/summarize
触发AI摘要生成(需要 GHOSTMEETANTHROPICKEY)。
返回:关键决策、行动项和后续步骤。
获取摘要
bash
curl -s http://127.0.0.1:8877/api/sessions/{session_id}/summary
返回之前生成的摘要。
工作流程
会议期间
- 1. 用户在Chrome中加入会议(Google Meet、Zoom、Teams)
- 点击ghostmeet扩展图标 → 侧面板打开
- 点击开始 → 实时转录开始
- 转录内容实时显示在侧面板中
会议结束后
用户询问:总结我上次的会议
- 1. 列出会议 → 找到最新的会话ID
- 获取转录文本 → 查看讨论内容
- 生成摘要 → 提取关键点
- 向用户呈现摘要
交互示例
用户:我上次会议讨论了什么?
→ curl http://127.0.0.1:8877/api/sessions → 获取最新会话
→ curl http://127.0.0.1:8877/api/sessions/{id}/transcript → 获取转录文本
→ 为用户总结关键点
用户:生成包含行动项的摘要
→ curl -X POST http://127.0.0.1:8877/api/sessions/{id}/summarize
→ curl http://127.0.0.1:8877/api/sessions/{id}/summary
→ 呈现格式化摘要
用户:我今天开了多少次会议?
→ curl http://127.0.0.1:8877/api/sessions → 统计今天的会话数
配置
| 变量 | 默认值 | 描述 |
|---|
| GHOSTMEETMODEL | base | Whisper模型(tiny/base/small/medium/large-v3) |
| GHOSTMEETLANGUAGE |
auto | 强制语言(en/ko/ja等)或自动检测 |
| GHOSTMEET
CHUNKINTERVAL | 10 | 转录间隔(秒) |
| GHOSTMEET
ANTHROPICKEY | — | 用于摘要的Claude API密钥 |
| GHOSTMEET_HOST | 0.0.0.0 | 后端绑定地址 |
| GHOSTMEET_PORT | 8877 | 后端端口 |
模型大小指南
- - tiny(75MB):快速,准确度较低。适合快速笔记
- base(145MB):平衡。推荐大多数用户使用
- small(488MB):准确度更高,速度较慢
- medium(1.5GB):高准确度,需要较好的CPU/GPU
- large-v3(3GB):最佳准确度,需要GPU
使用指南
- 1. 始终先检查健康状态 — 在执行其他命令前验证后端是否运行
- 列出会议以查找ID — 会话ID基于日期(例如 20260308-065021)
- 仅在用户要求时生成摘要 — 摘要生成会消耗API令牌
- 格式化转录文本 — 不要直接输出原始JSON,以可读的对话形式呈现
- 尊重隐私 — 会议转录内容敏感。切勿在当前聊天之外分享
- 如果后端宕机 — 建议在ghostmeet目录中执行 docker compose up -d
隐私保护
- - 转录100%本地化 — Whisper在您的机器上运行,音频永远不会离开您的设备
- 摘要使用Anthropic API — 当您点击摘要时,转录文本会被发送到Claude API。如果您不希望这样,可以跳过摘要功能;转录功能无需此操作即可工作
- Chrome扩展仅捕获标签页音频 — 使用 chrome.tabCapture API,仅限于活动标签页。无法访问其他标签页、麦克风或系统音频。安装前请审核 extension/ 文件夹中的扩展源代码
- 无遥测数据 — ghostmeet不发送任何分析或跟踪数据
故障排除
- - 连接被拒绝 → 后端未运行。执行 docker compose up -d
- 无会议记录 → 尚未录制会议。会议期间Chrome扩展必须处于活动状态
- 摘要失败 → .env 中未设置 GHOSTMEETANTHROPICKEY
- 转录质量差 → 尝试更大的Whisper模型或设置明确的语言