baoyu-danger-x-to-markdown – skill Tài liệu & Office cho agent AI
Chuyển đổi tweet và bài viết trên X (Twitter) sang markdown với YAML front matter. Sử dụng API được reverse-engineer, cần người dùng đồng ý. Dùng khi người dùng nhắc đến "X to markdown", "tweet to markdown", "save tweet" hoặc cung cấp URL x.com/twitter.com để chuyển đổi.
Cài skill baoyu-danger-x-to-markdown bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/baoyu-danger-x-to-markdown-c6bc3.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /baoyu-danger-x-to-markdown – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/baoyu-danger-x-to-markdown-c6bc3.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $baoyu-danger-x-to-markdown – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/baoyu-danger-x-to-markdown-c6bc3.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /baoyu-danger-x-to-markdown – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/baoyu-danger-x-to-markdown-c6bc3.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /baoyu-danger-x-to-markdown – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
X to Markdown
Converts X content to markdown:
- Tweets/threads → Markdown with YAML front matter
- X Articles → Full content extraction
User Input Tools
When this skill prompts the user, follow this tool-selection rule (priority order):
1. Prefer built-in user-input tools exposed by the current agent runtime — e.g., AskUserQuestion, request_user_input, clarify, ask_user, or any equivalent.
2. Fallback: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.
3. Batching: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.
Concrete AskUserQuestion references below are examples — substitute the local equivalent in other runtimes.
Script Directory
Scripts located in scripts/ subdirectory.
Path Resolution:
1. {baseDir} = this SKILL.md's directory
2. Script path = {baseDir}/scripts/main.ts
3. Resolve ${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bun
Consent Requirement
Before any conversion, check and obtain consent.
Consent Flow
Step 1: Check consent file
# macOS
cat ~/Library/Application\ Support/baoyu-skills/x-to-markdown/consent.json
# Linux
cat ~/.local/share/baoyu-skills/x-to-markdown/consent.jsonStep 2: If accepted: true and disclaimerVersion: "1.0" → print warning and proceed:
Warning: Using reverse-engineered X API. Accepted on: <acceptedAt>Step 3: If missing or version mismatch → display disclaimer:
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?Use AskUserQuestion with options: "Yes, I accept" | "No, I decline"
Step 4: On accept → create consent file:
{
"version": 1,
"accepted": true,
"acceptedAt": "<ISO timestamp>",
"disclaimerVersion": "1.0"
}Step 5: On decline → output "User declined. Exiting." and stop.
Preferences (EXTEND.md)
Check EXTEND.md in priority order — the first one found wins:
| Priority | Path | Scope |
|----------|------|-------|
| 1 | .baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md | Project |
| 2 | ${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md | XDG |
| 3 | $HOME/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md | User home |
| Result | Action |
|--------|--------|
| Found | Read, parse, apply settings |
| Not found | MUST run first-time setup (see below) — do NOT silently create defaults |
EXTEND.md supports: Download media by default, default output directory.
First-Time Setup (BLOCKING)
CRITICAL: When EXTEND.md is not found, you MUST use AskUserQuestion to ask the user for their preferences before creating EXTEND.md. NEVER create EXTEND.md with defaults without asking. This is a BLOCKING operation — do NOT proceed with any conversion until setup is complete.
Use AskUserQuestion with ALL questions in ONE call:
Question 1 — header: "Media", question: "How to handle images and videos in tweets?"
- "Ask each time (Recommended)" — After saving markdown, ask whether to download media
- "Always download" — Always download media to local imgs/ and videos/ directories
- "Never download" — Keep original remote URLs in markdown
Question 2 — header: "Output", question: "Default output directory?"
- "x-to-markdown (Recommended)" — Save to ./x-to-markdown/{username}/{tweet-id}.md
- (User may choose "Other" to type a custom path)
Question 3 — header: "Save", question: "Where to save preferences?"
- "User (Recommended)" — ~/.baoyu-skills/ (all projects)
- "Project" — .baoyu-skills/ (this project only)
After user answers, create EXTEND.md at the chosen location, confirm "Preferences saved to [path]", then continue.
Full reference: [references/config/first-time-setup.md](references/config/first-time-setup.md)
Supported Keys
| Key | Default | Values | Description |
|-----|---------|--------|-------------|
| download_media | ask | ask / 1 / 0 | ask = prompt each time, 1 = always download, 0 = never |
| default_output_dir | empty | path or empty | Default output directory (empty = ./x-to-markdown/) |
Value priority:
1. CLI arguments (--download-media, -o)
2. EXTEND.md
3. Skill defaults
Usage
${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> --jsonOptions
| Option | Description |
|--------|-------------|
| <url> | Tweet or article URL |
| -o <path> | Output path |
| --json | JSON output |
| --download-media | Download image/video assets to local imgs/ and videos/, and rewrite markdown links to local relative paths |
| --login | Refresh cookies only |
Supported URLs
https://x.com/<user>/status/<id>https://twitter.com/<user>/status/<id>https://x.com/i/article/<id>
Output
---
url: "https://x.com/user/status/123"
author: "Name (@user)"
tweetCount: 3
coverImage: "https://pbs.twimg.com/media/example.jpg"
---
Content...File structure: x-to-markdown/{username}/{tweet-id}/{content-slug}.md
When --download-media is enabled:
- Images are saved to
imgs/next to the markdown file - Videos are saved to
videos/next to the markdown file - Markdown media links are rewritten to local relative paths
Media Download Workflow
Based on download_media setting in EXTEND.md:
| Setting | Behavior |
|---------|----------|
| 1 (always) | Run script with --download-media flag |
| 0 (never) | Run script without --download-media flag |
| ask (default) | Follow the ask-each-time flow below |
Ask-Each-Time Flow
1. Run script without --download-media → markdown saved
2. Check saved markdown for remote media URLs (https:// in image/video links)
3. If no remote media found → done, no prompt needed
4. If remote media found → use AskUserQuestion:
- header: "Media", question: "Download N images/videos to local files?"
- "Yes" — Download to local directories
- "No" — Keep remote URLs
5. If user confirms → run script again with --download-media (overwrites markdown with localized links)
Authentication
1. Environment variables (preferred): X_AUTH_TOKEN, X_CT0
2. Chrome login (fallback): Auto-opens Chrome, caches cookies locally
Extension Support
Custom configurations via EXTEND.md. See Preferences section for paths and supported options.
Skill liên quan
- baoyu-format-markdown – Định dạng file văn bản thuần hoặc markdown với frontmatter, tiêu đề, tóm tắt, heading…
- law-to-markdown – Dành cho trợ lý pháp lý khi xử lý nhiều điều luật: khi cần chuyển file quy phạm pháp…
- documentation-and-adrs – Ghi nhận quyết định và tài liệu. Dùng khi cần ghi lại quyết định kiến trúc (ADR) hoặc lý…
- baoyu-markdown-to-html – Chuyển Markdown sang HTML có định dạng với chủ đề tương thích WeChat. Hỗ trợ tô sáng…
- paperjsx – Tạo bản trình chiếu PPTX, tài liệu DOCX, bảng tính XLSX và báo cáo PDF từ đầu vào JSON…
- akf-trust-metadata – Định dạng tệp AI-native. EXIF cho AI: gắn mỗi tệp với điểm tin cậy, nguồn gốc dữ liệu và…
- board-prep – Chuẩn bị họp hội đồng quản trị cho kịch bản đối đầu, không phải kịch bản thân thiện…
- book-to-skill – Chuyển sách, thư mục tài liệu và bộ sưu tập nguồn (PDF, EPUB, DOCX, HTML, Markdown, RST…