X/Twitter 长文复制不了?用 Codex 自动抓正文、图片和互动数据保存成 Markdown
文章目录
这篇教程写给第一次折腾命令行、Codex、Chrome 插件和 X/Twitter 长文抓取的新手。
最终目标很明确:
把一个 X/Twitter 长文链接,例如:
https://x.com/用户名/status/推文ID
抓取成一个本地 Markdown 文件,方便放进 Obsidian、Notion、Typora 或自己的资料库里长期保存。
本文里的 Twitter-cli 指的是一个命令行抓取工作流:用 Chrome 插件导出登录 Cookie,用命令行工具抓取推特长文原始内容,再用 Codex 辅助整理成 Markdown。

一、适合谁看

如果你符合下面任意一种情况,这篇教程就适合你:
- 想保存 X/Twitter 上的长文,但是手动复制太麻烦。
- 想把长文保存成
.md文件,方便放进 Obsidian。 - 使用 Windows,不熟悉 macOS 或 Linux 教程里的命令。
- 不太会写代码,但愿意让 Codex 帮你跑命令、改脚本、整理文件。
- 已经登录了 X/Twitter,但不知道怎么让命令行“带着登录状态”访问文章。
二、整体流程先看一眼

完整流程是这样:
- 在 Windows 上安装 Python。
- 安装命令行抓取工具
gallery-dl。 - 在 Chrome 里登录 X/Twitter。
- 用 Chrome 插件导出
cookies.txt。 - 在 PowerShell 里用命令抓取推特长文。
- 让 Codex 或 Python 脚本把 HTML 转成 Markdown。
- 把生成的
.md文件放进你的资料库。
你不用一开始就理解所有原理,先照着做一遍。跑通一次之后,再回头看就会很清楚。
三、准备工作

你需要准备这些东西:
- 一台 Windows 电脑。
- 一个能正常登录 X/Twitter 的 Chrome 浏览器。
- 一个 X/Twitter 账号。
- Codex 桌面版或 Codex 命令行环境。
- Python 3.9 或更高版本。
- Chrome 插件:
Get cookies.txt LOCALLY。
可选工具:
- Obsidian:用来管理 Markdown 笔记。
- Typora 或 VS Code:用来预览 Markdown。
- Tampermonkey + Twitter Web Exporter:适合导出时间线、收藏、书签等数据,但本文重点是长文抓取。
四、第一步:安装 Python

打开 Python 官网下载安装包:
https://www.python.org/downloads/windows/
安装时一定要勾选:
Add python.exe to PATH
这一步非常重要。小白最常见的问题就是安装了 Python,但 PowerShell 里找不到 python。
安装完成后,打开 PowerShell。
检查 Python 是否安装成功:
python --version
如果看到类似下面的输出,说明成功:
Python 3.9.13
如果提示找不到 python,可以再试:
py --version
如果 py 可以用,也没问题。后面的命令可以把 python 替换成 py。
五、第二步:创建工作目录

建议先建一个专门存放推特长文的目录。
在 PowerShell 中运行:
mkdir "$env:USERPROFILE\Desktop\twitter-cli"
cd "$env:USERPROFILE\Desktop\twitter-cli"
mkdir cookies
mkdir downloads
mkdir markdown
mkdir scripts
目录含义如下:
| 文件夹 | 用途 |
|---|---|
cookies |
保存从 Chrome 导出的登录 Cookie |
downloads |
保存命令行抓下来的原始文件 |
markdown |
保存最终生成的 Markdown 文件 |
scripts |
保存转换脚本 |
后面所有命令默认都在这个目录下执行:
cd "$env:USERPROFILE\Desktop\twitter-cli"
六、第三步:安装 Twitter-cli 抓取工具

这里推荐用 gallery-dl 作为核心抓取工具。
它是一个命令行下载工具,可以抓取很多网站的内容,也支持 X/Twitter。
在 PowerShell 中运行:
python -m pip install --upgrade pip
python -m pip install --upgrade gallery-dl
检查是否安装成功:
python -m gallery_dl --version
注意,这里用的是:
python -m gallery_dl
不是:
gallery-dl
原因是 Windows 上经常会遇到 gallery-dl 命令没有加入 PATH 的问题。用 python -m gallery_dl 更稳。
如果你看到版本号,例如:
1.x.x
说明安装成功。
七、第四步:安装 Chrome Cookie 插件

推特长文很多时候需要登录才能看到完整内容。
命令行工具本身没有登录你的账号,所以我们需要把 Chrome 里的登录状态导出来,也就是导出 Cookie。
推荐插件:
Get cookies.txt LOCALLY
安装方法:
- 打开 Chrome。
- 打开 Chrome 网上应用店。
- 搜索
Get cookies.txt LOCALLY。 - 点击「添加到 Chrome」。
- 安装完成后,右上角会看到插件入口。
八、第五步:导出 X/Twitter Cookie

先在 Chrome 里打开:
https://x.com
确认你已经登录账号。
然后按下面步骤导出 Cookie:
- 打开你要抓取的推特长文页面,或者至少打开
https://x.com。 - 点击 Chrome 右上角拼图按钮。
- 找到
Get cookies.txt LOCALLY。 - 选择导出当前网站 Cookie。
- 保存文件为:
twitter_cookies.txt
把这个文件放到:
C:\Users\你的用户名\Desktop\twitter-cli\cookies\twitter_cookies.txt
如果不确定路径,可以在 PowerShell 中运行:
explorer "$env:USERPROFILE\Desktop\twitter-cli\cookies"
这个命令会直接打开 cookies 文件夹。把导出的 twitter_cookies.txt 拖进去即可。
重要提醒:
- Cookie 相当于临时登录凭证,不要发给别人。
- 不要把 Cookie 上传到 GitHub、网盘或公开文档。
- 如果抓取突然失败,第一反应是重新导出 Cookie。
- Cookie 过期很正常,重新导出覆盖旧文件即可。
九、第六步:找到推特长文链接

推特长文通常有两种链接。
第一种是普通推文链接:
https://x.com/用户名/status/推文ID
第二种是文章链接:
https://x.com/i/article/文章ID
如果你在浏览器里打开的是普通推文链接,也可以先用它尝试抓取。很多情况下工具会自动识别里面关联的 Article。
为了避免中文、空格和特殊符号带来的路径问题,建议先把链接复制到记事本里备用。
十、第七步:用命令抓取长文

回到 PowerShell,进入工作目录:
cd "$env:USERPROFILE\Desktop\twitter-cli"
把下面命令里的链接换成你自己的推特长文链接:
python -m gallery_dl `
--cookies ".\cookies\twitter_cookies.txt" `
--directory ".\downloads" `
"https://x.com/用户名/status/推文ID"
PowerShell 里的反引号 ` `` 表示换行。
如果你怕复制错,也可以写成一行:
python -m gallery_dl --cookies ".\cookies\twitter_cookies.txt" --directory ".\downloads" "https://x.com/用户名/status/推文ID"
抓取成功后,打开下载目录:
explorer ".\downloads"
你会看到类似这样的文件结构:
downloads
└── twitter
└── 用户名
├── 文章ID_1.htm
├── 文章ID_2.jpg
├── 文章ID_3.jpg
└── ...
其中:
.htm是文章正文。.jpg、.webp、.webp是文章里的图片。- 如果命令输出里文件前面有
#,通常表示文件已存在,被跳过了,不是错误。
十一、第八步:把 HTML 转成 Markdown

抓下来的 .htm 是网页格式,不方便直接放进 Obsidian。
我们可以写一个小脚本,把它转成 Markdown。
先安装解析依赖:
python -m pip install beautifulsoup4 markdownify
然后在 scripts 文件夹中新建文件:
html_to_md.py
可以让 Codex 帮你创建这个文件,也可以自己复制下面的代码进去。
from pathlib import Path
from bs4 import BeautifulSoup
from markdownify import markdownify as md
import re
ROOT = Path.home() / "Desktop" / "twitter-cli"
DOWNLOADS = ROOT / "downloads"
OUTPUT = ROOT / "markdown"
OUTPUT.mkdir(parents=True, exist_ok=True)
def clean_filename(name: str) -> str:
name = re.sub(r'[\\/:*?"<>|]', "", name)
name = re.sub(r"\s+", " ", name).strip()
return name[:80] or "twitter-article"
def find_article_html_files():
return sorted(DOWNLOADS.rglob("*.htm")) + sorted(DOWNLOADS.rglob("*.html"))
def extract_title(soup: BeautifulSoup, html_file: Path) -> str:
if soup.title and soup.title.get_text(strip=True):
return soup.title.get_text(strip=True)
h1 = soup.find("h1")
if h1 and h1.get_text(strip=True):
return h1.get_text(strip=True)
return html_file.stem
def convert_one(html_file: Path):
html = html_file.read_text(encoding="utf-8", errors="ignore")
soup = BeautifulSoup(html, "html.parser")
title = extract_title(soup, html_file)
body = soup.body or soup
markdown = md(str(body), heading_style="ATX")
markdown = re.sub(r"\n{3,}", "\n\n", markdown).strip()
source_note = f"> Source HTML: `{html_file}`\n\n"
final_text = f"# {title}\n\n{source_note}{markdown}\n"
out_file = OUTPUT / f"{clean_filename(title)}.md"
out_file.write_text(final_text, encoding="utf-8")
print(f"OK: {html_file} -> {out_file}")
def main():
html_files = find_article_html_files()
if not html_files:
print(f"No HTML files found in: {DOWNLOADS}")
return
for html_file in html_files:
convert_one(html_file)
if __name__ == "__main__":
main()
运行转换脚本:
python ".\scripts\html_to_md.py"
转换完成后打开 Markdown 目录:
explorer ".\markdown"
你应该能看到生成的 .md 文件。
十二、第九步:让 Codex 帮你做什么

Codex 在这个流程里特别适合做三件事:
第一,检查环境。
你可以直接对 Codex 说:
帮我检查 Windows 上 Python、gallery-dl、Cookie 文件是否都准备好了。
Codex 可以帮你跑:
python --version
python -m gallery_dl --version
Get-ChildItem ".\cookies"
第二,执行抓取。
你可以把链接发给 Codex:
帮我用 cookies/twitter_cookies.txt 抓取这个 X 长文:
https://x.com/用户名/status/推文ID
Codex 会在 PowerShell 中执行类似命令:
python -m gallery_dl --cookies ".\cookies\twitter_cookies.txt" --directory ".\downloads" "https://x.com/用户名/status/推文ID"
第三,清洗 Markdown。
有些网页转出来会有多余链接、按钮文字或空行。你可以让 Codex 做二次整理:
把 markdown 文件夹里的最新 md 文件整理一下:保留标题、正文、图片链接,删除网页按钮、脚本残留和重复空行。
这就是 Codex 的价值:不是让你记住每条命令,而是让你把目标说清楚,它帮你检查、执行、修补。
十三、可选:使用 Twitter Web Exporter 导出更多数据

如果你不只是想抓一篇长文,还想导出:
- 自己的书签。
- 某个列表里的推文。
- 时间线里的推文。
- 搜索结果。
- 用户主页推文。
可以安装 Tampermonkey 或者 Violentmonkey
再安装用户脚本:Twitter Web Exporter
这个脚本适合导出 JSON、CSV、HTML 数据。
不过要注意:Twitter Web Exporter 更适合批量导出推文数据,不一定是抓取长文 Article 的最稳方案。长文 Article 还是建议优先用本文的 Cookie + 命令行方式。
十四、常见问题

1. PowerShell 提示找不到 python
先试:
py --version
如果 py 能用,后面命令都可以改成:
py -m gallery_dl --version
如果 python 和 py 都不能用,重新安装 Python,并勾选 Add python.exe to PATH。
2. PowerShell 提示找不到 gallery-dl
不要直接用:
gallery-dl
改用:
python -m gallery_dl
这是 Windows 上最省心的写法。
3. 抓取时报登录错误
常见原因是 Cookie 失效。
解决方法:
- 打开 Chrome。
- 重新登录
https://x.com。 - 用
Get cookies.txt LOCALLY重新导出 Cookie。 - 覆盖旧的
cookies\twitter_cookies.txt。 - 重新运行抓取命令。
4. 抓取时报 403 或 401
这一般也是登录状态问题。
检查三件事:
- Chrome 里是否真的已经登录 X/Twitter。
- Cookie 文件是不是导出的
x.com域名。 - Cookie 文件路径是不是写对了。
路径检查命令:
Get-ChildItem ".\cookies\twitter_cookies.txt"
能看到文件信息才说明路径正确。
5. 下载目录里没有 htm 文件
可能是链接不对,或者这个推文不是长文 Article。
你可以尝试:
- 打开推文,看看是否真的有长文内容。
- 找页面里的
x.com/i/article/...链接。 - 换成 Article 链接重新抓取。
6. Markdown 转出来很乱
网页 HTML 本身可能包含很多按钮、脚本、样式文本。
可以让 Codex 继续清洗:
请读取这个 md 文件,删除无关按钮文字、导航文字、重复链接和多余空行,只保留文章标题、作者、正文和图片。
也可以让 Codex 根据当前 HTML 结构改进 html_to_md.py。
7. 中文文件名乱码
Windows 一般不会乱码,但老旧编辑器可能显示异常。
建议:
- 用 VS Code、Typora 或 Obsidian 打开。
- 确认文件编码是 UTF-8。
- 文件名不要太长,不要包含
/ \ : * ? " < > |这些特殊字符。
8. Cookie 文件安全吗
Cookie 很敏感。
你可以把它理解成“短期通行证”。别人拿到 Cookie,可能绕过密码直接访问你的登录状态。
所以:
- 不要发给别人。
- 不要截图公开。
- 不要提交到 GitHub。
- 不要放进公开网盘。
- 失误泄露后,立刻退出 X/Twitter 所有登录设备并修改密码。
十五、推荐的新手操作模板

以后每次抓一篇新的推特长文,你只需要做三步。
第一步,确认 Cookie 还有效。
cd "$env:USERPROFILE\Desktop\twitter-cli"
Get-ChildItem ".\cookies\twitter_cookies.txt"
第二步,抓取文章。
python -m gallery_dl --cookies ".\cookies\twitter_cookies.txt" --directory ".\downloads" "https://x.com/用户名/status/推文ID"
第三步,转成 Markdown。
python ".\scripts\html_to_md.py"
然后打开结果目录:
explorer ".\markdown"
十六、给 Codex 的一键提示词

你可以把下面这段直接发给 Codex:
我在 Windows 上要抓取 X/Twitter 长文并保存为 Markdown。
工作目录是:
C:\Users\我的用户名\Desktop\twitter-cli
Cookie 文件是:
cookies\twitter_cookies.txt
请帮我:
1. 检查 Python 和 gallery-dl 是否可用;
2. 检查 Cookie 文件是否存在;
3. 用 Cookie 抓取这个链接:
https://x.com/用户名/status/推文ID
4. 把下载下来的 HTML 转成 Markdown;
5. 把最终 md 文件保存到 markdown 文件夹。
如果你已经有转换脚本,可以再补一句:
转换脚本在 scripts\html_to_md.py,抓取完成后请直接运行它。
十七、实战建议

刚开始不要批量抓很多篇。
先拿一篇公开、能正常打开的长文测试。跑通之后,再处理收藏夹里的重要文章。
建议每篇文章至少保留三份信息:
- 原始推文链接。
- 原始 HTML 文件。
- 清洗后的 Markdown 文件。
这样即使后面 Markdown 转换不满意,也可以回到 HTML 重新生成。
十八、总结

这套流程的核心不是某一个神奇按钮,而是把四件事接起来:
- Chrome 负责登录 X/Twitter。
- Chrome 插件负责导出 Cookie。
- Twitter-cli 命令行负责抓取长文。
- Codex 负责执行命令、修脚本、清洗 Markdown。
对小白来说,最难的地方不是代码,而是路径、Cookie、PowerShell 命令和报错排查。
只要第一次把目录和命令跑通,后面保存推特长文就会变成一个很稳定的流程:复制链接,运行抓取,转成 Markdown,放进资料库。
你觉得这篇文章怎么样?
共有 0 条评论