一个强大的 Chrome 浏览器插件,用于从 Substack 文章页面提取标题、作者、日期、内容等信息并保存为 Markdown 格式。
- ✅ 智能识别:自动识别 Substack 文章页面
- 📋 元数据提取:标题、作者、发布日期、描述、出版社信息
- 🖼️ 图片保留:图片保留在原始位置,脱离上下文
- 🔗 链接收集:提取文章内的所有外部链接
- 📝 格式良好:生成标准 Markdown 格式
- 💾 一键下载:自动保存到本地
- 👁️ 实时预览:预览生成的 Markdown 内容
- 🔗 支持 /@username/p-xxx URL 格式(个人资料文章页面)
- 🧠 智能提取:检测 JSON-LD Person 类型并优先使用 og:title/og:image
- 📅 日期解析增强:正则表达式不区分大小写(支持 FEB、Feb 等格式)
- 👥 多作者支持:支持多作者显示
- 🏷️ 品牌标识:添加 "Powered By Activer" 署名
- 📄 PDF 署名:生成的 PDF 底部添加品牌页脚
- 🖼️ 文档优化:README 添加预览图片
- 📄 客户端 PDF 导出:使用 pdfmake 直接生成高质量 PDF,无需打印对话框
- 🎨 UI/UX 全面升级:沉浸式卡片布局、骨架屏加载、空状态设计
- 🔤 中英文字体支持:集成 Noto Serif SC,完美支持中英文混排
- 🧠 智能语言检测:自动识别文章语言并优化排版
- 🎯 支持首页阅读器模式:
substack.com/inbox/post/p-xxx和substack.com/home/post/p-xxx - 🧠 DOM 解析回退:无 JSON-LD 时智能提取元数据
- 🔍 调试日志:详细的控制台日志,方便定位问题
- 🌐 自定义域名支持:完美支持所有 Substack 自定义域名
- 📅 中文文件名:支持中文字符和特殊字符
- 🛡️ 智能过滤:自动过滤导航、按钮等无关内容
- 📋 剪贴板支持:一键复制 Markdown 内容
- 👁️ 预览模式:下载前预览生成的 Markdown
- 📦 图片本地化:ZIP 导出包含本地图片
- 🔗 Obsidian 集成:直接保存到 Obsidian vault
- 🖨️ PDF 导出:优化的打印样式
- ⚙️ YAML Frontmatter:支持 Obsidian/Notion 元数据
- 📁 自定义文件名:多种命名格式选项
URL 格式:
https://xxx.substack.com/p/文章标题https://自定义域名.com/p/文章标题
提取方式:
- ✅ 使用 JSON-LD 结构化数据
- ✅ 完整的元数据(标题、作者、日期、描述)
- ✅ 高质量内容提取
URL 格式:
https://substack.com/inbox/post/p-xxxhttps://substack.com/home/post/p-xxx
提取方式:
- ✅ 使用 DOM 解析提取元数据
- ✅ 智能提取标题、作者、日期
- ✅ 完整的文章内容提取
URL 格式:
https://substack.com/home(纯首页信息流)
原因: 显示文章列表/预览,没有完整内容
- 克隆或下载此项目
git clone https://github.com/yourusername/chrome-plugin-substack.git-
打开 Chrome 浏览器,访问
chrome://extensions/ -
开启右上角的"开发者模式"
-
点击"加载已解压的扩展程序"
-
选择项目文件夹
-
访问任意 Substack 文章页面
- 文章详情页:
https://newsletter.eng-leadership.com/p/xxx - 首页阅读器:
https://substack.com/inbox/post/p-xxx(需登录)
- 文章详情页:
-
点击浏览器工具栏中的插件图标
-
查看提取的文章信息
-
点击"🚀 提取并下载 Markdown"按钮
-
选择保存位置,文件将自动下载
如果遇到问题,可以查看控制台日志:
-
打开浏览器控制台(按 F12,切换到 Console 标签)
-
刷新页面并打开插件
-
查看详细的日志输出:
[Popup] ========== 开始检查页面 ==========
[Popup] 当前标签页 URL: https://...
[Popup] ✅ 是 Substack 相关页面
[Injected] 开始执行提取逻辑...
[Injected] ✅ 提取完成: {sectionsCount: 45, imagesCount: 3}
# 文章标题
## 📋 文章信息
- **作者**: 作者名称
- **发布日期**: 2026年2月4日
- **出版社**: [出版物名称](URL)
- **原文链接**: https://...
## 📝 简介
文章描述...
## 🖼️ 封面

## 📖 正文
### 章节标题
段落内容...
更多段落...
## 🔗 相关链接
- [链接文本](URL)
---
*提取时间: 2026年2月4日*
*由 [Substack to Markdown](https://github.com) 插件生成*插件使用多种策略来提取文章数据:
const jsonLdScript = document.querySelector('script[type="application/ld+json"]');
const data = JSON.parse(jsonLdScript.textContent);// 标题提取
document.title
// 作者提取
document.querySelector('a[href*="/@"]')
// 日期提取
正则匹配: /^[A-Z][a-z]{2}\s+\d{1,2},\s+\d{4}$/
// 内容容器
document.querySelector('.body.markup')| 字段 | 来源 | 说明 |
|---|---|---|
| 标题 | JSON-LD / document.title | 文章主标题 |
| 副标题 | h3 | 文章描述性副标题 |
| 作者 | JSON-LD / DOM | 作者名称和链接 |
| 发布日期 | JSON-LD / DOM | 格式化日期 |
| 出版社 | JSON-LD / DOM | Substack 出版物信息 |
| 封面图 | JSON-LD | 主文章图片 |
| 正文内容 | DOM | 文章所有段落和标题 |
| 图片 | DOM | 文章内的所有图片(保留原位置) |
| 链接 | DOM | 文章内的所有外部链接 |
- 🔗 新增:支持
/@username/p-xxxURL 格式(个人资料文章页面) - 🧠 智能提取:检测 JSON-LD Person 类型并优先使用 og:title/og:image
- 📅 修复:日期正则表达式改为不区分大小写(支持 FEB、Feb 等格式)
- 👥 多作者:支持多作者显示
- 🏷️ 品牌标识:添加 "Powered By Activer" 署名
- 📄 PDF 署名:生成的 PDF 底部添加品牌页脚
- 🖼️ 文档优化:README 添加预览图片
- 🎉 版本升级:次版本号提升,反映重大功能更新
- 📄 客户端 PDF 导出:使用 pdfmake 直接生成高质量 PDF,无需打印对话框
- 🎨 UI/UX 全面升级:沉浸式卡片布局、骨架屏加载、空状态设计
- 🔤 中英文字体支持:集成 Noto Serif SC,完美支持中英文混排
- 🧠 智能语言检测:自动识别文章语言并优化排版
- 🔧 设置面板增强:新增"纯净模式"选项,过滤推广内容
- 📊 操作反馈优化:所有按钮的状态提示(Processing/Exported/Saved)
- 🐛 修复:设置按钮点击无响应问题(JS 与 CSS 显示机制不一致)
- ✨ 改进:设置面板视觉增强(渐变背景、橙色强调线、增强阴影、圆角)
- 🎨 改进:设置图标替换为 Material Design 风格,与底部按钮保持一致
- ✨ 新增:点击外部区域自动关闭设置面板
- ✨ 新增:Escape 键关闭设置面板和预览模态框
- 🐛 修复:PDF 打印时标题上方的空白区域(~100px)
- 🔧 改进:重置 modalViewer 和 article 的 padding/margin
- 🔧 改进:打印时标题直接位于页面顶部
- 🔍 分析:使用 Chrome DevTools MCP 工具定位问题根源
- 🐛 修复:图片保留在文章中的原始位置
- ✨ 改进:使用
.body.markup容器提取内容 - 🗑️ 删除:移除末尾的单独图片列表
- ✨ 新增:支持首页阅读器模式(
substack.com/inbox/post/p-xxx和substack.com/home/post/p-xxx) - ✨ 新增:DOM 解析提取元数据(无 JSON-LD 时的回退方案)
- 🐛 修复:提取正确的文章标题和发布者
- 📝 改进:详细的调试日志输出
- 🌐 改进:支持自定义域名
- 📅 改进:文件名支持中文字符
- ✨ 初始版本
- ✅ 支持文章详情页
- ✅ JSON-LD 提取
- ✅ Markdown 转换
插件需要以下权限:
activeTab- 访问当前活动标签页scripting- 注入脚本到页面downloads- 下载生成的 Markdown 文件host_permissions- 访问 substack.com 及其子域名
chrome-plugin-substack/
├── manifest.json # Manifest V3 配置
├── content.js # 内容脚本(注入到页面)
├── popup.js # 弹出窗口逻辑
├── popup.html # 弹出窗口界面
├── background.js # 后台服务脚本
├── icons/ # 图标文件
│ ├── icon16.png
│ ├── icon48.png
│ └── icon128.png
├── README.md # 本文档
└── task-plan.md # 开发规划(归档)
A: 请确保:
- ✅ 你在文章详情页或首页阅读器页面(URL 包含
/p/xxx或/inbox/post/p-xxx) - ✅ 已登录 Substack(首页阅读器模式需要登录)
- ✅ 页面已完全加载
A: 可能的原因:
⚠️ 页面还在加载中,请等待几秒后重试⚠️ 文章可能是付费内容,需要订阅⚠️ 打开控制台查看具体错误日志
A: 已在 v1.0.1 修复,现在支持中文字符和特殊字符
A: 已在 v1.0.2 修复,图片现在保留在原始位置
A: 当前版本不支持,但已在规划中(见下文"未来计划")
- 图片本地化:ZIP 导出包含本地图片(v1.0.x)
- Obsidian 集成:一键保存到 Obsidian(v1.0.x)
- 自定义模板:YAML Frontmatter + 文件名格式选择(v1.0.x)
- 剪贴板支持:一键复制 Markdown(v1.0.x)
- 预览模式:下载前预览生成的内容(v1.0.x)
- 脚注支持:标准 Markdown 脚注格式(v1.0.x)
- PDF 导出(打印):优化的打印样式(v1.0.3 修复空白问题)
- PDF 直接导出:客户端生成 PDF,支持中英文混排(v1.1.5)
- UI/UX 全面升级:沉浸式卡片、骨架屏、空状态(v1.1.5)
- 操作反馈优化:所有按钮的状态提示(v1.1.5)
- 纯净模式:过滤推广和营销内容(v1.1.5)
- 个人资料页面支持:支持 /@username/p-xxx URL 格式(v1.1.6)
- 品牌标识:添加 "Powered By Activer" 署名(v1.1.6)
- 纯净模式:过滤推广和营销内容(v1.1.5 已完成)
- 批量下载:支持一键下载整个订阅源归档(v1.2.0 规划中)
- Chrome Web Store 发布:完成合规性检查并提交审核
- 代码模块化:拆分 popup.js 提升可维护性
- Notion 集成:一键推送到 Notion 数据库
- 多平台支持:Medium、Ghost 等其他平台
- 快捷键支持:Alt+M 快速提取
- 全文搜索:搜索已下载的文章
- 标签分类:自动添加标签和分类
- AI 摘要:集成 AI API 生成文章摘要
- WebDAV 同步:支持坚果云、Nextcloud 等网盘
- 本地数据库:IndexedDB 存储下载历史
查看完整开发规划:参见 task-plan.md
- AI 摘要:集成 AI API 生成摘要
- 翻译功能:自动翻译英文文章为中文
- 订阅管理:管理关注的作者,自动检测新文章
- 开放 API:供其他扩展调用
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
MIT License
最后更新: 2026-02-05 当前版本: v1.1.6 Happy Extracting! 🚀
