Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

X2MD Logo

X2MD — X to Markdown

一键将 X (Twitter) 推文和长文转换为 Markdown 文件,连同图片一起打包下载。

Manifest V3 License Version


✨ 功能特性

  • 📝 推文转 Markdown — 提取推文正文、图片,转换为结构清晰的 Markdown
  • 📰 X Article(长文)支持 — 完整提取长文内容,保留标题、段落、图文穿插顺序
  • 🖼️ 图片本地化 — 自动下载推文/文章中的所有图片,打包到 ZIP 中
  • 📦 一键 ZIP 下载 — Markdown 文件 + 图片文件夹,解压即用
  • 🎯 无噪音提取 — 自动过滤 UI 噪音(操作栏、互动计数、推广文案、时间戳等)
  • 🔘 原生风格按钮 — 下载按钮融入 X 的操作栏,视觉一致

📸 使用方式

  1. 进入任意一条推文详情页X Article 页面
  2. 在推文操作栏(回复、转发、喜欢旁边)找到 ⬇ 下载按钮
  3. 点击后自动提取内容并下载 .zip 文件

下载的 ZIP 包含:

article_1709312345678.zip
├── tweet.md           # Markdown 正文
└── images/
    ├── image_1.jpg    # 封面图 / 第一张图
    ├── image_2.jpg
    └── ...

🔧 安装方法

开发者模式加载

  1. 克隆或下载本仓库

    git clone https://github.com/your-username/x2md-ext.git
  2. 打开 Chrome,进入 chrome://extensions/

  3. 开启右上角 开发者模式

  4. 点击 加载已解压的扩展程序,选择 x2md-ext 目录

  5. 完成!访问 X 上任意推文详情页即可看到下载按钮

📁 项目结构

x2md-ext/
├── manifest.json          # Chrome 扩展配置(Manifest V3)
├── background/
│   └── background.js      # Service Worker(处理下载等后台任务)
├── content/
│   ├── content.js         # 核心逻辑:DOM 解析、内容提取、打包下载
│   └── content.css        # 下载按钮样式
├── libs/
│   └── jszip.min.js       # JSZip 库(ZIP 打包)
├── icons/                 # 扩展图标
└── docs/                  # 文档资源

🏗️ 技术方案

内容类型识别

类型 URL 模式 识别方式
普通推文 /user/status/123 data-testid="tweetText"
X Article /user/article/123 data-testid="articleBody"
Article(status URL) /user/status/123 URL 路径 + DOM 特征推断

提取策略

  • 普通推文:直接从 article[data-testid="tweet"] 中提取文本和图片
  • X Article(/article/ 页面):通过 articleBody 容器递归遍历 DOM,按语义标签提取标题、段落、代码块、引用、列表和图片
  • X Article(/status/ 页面):DOM 有序遍历主内容区,交替收集文本片段和图片,保持原始图文排列;自动过滤 UI 噪音

噪音过滤

自动过滤的内容包括:

  • 操作栏(回复、转发、喜欢、书签等按钮)
  • 互动计数(22, 75, 4.1万 等)
  • 时间戳、导航文字、推广文案
  • 重复的作者信息和标题

⚙️ 权限说明

权限 用途
activeTab 访问当前标签页的 DOM
downloads 触发文件下载
storage 存储扩展配置(预留)
*://*.x.com/* 在 X 页面注入内容脚本
*://pbs.twimg.com/* 下载推文中的图片资源

🚧 已知限制

  • 视频:当前版本不支持视频下载(仅支持封面图占位)
  • 评论区:仅提取正文内容,不包含评论
  • SPA 限制:从 /status/ 页面无法通过 fetch 获取 /article/ 的结构化 DOM(X 是 SPA),使用 DOM 遍历兜底方案

📋 开发计划

  • 视频下载支持
  • 评论区提取(可选)
  • 批量下载支持
  • 导出格式选项(纯 Markdown / HTML)
  • 配置面板(噪音过滤规则自定义)

📄 License

MIT

About

a chrome ext for twitter status or article to markdown

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages