ljg-x-download について
ljg-x-downloadは、X(Twitter)のリンクから画像や動画を ~/Downloads に保存するスキルです。動画にはyt-dlpを使い、動画を取得できない投稿では画像URLを抽出します。
主な機能
- 01XとTwitterのリンクを解析
- 02yt-dlpで動画をダウンロード
- 03元サイズの画像を抽出して保存
- 04t.coの短縮リンクを解決
- 05ファイル名・サイズ・パスを報告
活用シーン
- 01Xの投稿から動画を保存
- 02投稿内の元サイズ画像をダウンロード
- 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/123456https://twitter.com/user/status/123456https://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"
ツイートにメディアがない場合
テキストのみのツイートにはダウンロード可能なメディアがありません。その旨をユーザーに伝えてください。