mcpField
B
baoyu-danger-x-to-markdown

baoyu-danger-x-to-markdown

github.com/jimliu文档处理27.0k28.1k 次安装7 周前更新
代码仓库

关于 baoyu-danger-x-to-markdown

这项 Skill 将 X 帖子、帖子串和文章转换为带 YAML front matter 的 Markdown,并可选择下载媒体。使用逆向工程的 X API 前需要取得同意。

主要功能

  1. 01将帖子和帖子串转为 Markdown
  2. 02提取完整 X Article 内容
  3. 03以 YAML front matter 保存元数据
  4. 04可选下载图片和视频
  5. 05配置输出路径与媒体偏好

适用场景

  1. 01将 X 帖子串保存为 Markdown 文件
  2. 02归档带元数据的 X Article
  3. 03将帖子媒体保存到本地目录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jimliu/baoyu-skills --skill baoyu-danger-x-to-markdown

安装后在 Claude Code 中输入/baoyu-danger-x-to-markdown确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/config/
first-time-setup.md
scripts/
bun.lock
constants.ts
cookie-file.ts
cookies.ts
graphql.ts
http.ts
main.ts
markdown.test.ts
markdown.ts
media-localizer.ts
package.json
paths.ts
referenced-tweets.ts
thread-markdown.ts
thread.ts
tweet-article.ts
tweet-to-markdown.ts
types.ts

详细介绍

X 转 Markdown

将 X 内容转换为 Markdown:

  • 推文/串文 → 带 YAML front matter 的 Markdown
  • X 文章 → 完整内容提取

用户输入工具

当此技能提示用户时,请遵循以下工具选择规则(按优先级排序):

  1. 优先使用当前 Agent 运行时提供的内置用户输入工具,例如 AskUserQuestion、request_user_input、clarify、ask_user 或任何等效工具。
  2. 备用方案:如果没有此类工具,则输出带编号的纯文本消息,并请用户针对每个问题回复所选编号/答案。
  3. 批量提问:如果工具支持每次调用提出多个问题,请将所有适用问题合并到一次调用中;如果只能逐个提问,则按优先级逐一提问。

下方对 AskUserQuestion 的具体引用仅为示例——在其他运行时中,请替换为本地等效工具。

脚本目录

脚本位于 scripts/ 子目录中。

路径解析:

  1. {baseDir} = 此 SKILL.md 所在目录
  2. 脚本路径 = {baseDir}/scripts/main.ts
  3. 解析 ${BUN_X} 运行时:如果已安装 bun → 使用 bun;如果有 npx → 使用 npx -y bun;否则建议安装 bun

同意要求

进行任何转换前,请检查并取得用户同意。

同意流程

第 1 步:检查同意文件

# macOS
cat ~/Library/Application\ Support/baoyu-skills/x-to-markdown/consent.json

# Linux
cat ~/.local/share/baoyu-skills/x-to-markdown/consent.json

第 2 步:如果 accepted: true 且 disclaimerVersion: "1.0" → 打印警告并继续:

Warning: Using reverse-engineered X API. Accepted on: <acceptedAt>

第 3 步:如果文件缺失或版本不匹配 → 显示免责声明:

DISCLAIMER

This tool uses a reverse-engineered X API, NOT official.

Risks:
- May break if X changes API
- No guarantees or support
- Possible account restrictions
- Use at your own risk

Accept terms and continue?

使用 AskUserQuestion,选项为:“是,我接受” | “否,我拒绝”

第 4 步:接受后 → 创建同意文件:

{
  "version": 1,
  "accepted": true,
  "acceptedAt": "<ISO timestamp>",
  "disclaimerVersion": "1.0"
}

第 5 步:拒绝后 → 输出 "User declined. Exiting." 并停止。

偏好设置(EXTEND.md)

按优先级顺序检查 EXTEND.md——以找到的第一个文件为准:

优先级路径范围
1.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md项目
2${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.mdXDG
3$HOME/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md用户主目录
结果操作
找到读取、解析并应用设置
未找到必须运行首次设置(见下文)——不得静默创建默认设置

EXTEND.md 支持:默认下载媒体、默认输出目录。

首次设置(阻塞)

重要:如果未找到 EXTEND.md,必须使用 AskUserQuestion 询问用户的偏好,然后才能创建 EXTEND.md。绝不可在未询问的情况下创建带默认值的 EXTEND.md。这是一个阻塞操作——在设置完成前不得继续进行任何转换。

使用 AskUserQuestion,在一次调用中提出所有问题:

问题 1 — 标题:“媒体”,问题:“如何处理推文中的图片和视频?”

  • “每次询问(推荐)” — 保存 Markdown 后,询问是否下载媒体
  • “始终下载” — 始终将媒体下载到本地 imgs/ 和 videos/ 目录
  • “从不下载” — 在 Markdown 中保留原始远程 URL

问题 2 — 标题:“输出”,问题:“默认输出目录?”

  • “x-to-markdown(推荐)” — 保存到 ./x-to-markdown/{username}/{tweet-id}.md -(用户可以选择“其他”并输入自定义路径)

问题 3 — 标题:“保存”,问题:“将偏好设置保存到哪里?”

  • “用户(推荐)” — ~/.baoyu-skills/(适用于所有项目)
  • “项目” — .baoyu-skills/(仅适用于此项目)

用户回答后,在所选位置创建 EXTEND.md,确认“偏好设置已保存到 [path]”,然后继续。

完整参考:references/config/first-time-setup.md

支持的键
键默认值值描述
download_mediaaskask / 1 / 0ask = 每次询问,1 = 始终下载,0 = 从不下载
default_output_dirempty路径或空默认输出目录(empty = ./x-to-markdown/)

值优先级:

  1. CLI 参数(--download-media、-o)
  2. EXTEND.md
  3. Skill 默认值

用法

${BUN_X} {baseDir}/scripts/main.ts <url>
${BUN_X} {baseDir}/scripts/main.ts <url> -o output.md
${BUN_X} {baseDir}/scripts/main.ts <url> --download-media
${BUN_X} {baseDir}/scripts/main.ts <url> --json

选项

选项描述
<url>推文或文章 URL
-o <path>输出路径
--jsonJSON 输出
--download-media将图片/视频资源下载到本地 imgs/ 和 videos/,并将 Markdown 链接改写为本地相对路径
--login仅刷新 Cookie

支持的 URL

  • https://x.com/<user>/status/<id>
  • https://twitter.com/<user>/status/<id>
  • https://x.com/i/article/<id>

输出

---
url: "https://x.com/user/status/123"
author: "Name (@user)"
tweetCount: 3
coverImage: "https://pbs.twimg.com/media/example.jpg"
---

Content...

文件结构:x-to-markdown/{username}/{tweet-id}/{content-slug}.md

启用 --download-media 时:

  • 图片保存在 Markdown 文件旁的 imgs/ 中
  • 视频保存在 Markdown 文件旁的 videos/ 中
  • Markdown 媒体链接将改写为本地相对路径

媒体下载工作流

根据 EXTEND.md 中的 download_media 设置:

设置行为
1(始终)使用 --download-media 标志运行脚本
0(从不)不使用 --download-media 标志运行脚本
ask(默认)按照下方的逐次询问流程操作
逐次询问流程
  1. 不使用 --download-media 运行脚本 → 保存 Markdown
  2. 检查已保存的 Markdown 中是否包含远程媒体 URL(图片/视频链接中的 https://)
  3. 如果没有找到远程媒体 → 完成,无需询问
  4. 如果找到远程媒体 → 使用 AskUserQuestion:
    • 标题:「媒体」,问题:「要将 N 张图片/个视频下载到本地文件吗?」
    • 「是」— 下载到本地目录
    • 「否」— 保留远程 URL
  5. 如果用户确认 → 再次使用 --download-media 运行脚本(覆盖 Markdown,并将链接改为本地链接)

身份验证

  1. 环境变量(首选):X_AUTH_TOKEN、X_CT0
  2. Chrome 登录(备用):自动打开 Chrome,并在本地缓存 Cookie

扩展支持

通过 EXTEND.md 自定义配置。路径和支持的选项请参阅首选项部分。

评论

支持 Markdown