




















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


如果你符合下面任意一种情况,这篇教程就适合你:
.md 文件,方便放进 Obsidian。
完整流程是这样:
gallery-dl。cookies.txt。.md 文件放进你的资料库。你不用一开始就理解所有原理,先照着做一遍。跑通一次之后,再回头看就会很清楚。

你需要准备这些东西:
Get cookies.txt LOCALLY。可选工具:

打开 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"

这里推荐用 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。
推荐插件:
Get cookies.txt LOCALLY
安装方法:
Get cookies.txt LOCALLY。
先在 Chrome 里打开:
https://x.com
确认你已经登录账号。
然后按下面步骤导出 Cookie:
https://x.com。Get cookies.txt LOCALLY。twitter_cookies.txt
把这个文件放到:
C:\Users\你的用户名\Desktop\twitter-cli\cookies\twitter_cookies.txt
如果不确定路径,可以在 PowerShell 中运行:
explorer "$env:USERPROFILE\Desktop\twitter-cli\cookies"
这个命令会直接打开 cookies 文件夹。把导出的 twitter_cookies.txt 拖进去即可。
重要提醒:

推特长文通常有两种链接。
第一种是普通推文链接:
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 是文章里的图片。#,通常表示文件已存在,被跳过了,不是错误。
抓下来的 .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 说:
帮我检查 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 的价值:不是让你记住每条命令,而是让你把目标说清楚,它帮你检查、执行、修补。

如果你不只是想抓一篇长文,还想导出:
可以安装 Tampermonkey 或者 Violentmonkey
再安装用户脚本:Twitter Web Exporter
这个脚本适合导出 JSON、CSV、HTML 数据。
不过要注意:Twitter Web Exporter 更适合批量导出推文数据,不一定是抓取长文 Article 的最稳方案。长文 Article 还是建议优先用本文的 Cookie + 命令行方式。

先试:
py --version
如果 py 能用,后面命令都可以改成:
py -m gallery_dl --version
如果 python 和 py 都不能用,重新安装 Python,并勾选 Add python.exe to PATH。
不要直接用:
gallery-dl
改用:
python -m gallery_dl
这是 Windows 上最省心的写法。
常见原因是 Cookie 失效。
解决方法:
https://x.com。Get cookies.txt LOCALLY 重新导出 Cookie。cookies\twitter_cookies.txt。这一般也是登录状态问题。
检查三件事:
x.com 域名。路径检查命令:
Get-ChildItem ".\cookies\twitter_cookies.txt"
能看到文件信息才说明路径正确。
可能是链接不对,或者这个推文不是长文 Article。
你可以尝试:
x.com/i/article/... 链接。网页 HTML 本身可能包含很多按钮、脚本、样式文本。
可以让 Codex 继续清洗:
请读取这个 md 文件,删除无关按钮文字、导航文字、重复链接和多余空行,只保留文章标题、作者、正文和图片。
也可以让 Codex 根据当前 HTML 结构改进 html_to_md.py。
Windows 一般不会乱码,但老旧编辑器可能显示异常。
建议:
/ \ : * ? " < > | 这些特殊字符。Cookie 很敏感。
你可以把它理解成“短期通行证”。别人拿到 Cookie,可能绕过密码直接访问你的登录状态。
所以:

以后每次抓一篇新的推特长文,你只需要做三步。
第一步,确认 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:
我在 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,抓取完成后请直接运行它。

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

这套流程的核心不是某一个神奇按钮,而是把四件事接起来:
对小白来说,最难的地方不是代码,而是路径、Cookie、PowerShell 命令和报错排查。
只要第一次把目录和命令跑通,后面保存推特长文就会变成一个很稳定的流程:复制链接,运行抓取,转成 Markdown,放进资料库。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。