Summarize:全能网页与媒体摘要工具
summarize
通过浏览器侧边栏或命令行,快速获取网页、YouTube 视频、播客及各类文件的智能摘要与幻灯片提取。

试试这样做
详细介绍
Summarize
从 URL、文件和媒体中快速生成摘要。可在终端、Chrome 侧边栏和 Firefox 侧边栏中使用。
核心能力
- Chrome 侧边栏聊天:在侧边栏内提供流式智能体对话和历史记录。
- 视频幻灯片:为 YouTube、直接视频 URL 和本地视频文件提供截图 + OCR + 字幕卡片。
- 媒体感知摘要:自动检测视频/音频与页面内容。
- 编码 CLI 后端:支持 Codex、Claude、Gemini、Cursor Agent、OpenClaw、OpenCode、GitHub Copilot、Antigravity、pi。
- 流式 Markdown:包含指标和缓存状态。
- CLI 支持:URL、文件、播客、YouTube、音频/视频、PDF。
Chrome 扩展

一键总结当前标签页。Chrome 侧边栏 + Firefox 侧边栏 + 本地守护进程,支持流式 Markdown。
Chrome 网上应用店:Summarize Side Panel
YouTube 幻灯片截图(来自浏览器):

初学者快速入门(扩展)
- 安装扩展(上面的 Chrome 网上应用店链接)并打开侧边栏。
- 选择 Direct 或 Daemon。Direct 模式在未配置提供商密钥时默认使用 Gemini Nano,或从 Chrome 调用您选择的提供商。
- 选择浏览器媒体以进行无守护进程的转录/幻灯片。可选:安装 CLI 并配对守护进程,以获得原生工具、CLI 模型回退、OCR 和更广泛的媒体支持。
注意:
- 仅当侧边栏打开时才进行摘要。
- 自动模式会在导航(包括 SPA)时自动总结;否则使用按钮。
- 守护进程仅限本地主机,需要共享令牌。
- 自动启动:macOS(launchd)、Linux(systemd 用户)、Windows(计划任务)。
幻灯片(扩展)
- 在 Summarize 选择器中选择 Video + Slides。
- 幻灯片在顶部渲染;可展开为带时间戳的全宽卡片。
- 点击幻灯片可跳转到视频对应位置;当 OCR 显著时可切换 Transcript/OCR。
- 浏览器模式使用 MediaBunny,通过原生 WebCodecs 和范围网络读取来获取可获取的视频,当源或编解码器不可用时回退到可见标签页捕获。
- 守护进程模式额外提供
yt-dlp、原生 ffmpeg 和可选的tesseractOCR。
CLI

需要 Node 24+。
可选本地依赖
如果您需要媒体密集型功能,请安装以下工具:
ffmpeg:可选的原生加速器,支持更广泛的编解码器;回退使用内置的 WebAssembly 版本。yt-dlp:YouTube 幻灯片提取和某些远程媒体流程需要。tesseract:可选,用于--slides-ocr。
macOS(Homebrew):
brew install ffmpeg yt-dlp
brew install tesseract # 可选,用于 --slides-ocr
如果原生 ffmpeg/ffprobe 不可用,Summarize 将使用内置的 WebAssembly 构建。仍推荐原生 ffmpeg 以获得速度和更广泛的编解码器/滤镜支持。
快速开始
summarize "https://example.com"
检查有效模型配置:
summarize status
summarize status --verbose
summarize status --probe
summarize status --json
输入
URL 或本地路径:
summarize "/path/to/file.pdf" --model google/gemini-3-flash
summarize "https://example.com/report.pdf" --model google/gemini-3-flash
summarize "/path/to/audio.mp3"
summarize "/path/to/video.mp4"
标准输入(使用 - 管道输入):
echo "content" | summarize -
pbpaste | summarize -
YouTube(支持 youtube.com 和 youtu.be):
summarize "https://youtu.be/dQw4w9WgXcQ" --youtube auto
播客 RSS(转写最新一集):
summarize "https://feeds.npr.org/500005/podcast.xml"
Apple Podcasts 单集页面:
summarize "https://podcasts.apple.com/us/podcast/2424-jelly-roll/id360084272?i=1000740717432"
Spotify 单集页面(尽力而为,独家内容可能失败):
summarize "https://open.spotify.com/episode/5auotqWAXhhKyb9ymCuBJY"
HLS 播放列表:
summarize "https://example.com/master.m3u8"
输出长度
--length 控制我们要求输出的量(指导性),并非硬性限制。内置默认值为 long。
可在 ~/.summarize/config.json 中通过 output.length 设置默认值。
- 预设值:
short|medium|long|xl|xxl - 字符目标:
1500、20k、20000 - 可选硬性上限:
--max-output-tokens <count>(例如2000、2k) - 短内容:当提取的内容短于请求的长度时,CLI 会原样返回内容。使用
--force-summary覆盖,强制运行 LLM。 - 最小值:
--length数值必须 >= 10 个字符;--max-output-tokens必须 >= 16。 - 预设目标(来源:
packages/core/src/prompts/summary-lengths.ts):- short:目标约 900 字符(范围 600-1,200)
- medium:目标约 1,800 字符(范围 1,200-2,500)
- long:目标约 4,200 字符(范围 2,500-6,000)
- xl:目标约 9,000 字符(范围 6,000-14,000)
- xxl:目标约 17,000 字符(范围 14,000-22,000)
支持的文件类型
尽力而为,且取决于提供商。以下通常工作良好:
text/*和常见结构化文本(.txt、.md、.json、.yaml、.xml等)- PDF:
application/pdf(提供商支持程度不同;Google 最可靠) - 图片:
image/jpeg、image/png、image/webp、image/gif - 音频/视频:
audio/*、video/*(本地音频/视频文件在模型支持时会自动转写)
注意:
- 如果提供商拒绝某种媒体类型,CLI 会快速失败并显示友好消息。
- xAI 模型不支持通过 AI SDK 附加通用文件(如 PDF);对于这些情况,请使用 Google/OpenAI/Anthropic。
模型 ID
使用网关风格 ID:<provider>/<model>。
示例:
openai/gpt-5.4openai/gpt-5.4-miniopenai/gpt-5.4-nanoopenai/gpt-5-miniopenai/gpt-5-nanogithub-copilot/gpt-5.4anthropic/claude-sonnet-4-5xai/grok-4-fast-non-reasoninggoogle/gemini-3-flashzai/glm-4.7minimax/MiniMax-M3openrouter/openai/gpt-5-mini(强制使用 OpenRouter)
注意:某些模型/提供商不支持流式传输或某些文件媒体类型。此时 CLI 会打印友好错误(或在提供商支持时为该模型自动禁用流式传输)。
OpenAI 快速模式和思考模式
快速模式是一个请求选项,不是模型 ID:
summarize "https://example.com" --model openai/gpt-5.5 --fast --thinking medium
summarize "https://example.com" --model openai/gpt-5.4 --service-tier fast --thinking low
--fast是--service-tier fast的简写。--service-tier default|fast|priority|flex控制 OpenAI 服务层级。fast是 Summarize/Codex 使用的拼写,发送给 OpenAI 时变为service_tier="priority"。--thinking none|low|medium|high|xhigh控制 OpenAI 推理努力程度。别名:off→none,min→low,mid/med→medium,x-high/extra-high→xhigh。--service-tier default会清除一次运行配置的层级。
限制
- 超过 10 MB 的文本输入在分词前会被拒绝。
- 文本提示会针对模型输入限制(LiteLLM 目录)进行预检查,使用 GPT 分词器。
常用标志
summarize <input> [flags]
--model <provider/model>:使用的模型(默认为auto)--model auto:自动选择模型 + 回退(默认)--model <name>:使用内置或配置定义的预设--timeout <duration>:30s、2m、5000ms(默认2m)--retries <count>:超时或临时 API 失败后的 LLM 重试次数(默认1)--length short|medium|long|xl|xxl|s|m|l|<chars>--language, --lang <language>:输出语言(auto= 匹配源语言)--max-output-tokens <count>:LLM 输出令牌的硬性上限--cli [provider]:使用 CLI 提供商(--model cli/<provider>)。支持claude、gemini、codex、agent、openclaw、opencode、copilot、agy、pi。如果省略,则使用启用了 CLI 的自动选择。--stream auto|on|off:流式输出 LLM 结果(auto= 仅 TTY;在--json模式下禁用)--plain:保留原始输出(无 ANSI/OSC Markdown 渲染)--no-color:禁用 ANSI 颜色--theme <name>:CLI 主题(aurora、ember、moss、mono)--format md|text:网站/文件内容格式(默认text)--markdown-mode off|auto|llm|readability:HTML -> Markdown 模式(默认readability)--preprocess off|auto|always:控制uvx markitdown的使用(默认auto)--extract:打印提取的内容并退出(URL、YouTube/直接媒体、本地音频/视频和本地 PDF;不支持标准输入-)--slides:为 YouTube、直接视频 URL 或本地视频文件提取幻灯片,并在摘要叙述中内联渲染--no-slides:对单次运行禁用~/.summarize/config.json中启用的幻灯片提取--slides-ocr:对提取的幻灯片运行 OCR(需要tesseract)--no-slides-ocr:对单次运行禁用~/.summarize/config.json中启用的幻灯片 OCR--slides-dir <dir>:幻灯片图像的基础输出目录(默认./slides)--slides-scene-threshold <value>:场景检测阈值(0.1-1.0)--slides-max <count>:最大提取幻灯片数量(默认6)--slides-min-duration <seconds>:幻灯片之间的最小秒数--json:机器可读输出,包含诊断信息、提示、metrics和可选的摘要--verbose:调试/诊断信息输出到 stderr--metrics off|on|detailed:指标输出(默认on)
编码 CLI
Summarize 可以将常见的编码 CLI 用作本地模型后端:
codex->--cli codex/--model cli/codex/<model>claude->--cli claude/--model cli/claude/<model>gemini->--cli gemini/--model cli/gemini/<model>agent(Cursor Agent CLI)->--cli agent/--model cli/agent/<model>openclaw->--cli openclaw/--model cli/openclaw/<model>或--model openclaw/<model>opencode->--cli opencode/--model cli/opencode/<model>(--model cli/opencode使用 OpenCode 运行时默认值)copilot(GitHub Copilot CLI)->--cli copilot/--model cli/copilot/<model>(--model cli/copilot使用 Copilot 运行时默认值)agy(Antigravity CLI)->--cli agy/--model cli/agy(使用 agy 活动会话模型;agy print 模式不支持按调用选择模型)pi(Pi Coding Agent)->--cli pi/--model cli/pi或--model cli/pi/<model>
内置预设:
--model codex-fast使用 GPT-5.5 Fast 模式运行 Codex,需要codex login。
要求:
- 二进制文件已安装并在
PATH中(或设置对应的路径环境变量) - 提供商已认证
自动模型排序
--model auto 根据内置规则(或您的 model.rules 覆盖)构建候选尝试。当设置了 cli.enabled 或隐式自动选择处于活动状态时,CLI 尝试会被前置。
默认回退行为:仅当未配置 API 密钥时,顺序为 claude, gemini, codex, agent, openclaw, opencode, copilot,并记住/优先使用最后一个成功的提供商(~/.summarize/cli-state.json)。Antigravity 和 pi 是加入的,除非您将它们添加到 cli.autoFallback.order。
网站提取(Firecrawl + Markdown)
非 YouTube URL 会经过 fetch -> extract 管道。当直接 fetch/extract 被阻止或内容太少时,--firecrawl auto 可以回退到 Firecrawl(如果已配置)。
--firecrawl off|auto|always(默认auto)--extract --format md|text(默认text;如果省略--format,则--extract对非 YouTube URL 默认为md)--markdown-mode off|auto|llm|readability(默认readability)
YouTube 字幕
--youtube auto 首先尝试尽力而为的网页字幕端点。当字幕不可用时,回退到:
- yt-dlp + Whisper(如果
yt-dlp可用) - Android VR 直接音频 + 配置的转写链
- Apify(如果设置了
APIFY_API_TOKEN)
带有说话人标签的 YouTube、本地音频/视频和直接媒体 URL 字幕可通过 --diarize 获得。
幻灯片提取
提取幻灯片截图(通过 ffmpeg 进行场景检测)和可选 OCR。需要 yt-dlp 用于 YouTube 视频下载/流解析,tesseract 仅在使用 --slides-ocr 时需要。
summarize "https://www.youtube.com/watch?v=..." --slides
summarize "https://www.youtube.com/watch?v=..." --slides --slides-ocr
summarize "/path/to/video.webm" --slides
输出写入 ./slides/<sourceId>/(或 --slides-dir)。OCR 结果包含在 JSON 输出中,并存储在 slides.json 中。
媒体转写(Whisper)
本地音频/视频文件先被转写,然后进行摘要。--video-mode transcript 强制直接媒体 URL 首先通过 Whisper。自动模式在配置时首先尝试 Groq,然后尝试本地 ONNX/whisper.cpp,再尝试云端回退。配置本地 ONNX/whisper.cpp 用于仅本地转写;否则设置 GROQ_API_KEY、ASSEMBLYAI_API_KEY、GEMINI_API_KEY、OPENAI_API_KEY、FAL_KEY 或 DEEPGRAM_API_KEY 之一。
本地 ONNX 转写(Parakeet/Canary)
Summarize 可以通过您提供的本地 CLI 使用 NVIDIA Parakeet/Canary ONNX 模型。自动选择在配置时首先尝试 Groq,然后尝试 ONNX,再尝试 whisper.cpp 和其余云端回退。
- 设置助手:
summarize transcriber setup - 自动选择:设置
SUMMARIZE_ONNX_PARAKEET_CMD或SUMMARIZE_ONNX_CANARY_CMD - 选择本地转写阶段:
--transcriber parakeet|canary|whisper|auto
已验证的播客服务(2026-07-17)
- Apple Podcasts
- Spotify
- 小宇宙
- Amazon Music / Audible 播客页面
- Podbean
- Podchaser
- RSS 订阅(可用时支持 Podcasting 2.0 字幕)
- 嵌入式 YouTube 播客页面(例如 JREPodcast)
翻译路径
--language/--lang 控制摘要的输出语言(以及其他 LLM 生成文本)。默认值为 auto。当输入是音频/视频时,CLI 需要先获得字幕,来源可以是现有字幕(YouTube 字幕、Podcasting 2.0 RSS)或 Whisper 转写回退。
配置
单一配置文件位置:~/.summarize/config.json
运行 summarize status 以检查有效默认模型、配置的预设和模型提供商。
支持的键:
{
"model": { "id": "openai/gpt-5-mini" },
"env": { "OPENAI_API_KEY": "sk-..." },
"output": { "length": "long" },
"ui": { "theme": "ember" }
}
也支持:
model: { "mode": "auto" }(自动模型选择 + 回退)model.rules(自定义候选项/排序)models(定义可通过--model <preset>选择的预设)env(通用的环境变量默认值;进程环境变量仍然优先)apiKeys(旧版快捷方式,映射到环境变量名称;新配置建议使用env)output.length(默认long)cache.media(媒体下载缓存:默认 TTL 7 天,上限 2048 MB)media.videoMode: "auto"|"transcript"|"understand"media.embeddedVideo: "auto"|"off"|"prefer"|"both"(默认auto)slides.enabled/slides.max/slides.ocr/slides.dir(--slides的默认值)ui.theme: "aurora"|"ember"|"moss"|"mono"openai.useChatCompletions: trueopenai.serviceTier: "fast"|"priority"|"flex"openai.thinking/openai.reasoningEffort: "none"|"low"|"medium"|"high"|"xhigh"openai.textVerbosity: "low"|"medium"|"high"
注意:配置以宽松方式解析(JSON5),但不允许注释。未知键将被忽略。
优先级:
--modelSUMMARIZE_MODEL~/.summarize/config.json- 默认值(
auto)
环境变量
设置与您选择的 --model 匹配的密钥:
OPENAI_API_KEY(用于openai/...)NVIDIA_API_KEY(用于nvidia/...)MINIMAX_API_KEY(用于minimax/...)ANTHROPIC_API_KEY(用于anthropic/...)XAI_API_KEY(用于xai/...)Z_AI_API_KEY(用于zai/...;支持ZAI_API_KEY别名)GEMINI_API_KEY(用于google/...)—— 也接受GOOGLE_GENERATIVE_AI_API_KEY和GOOGLE_API_KEY
OpenAI 兼容聊天补全切换:
OPENAI_USE_CHAT_COMPLETIONS=1
UI 主题:
SUMMARIZE_THEME=aurora|ember|moss|monoSUMMARIZE_TRUECOLOR=1(强制 24 位 ANSI)SUMMARIZE_NO_TRUECOLOR=1(禁用 24 位 ANSI)
OpenRouter(OpenAI 兼容):
- 设置
OPENROUTER_API_KEY=... - 建议通过模型 ID 强制使用 OpenRouter:
--model openrouter/<author>/<slug> - 内置预设:
--model free(使用一组默认的 OpenRouter:free模型)
NVIDIA API Catalog:
- 设置
NVIDIA_API_KEY=... - 可选:
NVIDIA_BASE_URL=https://integrate.api.nvidia.com/v1 - 积分:API Catalog 试用版在注册时赠送 1000 个免费 API 积分
Z.AI(OpenAI 兼容):
Z_AI_API_KEY=...(或ZAI_API_KEY=...)- 可选的基础 URL 覆盖:
Z_AI_BASE_URL=...
MiniMax(OpenAI 兼容):
- 设置
MINIMAX_API_KEY=... - 可选的基础 URL 覆盖:
MINIMAX_BASE_URL=...(默认https://api.minimax.io/v1)
可选服务:
FIRECRAWL_API_KEY(网站提取回退)YT_DLP_PATH(yt-dlp 二进制文件路径)GROQ_API_KEY(Groq Whisper 转写)ASSEMBLYAI_API_KEY(AssemblyAI 转写)ELEVENLABS_API_KEY(ElevenLabs Scribe v2 说话人识别)GEMINI_API_KEY/GOOGLE_GENERATIVE_AI_API_KEY/GOOGLE_API_KEY(Gemini 转写)SUMMARIZE_GEMINI_TRANSCRIPTION_MODEL(可选的 Gemini 模型覆盖;默认gemini-2.5-flash)OPENAI_API_KEY/OPENAI_WHISPER_BASE_URL(OpenAI Whisper 转写)FAL_KEY(FAL AI API 密钥)DEEPGRAM_API_KEY(Deepgram API 密钥)SUMMARIZE_DEEPGRAM_TRANSCRIPTION_MODEL(可选的 Deepgram 模型覆盖;默认nova-3)APIFY_API_TOKEN(YouTube 字幕回退)
summarize refresh-free
重新生成 free 预设(~/.summarize/config.json 中的 models.free),通过以下步骤:
- 获取 OpenRouter
/models,过滤出:free模型 - 跳过看起来非常小的模型(默认 <27B)
- 测试哪些模型返回非空文本
- 选择一组智能和快速的模型混合
- 精炼时序并将排序后的列表写回
如果 --model free 停止工作,运行:
summarize refresh-free
标志:
--runs 2(默认):每个选中的模型额外运行次数--smart 3(默认):优先选择智能模型的数量(其余由最快模型填充)--min-params 27b(默认):忽略推断参数小于 N 十亿的模型--max-age-days 180(默认):忽略早于 N 天的模型(设为 0 禁用)--set-default:同时将~/.summarize/config.json中的"model"设置为"free"
模型限制
CLI 使用 LiteLLM 模型目录来获取模型限制(如最大输出令牌):
- 从以下地址下载:
https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json - 缓存位置:
~/.summarize/cache/
其他文档
故障排除
- "Receiving end does not exist":Chrome 尚未注入内容脚本。扩展详情 -> 站点访问 -> 在所有站点上(或允许此域名)。重新加载标签页一次。
- "Failed to fetch" / 守护进程无法访问:
summarize daemon status- 对于非默认端口,确认 Options → Runtime → Daemon → Port 与守护进程配置一致。
- 日志:
~/.summarize/logs/daemon.err.log
许可证:MIT