mcpField
T
tuzi-danger-x-to-markdown

tuzi-danger-x-to-markdown

github.com/tuziapiドキュメント39155 回インストール27 週間前に更新
リポジトリ

tuzi-danger-x-to-markdown について

X の投稿、スレッド、記事を Markdown に変換するスキルです。ソーシャルコンテンツを整理・保存する用途向けで、変換前に同意を求め、メディアのダウンロードや出力先を設定できます。

主な機能

  1. 01投稿とスレッドの Markdown 変換
  2. 02X Articles 全文の抽出
  3. 03画像と動画のダウンロード設定
  4. 04JSON 出力とパス指定
  5. 05EXTEND.md での設定保存

活用シーン

  1. 01投稿者情報付きでスレッドを保存
  2. 02X Articles を後から読むために抽出
  3. 03投稿メディアをローカル保存してリンクを変更

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/tuzi-danger-x-to-markdownを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

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

詳細

X から Markdown へ

X のコンテンツを Markdown に変換します。

  • ツイート/スレッド → YAML フロントマター付き Markdown
  • X Articles → 全コンテンツを抽出

スクリプトディレクトリ

スクリプトは scripts/ サブディレクトリにあります。

パスの解決:

  1. SKILL_DIR = この SKILL.md のディレクトリ
  2. スクリプトのパス = ${SKILL_DIR}/scripts/main.ts

同意要件

変換を行う前に必ず、同意を確認して取得してください。

同意のフロー

ステップ 1:同意ファイルを確認します

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

# Linux
cat ~/.local/share/tuzi-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)

Bash を使用して EXTEND.md の有無を確認します(優先順位順):

# Check project-level first
test -f .tuzi-skills/tuzi-danger-x-to-markdown/EXTEND.md && echo "project"

# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.tuzi-skills/tuzi-danger-x-to-markdown/EXTEND.md" && echo "user"

┌────────────────────────────────────────────────────────────┬───────────────────┐ │ パス │ 場所 │ ├────────────────────────────────────────────────────────────┼───────────────────┤ │ .tuzi-skills/tuzi-danger-x-to-markdown/EXTEND.md │ プロジェクトディレクトリ │ ├────────────────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.tuzi-skills/tuzi-danger-x-to-markdown/EXTEND.md │ ユーザーホーム │ └────────────────────────────────────────────────────────────┴───────────────────┘

┌───────────┬───────────────────────────────────────────────────────────────────────────┐ │ 結果 │ 操作 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 見つかった │ 読み込み、解析し、設定を適用します │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 見つからない │ 必ず 初回セットアップを実行します(下記参照)— デフォルトを黙って作成しないでください │ └───────────┴───────────────────────────────────────────────────────────────────────────┘

EXTEND.md で設定可能な項目:メディアをデフォルトでダウンロード | デフォルトの出力ディレクトリ

初回セットアップ(必須)

重要:EXTEND.md が見つからない場合、EXTEND.md を作成する前に、必ず AskUserQuestion を使用してユーザーの設定を確認してください。確認せずにデフォルト設定で EXTEND.md を作成することは絶対にしないでください。これは必須の操作です。セットアップが完了するまで、変換を進めないでください。

1 回の呼び出しですべての質問を含めて AskUserQuestion を使用してください。

質問 1 — ヘッダー:「メディア」、質問:「ツイート内の画像や動画をどのように扱いますか?」

  • 「毎回確認(推奨)」— Markdown の保存後に、メディアをダウンロードするか確認します
  • 「常にダウンロード」— メディアをローカルの imgs/ および videos/ ディレクトリに常にダウンロードします
  • 「ダウンロードしない」— Markdown 内の元のリモート URL をそのまま使用します

質問 2 — ヘッダー:「出力」、質問:「デフォルトの出力ディレクトリはどこですか?」

  • 「x-to-markdown(推奨)」— ./x-to-markdown/{username}/{tweet-id}.md に保存します
  • (ユーザーは「その他」を選択して、任意のパスを入力できます)

質問 3 — ヘッダー:「保存」、質問:「設定をどこに保存しますか?」

  • 「ユーザー(推奨)」— ~/.tuzi-skills/(すべてのプロジェクトで使用)
  • 「プロジェクト」— .tuzi-skills/(このプロジェクトのみ)

ユーザーの回答後、選択された場所に EXTEND.md を作成し、「設定を [path] に保存しました」と確認してから続行します。

詳細は references/config/first-time-setup.md を参照してください。

サポートされるキー
キーデフォルト値説明
download_mediaaskask / 1 / 0ask = 毎回確認、1 = 常にダウンロード、0 = ダウンロードしない
default_output_dir空パスまたは空デフォルトの出力ディレクトリ(空 = ./x-to-markdown/)

値の優先順位:

  1. CLI 引数(--download-media、-o)
  2. EXTEND.md
  3. スキルのデフォルト

使用方法

npx -y bun ${SKILL_DIR}/scripts/main.ts <url>
npx -y bun ${SKILL_DIR}/scripts/main.ts <url> -o output.md
npx -y bun ${SKILL_DIR}/scripts/main.ts <url> --download-media
npx -y bun ${SKILL_DIR}/scripts/main.ts <url> --json

オプション

オプション説明
<url>ツイートまたは記事の URL
-o <path>出力先
--jsonJSON 出力
--download-media画像/動画のアセットをローカルの imgs/ と videos/ にダウンロードし、Markdown のリンクをローカルの相対パスに書き換えます
--loginCookie のみを更新します

対応 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 を使用します:
    • ヘッダー:「Media」、質問:「画像/動画 N 件をローカルファイルにダウンロードしますか?」
    • 「Yes」— ローカルディレクトリにダウンロードします
    • 「No」— リモート URL のままにします
  5. ユーザーが確認した場合 → --download-media を付けてスクリプトを再度実行します(Markdown をローカルパスに書き換えて上書きします)

認証

  1. 環境変数(推奨):X_AUTH_TOKEN、X_CT0
  2. Chrome ログイン(フォールバック):Chrome を自動で開き、Cookie をローカルにキャッシュします

拡張機能のサポート

EXTEND.md でカスタム設定を利用できます。パスと対応オプションについては、設定セクションを参照してください。

コメント