babel-content-downloader
Downloads paper abstracts and original PDFs from arXiv, saving them as a bundle with paper information and PDF.
Downloads public GitHub repository README content as local documents.
Downloads model cards, dataset cards, and papers from Hugging Face; does not download model weights or datasets.
Downloads articles and images from Medium.
Downloads public articles and images from OpenAI's website as local documents.
Intended to download Reddit content, though currently blocked by security/login pages in tested environments with no file delivery yet.
Downloads articles and images from Substack.
Downloads videos, audio (e.g., MP3/M4A), and existing subtitles from YouTube, including audio extraction, video segments, and format conversion.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@babel-content-downloaderSave this YouTube video as an audio file for offline listening."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Babel Content Downloader
English · 简体中文 · 繁體中文 · 日本語 · 한국어
让本地 AI Agent 把公开网页、文章、论文、视频和播客,保存成可以阅读、观看、收听的本地资料。
当前版本:0.1.26 · MIT 开源 · 首版推荐环境:macOS + Chrome + 本地 MCP Agent。
下载 v0.1.26 发行附件:普通用户下载运行时 TGZ 与扩展 ZIP;安装扩展不需要下载源码包。
你只需要给 Agent 一个链接,说明想保存什么。例如:“把这个视频播客存成音频,放进我的学习资料目录。”下载器负责获取内容、保存文件和报告结果;不要求你先理解音轨或编码。
点击工具栏中的扩展图标会打开宽屏概览页;扩展详情里的“选项”会打开独立设置页。两个页面都可以切换语言,接入命令、连接控制和技术信息集中在设置页。
导航
Related MCP server: mcp-curl-downloader
语言切换
概览页和设置页右上角都提供“自动(跟随浏览器)”、English、简体中文、繁體中文、日本語、한국어。默认使用浏览器的语言优先列表;没有对应语言时回退到 English。手动指定某种语言后会保存在本机,并优先于浏览器语言;选择“自动(跟随浏览器)”即可恢复自动模式。产品介绍、连接状态、接入命令、使用示例和错误提示都会即时切换。Chrome 扩展管理页的简介始终跟随浏览器语言,不受页内手动选择影响。
软件名始终为 Babel Content Downloader。命令、API 标识、文件名和下载的原内容不翻译。原始技术错误保留在折叠详情中,CLI/MCP 技术输出可能保留原语言。
能做什么
你想做的事 | 对 Agent 的说法 | 保存类型 |
离线阅读文章 | 把这个链接的正文和配图保存下来 |
|
听视频播客 | 把这个视频存成音频,路上听 |
|
离线观看视频 | 保存这个视频为 MP4 |
|
收集图片 | 只保存这条内容的图片 |
|
保存已有字幕 | 保存这个视频的英文字幕 |
|
阅读论文原文 | 保存论文信息和原版 PDF |
|
只要附件 | 保存这条内容中支持下载的文件 |
|
按主体自动选择 | 把这个链接保存下来 |
|
音频默认 M4A、视频默认 MP4;可明确指定 MP3/WAV/FLAC、MKV、来源画质、音视频片段、字幕语言或图片序号。保存的是来源内容,可以为观看和收听提取音频、合并音视频轨或转换格式;不内置 OCR、语音转写、摘要和翻译。
普通博客统一使用 HTTP + Mozilla Readability 提取当前页,必要时回退到浏览器读取,不逐个博客维护正文选择器。动态自媒体、论文和媒体内容使用对应适配器。只处理明确目标及支持的资源,不递归爬取整站。
任务自己新建的浏览器页会先静音再打开目标;后台处理不启动播放器。你原来打开的页面不会被自动播放、静音、导航或关闭。
来源与支持边界
以下是首版的真实样本验证情况,不是整个平台所有页面的兼容承诺。网站结构、地区、网络和访问状态可能影响结果。
来源 | 已有样本证据/当前边界 |
普通公开博客、技术文章 | 通用当前页提取;受 URL、网络和访问策略约束,不代表所有网站均可读取 |
Medium、Substack | 已有正文与图片交付;Medium 已验证通用浏览器回退和显式标签页读取 |
OpenAI、Anthropic、Google DeepMind | 已有文章与图片交付;DeepMind 另有 publication PDF 样本 |
GitHub | 公开仓库 README 有交付;Markdown blob 当前存在 |
Hugging Face | model card、dataset card、paper 有样本;blog 曾有图片缺失的部分完成结果;不下载整套模型权重或数据集 |
arXiv | 已有摘要及原版 PDF 交付 |
YouTube、B站 | 已有音视频文件交付和完整解码验证;YouTube 英文字幕已有 VTT 文件,但样本任务仍为 |
知乎 | 已有公开文章及配图交付 |
X | 有可见正文的部分结果,图片、页面加载和超时仍有缺口 |
已测环境被安全/登录页面阻断,尚无文件闭环 | |
小红书 | 已测样本遇到 404/App 门控,尚无文件闭环 |
微信公众号 | 存在目标漂移和访问限制,仍需改进 |
共有 15 个登记来源,外加符合策略的普通公开网页提取。搜狐、快手等已移除的来源不会通过通用网页入口重新启用。只处理免费公开内容,不绕过付费、私有内容或 DRM。具体限制见 首版说明。
安装与接入
这是“本机运行时 + 浏览器扩展 + Agent MCP 连接”的组合,只装扩展还不能下载。三者在同一台电脑运行。
1. 准备环境与发行文件
Node.js 22.13.0 或以上,并可在终端运行
node、npm。Chrome 120 或以上;Edge 等 Chromium 浏览器尚需独立环境验证。
本机 Agent。自动接入命令支持 Codex/Claude Code,需先安装其对应 CLI。
保存音视频时,另需
yt-dlp、ffmpeg、ffprobe。基础网页提取不要求这些媒体工具。首版托管后台服务只实现 macOS;Windows/Linux 尚未完成正式安装支持。
发行附件:
文件 | 用途 |
| 已编译运行时,普通用户安装这个 |
| 正式扩展,解压后加载 |
| 完整源码,用于开发或自行构建 |
| 校验值、发行清单和验证记录 |
普通用户可以直接从 Release 下载扩展 ZIP,不需要下载源码包或自行构建。五语言的独立安装步骤见 浏览器扩展安装说明。Chrome 对站外 ZIP 的当前安装方式仍是“解压后加载”;真正的一键安装需要 Chrome Web Store,已列入 发布路线图。
以下命令在 macOS 终端执行。把 /absolute/path/... 替换为你自己的绝对路径;不要照抄占位符。新开终端后需要重新设置示例中的变量。
export BABEL_RELEASE_DIR=/absolute/path/to/release-files
cd "$BABEL_RELEASE_DIR"
shasum -a 256 -c SHA256SUMS
export BABEL_INSTALL_ROOT="$HOME/Applications/babel-content-downloader"
npm install --prefix "$BABEL_INSTALL_ROOT" --omit=dev "$BABEL_RELEASE_DIR/babel-content-downloader-0.1.26.tgz"
export BABEL_CLI="$BABEL_INSTALL_ROOT/node_modules/babel-content-downloader/dist/bootstrap/cli.js"
node "$BABEL_CLI" init保留 npm 默认可选依赖,不要加 --omit=optional,图片处理需要对应系统的二进制组件。TGZ 已编译,不必再执行 npm run build。校验全部文件时,请把发行清单内的附件一并下载到同一目录。
2. 加载扩展
运行时包已包含与 ZIP 相同的正式扩展,最简单的做法是直接加载它:
export BABEL_EXTENSION_DIR="$BABEL_INSTALL_ROOT/node_modules/babel-content-downloader/dist/extension"
printf '%s\n' "$BABEL_EXTENSION_DIR"在 Chrome 打开 chrome://extensions,开启“开发者模式”,点击“加载已解压的扩展程序”,选择上面输出的目录。也可以把正式扩展 ZIP 解压到长期保留的目录,再加载其中直接包含 manifest.json 的目录。两种方式选一种,不必重复加载。
确认扩展版本为 0.1.26。首次安装会自动打开欢迎页;若已关闭,从扩展管理页复制实际的 32 位 ID,在 Chrome 地址栏打开 chrome-extension://实际扩展ID/welcome/index.html。欢迎页也会显示该 ID。不要加载 dist/extension-dev,它是开发夹具版本。
3. 授权输出目录并启动
首次使用 Codex 时:
export BABEL_EXTENSION_ID=替换为扩展页面显示的32位ID
export BABEL_OUTPUT_ROOT="$HOME/Documents/BabelLibrary"
node "$BABEL_CLI" allow-extension "$BABEL_EXTENSION_ID"
node "$BABEL_CLI" add-client codex "$BABEL_OUTPUT_ROOT"
node "$BABEL_CLI" runtime-install
node "$BABEL_CLI" runtime-status
printf '资料保存目录:%s\n' "$BABEL_OUTPUT_ROOT"记录最后输出的绝对资料目录,稍后告诉 Agent。每个任务只能写入该客户端获授权的目录内。
runtime-status 应显示 state: "running"、health: "ready"、loaded: true、restart_required: false。随后回到扩展概览页点击“连接本机运行时”,确认“已连接到本机运行时”;如果暂停过,请到设置页点击“恢复”。
已安装过的用户先看升级说明,不要反复 add-client。更换授权、工具路径或客户端后,运行 runtime-start 应用配置。
4. 接入 Agent
Codex:
node "$BABEL_CLI" install-client-config codex返回 waiting_client_reload 后重新加载 Codex。在新会话中发送:
请调用 Babel Content Downloader 的 babel_content_check,检查本机运行时、浏览器连接和媒体依赖,告诉我哪些功能已经可以使用。
应能找到八个 babel_content_* 工具。需要浏览器的任务应有目标扩展实例已连接且未暂停;普通 URL 正文检查可能返回 ready_http、browser_required: false,表示可先直接抓取,不保证随后网络请求一定成功。
使用 Claude Code 时,在首次安装的第 3 步把 codex 改为 claude,然后执行 install-client-config claude。若是在已有运行时上增添客户端,按顺序执行:
node "$BABEL_CLI" add-client claude "$BABEL_OUTPUT_ROOT"
node "$BABEL_CLI" runtime-start
node "$BABEL_CLI" install-client-config claude重新加载 Claude Code 后同样实际调用检查工具。自动安装只管理本项目的 MCP 条目,遇到已存在且非本项目管理的同名配置会拒绝覆盖。
其他 stdio MCP 客户端先注册独立客户端,例如 add-client my-agent "$BABEL_OUTPUT_ROOT",再 runtime-start。客户端 MCP 配置形状通常如下,具体外层格式按客户端要求填写:
{
"mcpServers": {
"babel-content-downloader": {
"command": "/absolute/path/to/node",
"args": [
"/absolute/path/to/babel-content-downloader-install/node_modules/babel-content-downloader/dist/bootstrap/cli.js",
"mcp",
"my-agent"
]
}
}
}路径必须实际存在,JSON 中不展开 $HOME、~ 或 $BABEL_CLI。配置中不需要粘贴运行时令牌。
5. 准备音视频工具(需要时)
从各工具官方分发渠道安装媒体依赖后,在终端确认:
yt-dlp --version
ffmpeg -version
ffprobe -version若终端能找到、后台服务找不到,显式登记可执行文件路径:
node "$BABEL_CLI" set-tool yt-dlp "$(command -v yt-dlp)"
node "$BABEL_CLI" set-tool ffmpeg "$(command -v ffmpeg)"
node "$BABEL_CLI" set-tool ffprobe "$(command -v ffprobe)"
node "$BABEL_CLI" runtime-start再让 Agent 执行检查并恢复之前阻塞的任务。缺少工具时不需要重装扩展。
第一次使用与功能测试
安装完成后,在 Agent 对话里操作,不是在扩展页粘贴下载链接。扩展页负责连接、暂停和撤销。
建议先测文章,再测论文,最后测音视频。复制下面的提示词,把 <文章URL> 等占位内容和 /你的绝对资料目录 替换为真实值。推荐选无需登录、你可以在浏览器正常阅读的内容;网站临时访问失败不代表安装失败。
A. 保存一篇文章
使用 Babel Content Downloader,把这篇公开文章
<文章URL>的正文和配图保存到/你的绝对资料目录。按 document 保存。请等待任务结束,返回任务 ID、实际状态、正文路径、图片数量和缺失项,不要只告诉我已经提交。
验收:打开返回的 content.md,正文可读;配图指向本地文件;metadata.json 有来源。只有 succeeded 才表示请求范围完成;partial 时同时查看缺项。
B. 保存论文与 PDF
使用 Babel Content Downloader,把这篇论文
<arXiv摘要页URL>按 bundle 保存到/你的绝对资料目录,包含论文信息和原版全文 PDF。完成后给我 PDF 路径和缺失项。
使用论文摘要详情页,通常形如 https://arxiv.org/abs/论文编号,不要直接把原始 PDF 地址当作这个测试的入口。验收时实际打开 PDF。
C. 把视频播客保存为音频
使用 Babel Content Downloader,把这个视频
<YouTube或B站视频URL>保存成 MP3,放到/你的绝对资料目录。处理期间保持任务页静音,不要自动播放导出文件。结束后给我音频路径、时长、状态和缺失项。
验收:自己打开 MP3,确认有声音、时长合理。不要以“文件已经创建”代替实际收听检查。
D. 保存视频或片段
使用 Babel Content Downloader,把
<视频URL>的第 60 秒到第 120 秒保存为 MP4,放到/你的绝对资料目录。完成后给我文件路径、实际时长和状态,不要自动播放。
验收:源视频应长于 120 秒;导出应约为 60 秒,画面和声音可以正常播放。若明确要求 720p 而来源不提供,会报告缺项,不保证自动换为其他画质。
E. 保存图片与字幕
把
<公开图文URL>的图片保存到/你的绝对资料目录,只要图片,返回全部文件路径和缺失项。
把
<YouTube视频URL>的英文字幕保存到/你的绝对资料目录,指定语言 en。只保存来源已有字幕,不做语音转写;报告真实任务状态和字幕文件路径。
字幕需要来源提供对应语言。首版已有字幕文件可用但任务仍显示 partial 的已知情况,不应隐藏此状态。字幕裁切尚不支持。
F. 查进度、恢复和取消
查看 Babel Content Downloader 最近的任务。对任务
<job_id>检查状态、失败原因和所有已保存文件;文件多时继续读取后续分页。
我已补齐依赖/恢复浏览器连接,请恢复 Babel Content Downloader 任务
<job_id>,不要重新创建重复任务。
取消 Babel Content Downloader 任务
<job_id>。
遇到 SELECTION_REQUIRED,告诉 Agent 选择“文章/视频/音频”等返回选项即可,它会恢复同一个任务。取消任务不会删除已经交付的文件。
更完整的逐项测试和结果记录模板见 使用与测试手册。
输出文件与任务状态
任务会在授权目录中生成自己的结果目录。实际文件数量和名称以 job_get 返回值为准,例如:
BabelLibrary/
└── 某篇文章或视频的结果目录/
├── content.md # 可读正文或资料入口,按任务用途生成
├── assets/ # 图片、音频、视频、字幕、PDF 等实际文件
├── metadata.json # 来源、内容信息、交付清单与已记录的媒体处理信息
└── assets.json # 资源关联清单图片在 Markdown 中使用相对链接,移动资料时请保留整个结果目录。job_get 提供文件路径、大小、SHA256 和分页信息;完整正文在本地文件内,不会全部塞回 MCP 响应。
状态 | 含义与下一步 |
| 已入队或处理中,按工具返回的间隔继续查询 |
| 本次明确请求的范围已完成,打开产物确认是否满足使用需求 |
| 有结果但缺少部分请求内容,查看 |
| 等待连接、依赖、用途选择或自动重试;先读具体原因及 |
| 本次未完成,查看错误;解决可恢复问题后再恢复 |
| 已取消;已有文件仍可能保留 |
MCP 调用示例
下面是 MCP 工具参数 JSON,供 Agent 或客户端开发者参考,不是终端命令,也不是 HTTP API 请求体。普通用户直接用上面的自然语言即可。
babel_content_collect 保存正文:
{
"target": { "type": "url", "url": "https://example.org/articles/my-article" },
"save_as": "document",
"output": { "directory": "/absolute/path/to/authorized/materials" }
}example.org 仅为格式示例,测试时换成实际可访问的文章。提取 MP3 音频片段:
{
"target": { "type": "url", "url": "https://www.youtube.com/watch?v=REPLACE_WITH_VIDEO_ID" },
"save_as": "audio",
"preferences": { "audio_format": "mp3", "clip": { "start_seconds": 60, "end_seconds": 120 } },
"output": { "directory": "/absolute/path/to/authorized/materials" }
}提交返回 job_id 后,调用 babel_content_job_get:
{ "job_id": "替换为实际job_id", "artifact_offset": 0, "artifact_limit": 50 }若 artifact_page.next_offset 非空,用该值继续读取。不要把 collect 返回 queued 当成下载完成。
工具 | 用途 |
| 检查运行时、目标路由、扩展和依赖;可传 |
| 创建单个明确 URL 或标签页任务 |
| 查询状态、缺项和分页文件 |
| 恢复;可传 |
| 取消任务 |
| 查看当前客户端任务,支持 |
| 观察指定 |
| 在任务权限内执行允许的滚动、展开、静音播放等操作 |
save_as 与 include 互斥。include 可选 text、images、video、audio、subtitles、cover、files。其他偏好与标签页示例见 使用与测试手册。
常见问题
现象 | 处理方式 |
Agent 找不到工具 | 确认对应 CLI 已安装;检查 |
扩展“等待本机授权” | 核对真实扩展 ID,执行 |
| 保持 Chrome 开启,扩展点连接/恢复;检查任务所绑定的实例,不要只看总连接状态 |
版本仍是旧的 | 构建不会让 Chrome 自动重载;核对加载目录,在扩展管理页点一次重新加载,再看欢迎页版本 |
| 客户端已授权,不要重复注册或为此删除旧授权;直接检查当前配置和运行时状态 |
端口被占用 | 先识别占用进程;已有手动 |
输出目录被拒绝 | 使用 |
缺少媒体依赖 | 按上文安装并用 |
| 当前页面无法确认公开性或遇到访问门槛;核对链接与平台限制,不把错误页当成功 |
| 页面结构或加载状态可能变化;保留错误及任务 ID,不能靠重复下载保证成功 |
| DNS 返回了保留/内网地址;核对本机网络配置,运行时不会放行内网地址;可选 DNS 设置见运行时文档 |
有文件但 | 查看真实缺项;可能缺图片、全文、字幕或源内容完整性证明,已有可用文件可以先使用 |
博客带有导航/相关内容或日期为空 | 通用提取可能保留额外可读区域;无法确定发布日期时允许为空 |
本机配置默认在 ~/.config/babel-content-downloader/config.json,任务记录在 ~/.local/share/babel-content-downloader/jobs/。配置包含客户端凭据,不要附到公开 Issue 或源码包中。反馈时提供版本、平台、任务状态、错误码和去除敏感参数的链接即可。
升级停止与卸载
升级前让正在处理的任务结束或取消。保留配置、任务目录和已下载文件;在原稳定安装目录更新运行时包,避免改变服务入口路径。把命令中的版本文件名换成实际新包:
node "$BABEL_CLI" runtime-stop
npm install --prefix "$BABEL_INSTALL_ROOT" --omit=dev "$BABEL_RELEASE_DIR/babel-content-downloader-0.1.26.tgz"
node "$BABEL_CLI" runtime-start
node "$BABEL_CLI" runtime-status在 Chrome 对同一个扩展目录点“重新加载”,再检查版本和连接。若扩展来自独立 ZIP,更新原解压目录;若改了目录导致 ID 改变,需要授权新的实际 ID 并重启运行时。不要重新运行 add-client。
如果原来使用源码目录、手动 serve 或其他配置文件,应继续使用同一份配置和原入口,按 运行时文档 迁移;不能直接把上面的全新 TGZ 安装路径当成现有服务路径。
只暂停扩展可在设置页点击“暂停”;暂停不会等同于取消全部已启动任务。管理本项目后台服务:
node "$BABEL_CLI" runtime-stop
node "$BABEL_CLI" runtime-start移除 Codex 接入及本项目后台服务:
node "$BABEL_CLI" remove-client-config codex
node "$BABEL_CLI" remove-client codex
node "$BABEL_CLI" runtime-uninstall这些步骤会影响同一运行时的其他客户端;如果只是停用一个客户端,请保留后台服务并重启应用授权变更。扩展可在设置页撤销连接后由 Chrome 移除。上述命令不删除已收集资料;删除安装目录前先卸载其后台服务。
开发与其他文档
从仓库或源码 ZIP 构建:
npm ci
npm run typecheck
npm test -- --maxWorkers=2
npm run build然后以 dist/bootstrap/cli.js 为入口、dist/extension 为正式扩展,按上文授权与接入。音视频测试需要本机 FFmpeg。npm run lsp 另需 typescript-language-server;测试夹具不代表真实网站验收。
0.1.26 新增五语言宽屏概览页、独立设置页和完整 README;最新校验与测试结果见发行目录的 verification.json。以下为历史验证记录。
0.1.25 代码基线:43 个测试文件、340 项测试通过;运行时 TGZ 独立安装及八个 MCP 工具验证通过;源码 ZIP 可重新构建,60 个生成文件与交付构建逐字节一致。真实浏览器基线为 0.1.24;0.1.25 新增媒体处理元数据及文章日期修正,包验证不代表用户已重载新版本。
使用与测试手册:更多参数、逐项测试和反馈模板。
发布操作清单与发布说明:维护者上传源码和附件时使用。
源码采用 MIT;第三方依赖及下载内容的权利分别归其权利人。请按来源条款和你拥有的权限使用保存的资料。
This server cannot be deployed
Maintenance
Related MCP Connectors
PDF, image, video, OCR, screenshot, SQL, QR and text tools for agents. No API key, no signup.
15 media & data tools for AI agents: search, transcribe, subtitles, voiceover, translate & more.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to inspect, plan, download, and postprocess media from YouTube and other sites using yt-dlp, with safety and full option support.2813 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to download files from HTTP/HTTPS URLs to local directories or file paths with options like custom filename, headers, and overwrite control.16 npmMIT
- AlicenseAqualityCmaintenanceEnables AI agents to download, transcribe, and inspect video or audio URLs from YouTube, TikTok, X, and 1000+ other sites using server-side yt-dlp, residential proxies, and speech-to-text.924 npmMIT
- AlicenseAqualityCmaintenanceProvides AI agents with local file-processing capabilities for token counting, RAG chunking, CSV/JSON conversion, QR generation, and more, while keeping documents private on the user's machine.71MIT