Prosey 是一个 CLI 工具,用于下载并显示 YouTube 视频的文字转录,让你无需浪费数小时就能获取所需信息。
主要使用场景包括:
两种用法都需要你系统上有一个 AI 助手(默认:opencode,使用 prosey config 配置你自己的)。
如果我们检测到你系统上有语法高亮器,你将获得漂亮的彩色输出。
Prosey 也可以原样输出或存储原生 JSON 格式。
| 功能 | 描述 |
|---|---|
| 💡 总结 | 获取并总结视频转录 |
| 📖 阅读 | 获取并以 Markdown 格式显示转录 |
| 📋 转录 下载 | 以纯文本或 JSON 原样获取 YouTube 转录 |
| 🤖 AI 总结 | 将转录通过管道发送给任何 AI 代理(opencode、Claude、Copilot、Codex) |
| 🎨 智能 分页器 | 如果安装了 bat、glow 或 mdcat,则自动进行语法高亮(或配置你自己的分页器) |
| 🛠️ 自定义 | 使用 prosey config 访问和编辑你的配置 / 自定义提示词 |
| 💾 磁盘 缓存 | 转录和总结缓存在磁盘上,可即时重新读取 |
| 📄 支持的 格式 | 纯文本和 JSON |
立即使用 npx 试用:
npx @tacone/prosey 771PQEDeRmw
npx @tacone/prosey https://youtu.be/771PQEDeRmw --lang es -o transcript.txt
使用你喜欢的包管理器全局安装:
npm install -g @tacone/prosey
# 或
yarn global add @tacone/prosey
# 或
pnpm add -g @tacone/prosey
# 或
bun install -g @tacone/prosey
然后在任何地方使用:
prosey 771PQEDeRmw
使用 Bun 进行开发 — 脚本、包管理以及直接运行 TypeScript 源码。
git clone https://github.com/tacone/prosey.git
cd prosey
bun install
bun run start -- 771PQEDeRmw
prosey [options] <video controls-url-or-id>
prosey read [options] <video controls-url-or-id>
prosey info [options] <video controls-url-or-id>
prosey summarize [options] <video controls-url-or-id>
prosey index
prosey render
prosey config
prosey help
summarize 是默认命令,因此 prosey <id> 会运行 AI 总结器。
使用 prosey read <id> 下载并打印格式丰富的转录。
summarize 命令获取转录,将 [summarize] 配置部分中的提示词前置,并将结果通过管道发送给配置的 AI 命令。
read 命令下载转录并打印到标准输出(纯文本、Markdown 或 JSON)。当你不需要 AI 处理时,这很有用。
info 命令显示视频元数据(标题、频道、时长、观看次数)。
index 命令重建文档索引并在浏览器中打开。该索引列出数据目录中存储的每个总结和转录,并在每次 summarize/transcribe 运行后自动重建。点击任何内容页面上的 Prosey 徽标即可返回索引。
render 命令从缓存的 Markdown 重新生成每个 HTML 页面(无需网络或 AI 处理)并重写索引。
config 命令在 $EDITOR 中打开你的配置文件进行编辑。如果未设置 $EDITOR,则会打印配置文件路径。
help 命令显示帮助信息,与 --help 相同。
# 总结(AI 总结 + 格式化 + 语法高亮)
prosey 771PQEDeRmw
# 总结(与上面相同)
prosey summarize 771PQEDeRmw
# 转录(AI 总结 + 格式化 + 语法高亮)
prosey read 771PQEDeRmw
# 显示视频元数据
prosey info 771PQEDeRmw
# 在 $EDITOR 中编辑配置
prosey config
# 列出可用语言
prosey read https://youtu.be/771PQEDeRmw --list
# 指定语言
prosey read https://youtu.be/771PQEDeRmw --lang es
# 显示 JSON(无 AI 转录)
prosey read 771PQEDeRmw
# 显示纯文本(无 AI 转录)
prosey read 771PQEDeRmw
# 将转录保存到文件
prosey read 771PQEDeRmw -o transcript.txt
使用 --json 时,输出是一个对象数组:
[
{
"text": "♪ We're no strangers to love ♪",
"offset": 18.64,
"duration": 3.24,
"timestamp": "00:18"
}
]
timestamp 在 JSON 模式下始终存在。视频详情会被(静默地)抑制,因为 JSON 是结构化数据。
本项目使用 Bun 进行开发。
bun run typecheck # TypeScript 检查
bun run start # 从源码运行 CLI
bun run test # 运行单元测试
bun run build # 将 Node 包编译到 bin/prosey
在发布到 npm 之前,bun run build 会通过 prepack 钩子自动运行,在 bin/prosey 生成一个兼容 Node 的 JS 包。
Prosey 从 TOML 文件读取配置。位置遵循
XDG Base Directory Specification
(~/.config/prosey/config.toml),或者你可以设置 PROSEY_CONFIG_PATH
环境变量来使用自定义路径。
配置文件在首次运行时自动创建并带有默认值。
随时使用 --reset-config 恢复默认值。
pager用于转录和总结输出的分页器命令。默认为 "auto",它会检测以下第一个可用的:bat -lmd --style plain → glow -p → mdcat -l -p → less。
设置为自定义命令(例如 "less -R")以覆盖。PROSEY_PAGER
环境变量优先于此设置。
[summarize][summarize] 部分配置 summarize 命令:
| 键 | 描述 |
|---|---|
prompt | 前置到转录的指令 |
command | 通过 stdin 接收提示词的 shell 命令 |
PROSEY_PAGER用于设置分页器命令的环境变量。优先于
pager 配置值。设置为 "auto" 或留空以使用自动检测。
转录和总结缓存到 /tmp/prosey/。对同一视频和选项的重复调用
是即时的且可离线工作。使用 --no-cache
跳过缓存读取并强制重新获取。
运行 prosey summarize 时,命令会在该视频的缓存目录内运行。这可以防止 AI 代理拾取当前文件夹中的项目特定文件,如 AGENTS.md 或 CLAUDE.md,并限制其修改该目录之外文件的能力。
| 代码 | 含义 |
|---|---|
0 | 成功 |
65 | 无效的视频 URL 或 ID |
prosey 通过 youtube-transcript-plus 库使用 YouTube 的 Innertube API。无需 API 密钥或浏览器自动化。
该工具同时适用于手动创建的字幕和自动生成的 转录(YouTube 的语音转文字)。自动检测会按照 YouTube 播放器响应提供的顺序依次尝试各语言。
| 标志 | 描述 |
|---|
--lang <code> | 语言代码(例如 en、fr)。如果省略则自动检测。 |
-t, --timestamps | 在文本输出的每行前添加 [MM:SS]。 |
--list | 列出视频可用的转录语言,然后退出。 |
-o, --output <path> | 将输出写入文件而不是标准输出。 |
--json | 将转录输出为 JSON 数组。每个项目包含 text、offset(秒)、duration 和 timestamp。 |
--text | 以纯文本输出(prosey read 的默认值)。 |
--details | 在转录前添加视频详情(标题、频道、时长、观看次数、描述)(默认)。 |
--no-details | 抑制视频详情,仅输出转录。 |
--no-decode-entities | 保留原始 HTML 实体(例如 ')。在文本模式下默认解码。 |
--no-cache | 跳过缓存读取并强制重新获取。 |
--no-format | 跳过对 summarize 输出进行 prettier Markdown 格式化。 |
-q, --quiet | 抑制所有 stderr 日志。 |
-v, --verbose | 将调试信息打印到 stderr。 |
--no-pager | 禁用标准输出分页器(默认自动检测)。 |
--pager | 为标准输出使用分页器(默认)。 |
--reset-config | 将配置文件重置为默认值并退出。 |
--help | 显示帮助信息并退出。 |
--version | 显示版本号并退出。 |