X/Twitter 长文复制不了?用 Codex 自动抓正文、图片和互动数据保存成 Markdown

斌仔 分类:
文章字数 3130 字 阅读时间 18 分钟
🤖 由 ChatGPT 生成的文章摘要
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结

这篇教程写给第一次折腾命令行、Codex、Chrome 插件X/Twitter 长文抓取的新手。

最终目标很明确:

把一个 X/Twitter 长文链接,例如:

https://x.com/用户名/status/推文ID

抓取成一个本地 Markdown 文件,方便放进 Obsidian、Notion、Typora 或自己的资料库里长期保存。

本文里的 Twitter-cli 指的是一个命令行抓取工作流:用 Chrome 插件导出登录 Cookie,用命令行工具抓取推特长文原始内容,再用 Codex 辅助整理成 Markdown。

X/Twitter 长文复制不了?用 Codex 自动抓正文、图片和互动数据保存成 Markdown
X/Twitter 长文复制不了?用 Codex 自动抓正文、图片和互动数据保存成 Markdown

一、适合谁看

信息配图:一、适合谁看
信息配图:一、适合谁看

如果你符合下面任意一种情况,这篇教程就适合你:

  • 想保存 X/Twitter 上的长文,但是手动复制太麻烦。
  • 想把长文保存成 .md 文件,方便放进 Obsidian。
  • 使用 Windows,不熟悉 macOS 或 Linux 教程里的命令。
  • 不太会写代码,但愿意让 Codex 帮你跑命令、改脚本、整理文件。
  • 已经登录了 X/Twitter,但不知道怎么让命令行“带着登录状态”访问文章。

二、整体流程先看一眼

信息配图:二、整体流程先看一眼
信息配图:二、整体流程先看一眼

完整流程是这样:

  1. 在 Windows 上安装 Python。
  2. 安装命令行抓取工具 gallery-dl
  3. 在 Chrome 里登录 X/Twitter。
  4. 用 Chrome 插件导出 cookies.txt
  5. 在 PowerShell 里用命令抓取推特长文。
  6. 让 Codex 或 Python 脚本把 HTML 转成 Markdown。
  7. 把生成的 .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
信息配图:四、第一步:安装 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 抓取工具

信息配图:六、第三步:安装 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 插件
信息配图:七、第四步:安装 Chrome Cookie 插件

推特长文很多时候需要登录才能看到完整内容。

命令行工具本身没有登录你的账号,所以我们需要把 Chrome 里的登录状态导出来,也就是导出 Cookie。

推荐插件:

Get cookies.txt LOCALLY

安装方法:

  1. 打开 Chrome。
  2. 打开 Chrome 网上应用店。
  3. 搜索 Get cookies.txt LOCALLY
  4. 点击「添加到 Chrome」。
  5. 安装完成后,右上角会看到插件入口。

八、第五步:导出 X/Twitter Cookie

信息配图:八、第五步:导出 X/Twitter Cookie
信息配图:八、第五步:导出 X/Twitter Cookie

先在 Chrome 里打开:

https://x.com

确认你已经登录账号。

然后按下面步骤导出 Cookie:

  1. 打开你要抓取的推特长文页面,或者至少打开 https://x.com
  2. 点击 Chrome 右上角拼图按钮。
  3. 找到 Get cookies.txt LOCALLY
  4. 选择导出当前网站 Cookie。
  5. 保存文件为:
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

信息配图:十一、第八步:把 HTML 转成 Markdown
信息配图:十一、第八步:把 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 帮你做什么

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 导出更多数据

信息配图:十三、可选:使用 Twitter Web Exporter 导出更多数据
信息配图:十三、可选:使用 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

如果 pythonpy 都不能用,重新安装 Python,并勾选 Add python.exe to PATH

2. PowerShell 提示找不到 gallery-dl

不要直接用:

gallery-dl

改用:

python -m gallery_dl

这是 Windows 上最省心的写法。

3. 抓取时报登录错误

常见原因是 Cookie 失效。

解决方法:

  1. 打开 Chrome。
  2. 重新登录 https://x.com
  3. Get cookies.txt LOCALLY 重新导出 Cookie。
  4. 覆盖旧的 cookies\twitter_cookies.txt
  5. 重新运行抓取命令。

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 的一键提示词
信息配图:十六、给 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
0
0
0

非常感激每一位打赏的朋友!

支付宝扫码支持
微信扫码支持

扫一扫,请博主喝咖啡☕

文章作者: 斌仔
文章链接: https://www.wangdu.site/course/2364.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文武科技柜

相关推荐

共有 0 条评论