mcpField
L
ljg-x-download

ljg-x-download

github.com/lijigangその他7.6k474 回インストール3 日前に更新
リポジトリ

ljg-x-download について

ljg-x-downloadは、X(Twitter)のリンクから画像や動画を ~/Downloads に保存するスキルです。動画にはyt-dlpを使い、動画を取得できない投稿では画像URLを抽出します。

主な機能

  1. 01XとTwitterのリンクを解析
  2. 02yt-dlpで動画をダウンロード
  3. 03元サイズの画像を抽出して保存
  4. 04t.coの短縮リンクを解決
  5. 05ファイル名・サイズ・パスを報告

活用シーン

  1. 01Xの投稿から動画を保存
  2. 02投稿内の元サイズ画像をダウンロード
  3. 03メディアなしやログイン制限に対処

インストール

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

$npx skills add https://github.com/lijigang/ljg-skills --skill ljg-x-download

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

詳細

ljg-x-download

X(Twitter)のリンクから画像または動画を ~/Downloads にダウンロードします。

依存関係

  • yt-dlp(インストール済み)

実行手順

1. 入力を解析する

ユーザー入力から X/Twitter の URL を抽出します。次の形式に対応しています。

  • https://x.com/user/status/123456
  • https://twitter.com/user/status/123456
  • https://mobile.twitter.com/user/status/123456
  • クエリパラメーター付きの URL(?s=20 などの追跡パラメーターは yt-dlp が自動的に処理します)

短縮 URL(t.co)は先に解決します:curl -Ls -o /dev/null -w '%{url_effective}' "SHORT_URL"

ユーザーが URL を指定していない場合は、AskUserQuestion を使用して URL の入力を求めます。

2. 直接ダウンロードを試みる(動画を優先)

事前に確認せず、yt-dlp で直接ダウンロードします。

yt-dlp -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"

成功した場合(動画を含むツイート)は完了です。手順 4 に進み、結果を報告します。

3. 動画のダウンロードに失敗した場合、画像を抽出する

画像のみのツイートでは、yt-dlp がエラーを返すことがあります。その場合は --dump-json を使って画像 URL を抽出します。

yt-dlp --dump-json "URL" 2>&1

結果の判定:

  • JSON に thumbnails 配列がある → 画像 URL を抽出します
  • JSON が空、または no video エラーが発生 → ツイートにメディアがありません。「このツイートにはダウンロード可能な画像または動画が含まれていません」とユーザーに伝えます
  • エラーに login / authentication が含まれる → ログインが必要です(「トラブルシューティング」を参照)
  • その他のエラー → 具体的なエラー情報を報告します

画像のダウンロード:

JSON の thumbnails 配列からすべての画像 URL を抽出し、name=small または name=medium を name=orig に置き換えて元の画像を取得してから、1 枚ずつダウンロードします。

curl -L -o ~/Downloads/tweet_ID_1.jpg "https://pbs.twimg.com/media/xxx?format=jpg&name=orig"
curl -L -o ~/Downloads/tweet_ID_2.jpg "https://pbs.twimg.com/media/yyy?format=jpg&name=orig"

ファイル拡張子は URL の format パラメーター(jpg/png/webp)に従います。

4. 結果を報告する

ダウンロード完了後、ls -lh を使ってダウンロードしたファイルの名前、サイズ、パスを一覧表示します。

トラブルシューティング

ログインが必要な場合

yt-dlp のエラーに login / Sign in / age-restricted が含まれる場合は、--cookies-from-browser chrome を追加します。

yt-dlp --cookies-from-browser chrome -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"
ツイートにメディアがない場合

テキストのみのツイートにはダウンロード可能なメディアがありません。その旨をユーザーに伝えてください。

コメント