IMGLAB Image URL Exporter — ユーザーガイド
ユーザーガイド & ヘルプセンター

X / Twitter の写真を
すべて収集しよう

インストールからバッチダウンロードまでの完全ガイド。寝ている間に何千枚もの高解像度画像を自動収集する拡張機能。

画像数 / セッション
4K
オリジナル解像度
2
パネルタブ数
0
登録不要
1 はじめかた

2分でインストール完了

IMGLAB Image URL ExporterはChrome拡張機能です。一度インストールするだけで、x.comとtwitter.comのすべてのページにパネルが自動表示されます。

01
Chromeウェブストアから追加する

製品ページの「Chromeに追加 — 無料」をクリックします。確認ダイアログが表示されたら「拡張機能を追加」をクリック。IMGLABアイコン 🧪 がChromeツールバーに表示されます。登録・アカウント・支払いは一切不要です。

💡 ツールバーにアイコンが見当たらない場合は、Chromeツールバーのパズルピース 🧩 をクリックし、IMGLABをピン留めしてください。
02
x.comを開く

任意のTwitterプロフィールを開き、メディアタブ(写真・動画グリッド)を表示します。または検索バーで次のようなクエリを実行してください:

from:example_user filter:images

IMGLABパネルがページの右下に自動表示されます。表示されない場合は、ツールバーの 🧪 アイコンをクリックして「ページ上のパネルを切り替え」を押してください。

03
▶ スタートをクリック

IMGLABパネルの▶ スタートをクリックします。拡張機能がツイートのスキャン、Twitter APIの呼び出し、画像URLの収集を開始します。自動スクロールがコンテンツを読み込む間、リアルタイムで統計が更新されます。

💡 収集中は何もする必要はありません。タブを開いたままにしておくだけ。スクロール・API呼び出し・レート制限対応・再試行をすべて自動処理します。
04
urls.txtをエクスポートしてダウンロード

収集完了後、urls.txtがダウンロードフォルダに自動保存されます。IMGLAB Image Downloader(別アプリ・ベータ版・寄付が必要)に読み込むと、すべての画像を整理されたサブフォルダへバッチダウンロードできます。URLリストに対応した他のバッチダウンロードツールも使用可能です。

⚠️ urls.txtがエクスポートされる前にページを離れないでください。未保存データがある場合はIMGLABがナビゲーション警告を表示しますが、安全のため必ず先にエクスポートしてください。
2 パネル解説

パネルの各機能

IMGLABパネルはx.comに直接挿入されます。ドラッグ移動・最小化が可能で、操作の邪魔をしません。各要素の機能を説明します。

IMGLAB Image URL Exporter panel
x.com上のパネル表示
🔍
検索 / コンテキスト行

URLから検出した現在のユーザーまたはハッシュタグを表示します。プロフィールページでは👤 @ユーザー名、検索ページでは🔍 検索を更新が表示されます。★スターボタンで現在のユーザーまたはハッシュタグをお気に入りに追加。検索を更新ボタンで現在のmin-favesフィルターを適用した検索URLを再生成します。

📚
履歴バッジ

このユーザーまたはハッシュタグから過去に収集したことがある場合、緑色のバッジで前回のダウンロード日と総画像数を表示します。ローカルアーカイブがどれだけ最新かを一目で確認できます。

バッジは現在のコンテキストに履歴がある場合のみ表示されます。IMGLABが一度も収集したことのないページでは表示されません。
🔀
トップタブ警告(アンバー)

検索のトップタブ(関連度順・時系列順ではない)を表示中の場合、アンバーの警告バナーが表示されます。このモードでは:履歴境界チェックがスキップされ、セッション後に履歴は保存されず、「過去に遡る」ボタンも非表示になります。関連度順には信頼できる日付の順序がないためです。

履歴トラッキング付きのインクリメンタル収集には最新タブ(f=live)に切り替えてください。
📊
統計グリッド

収集中、4つのカウンターがリアルタイムで更新されます:

📦 確認ツイート数 — DOMで検出した総ツイートID数
⏳ キュー残数 — API処理待ちのツイート数
🖼 取得画像数 — 正常に抽出された写真URL数(青色)
❌ 失敗ツイート数 — 全リトライ後もエラーになったツイート(0より大きい場合は赤)

下部のプログレスバーはキュー処理に応じて増加します:% = 処理済み / 確認総数

🎮
コントロールボタン

▶ スタート — 新しい収集セッションを開始します。セッション完了後は無効化されます(再開するには新しいページに移動するか「過去に遡る」を使用)。

⏸ 一時停止 / ▶ 再開 — API処理と自動スクロールを一時停止します。キューは保持されます。再クリックで中断した箇所から正確に再開します。

⏹ 停止 — 収集を即座に停止します。バックフィルモードまたはトップタブモード以外の場合、現時点での履歴保存を確認するプロンプトが表示されます。

💾
エクスポートボタン

💾 Export urls.txt — 収集した画像リストをタブ区切りテキストファイルとしてダウンロードします。セッション終了時にも自動実行されます。

⚠ エクスポート — 処理できなかったツイートのURLをfailed.txtとしてエクスポートし、手動で再試行できます。

📂 リトライ — 以前エクスポートしたfailed.txtをIMGLABに再読み込みして、特定のツイートを再処理します。

⚙️
設定セクション

自動スクロール — 収集中にページを自動スクロールして新しいツイートを読み込みます。デフォルトで有効。

履歴を無視する — 履歴が存在する場合でも強制的に完全再収集します。アーカイブを完全に更新したい場合に使用。

APIディレイ — API呼び出し間隔(1000〜5000ms)。値を下げると収集が速くなりますが、レート制限のリスクが増加します。デフォルトの1500msが安全なバランス。

最小いいね数 — 検索クエリにmin_faves:Nを追加します。エンゲージメントの低いツイートを除外。「検索を更新」ボタンで現在のURLに適用できます。

3 収集

収集モードと動作

IMGLABは自動的にコンテキストを検出し、動作を調整します。4つの収集モードを理解することで、各セッションを最大限に活用できます。

インクリメンタルモード
前回以降の新着のみ収集
発動条件:このユーザー / ハッシュタグの履歴が存在し、「履歴を無視する」がオフの場合

現在のコンテキストに保存済みのツイートIDが存在する場合、保存済み境界以下のIDに到達するまで通常通り収集し、そこで自動スクロールを停止してキューの処理を完了します。前回のダウンロード以降の新着ツイートのみを収集。繰り返しの訪問で大幅な時間節約になります。

バックフィルモード
過去に遡って収集
発動条件:検索URLにuntil:が含まれる場合

セッション終了後に「過去に遡る」をクリックすると、IMGLABがuntil:日付付きの新しい検索URLを生成します。このページでIMGLABはバックフィルモードを検出し、履歴境界チェックを無効化。最新IDのレコードを上書きせずに古いアーカイブを安全に収集できます。バックフィルセッション終了時、履歴は更新されません

トップタブモード
関連度順の検索結果
発動条件:/searchページでfパラメータなし、またはf=topの場合

Twitterの「トップ」タブは日付順ではなく関連度順に並べられます。IMGLABはアンバーの警告を表示し、履歴境界をスキップし、「過去に遡る」を非表示にし、セッション後に履歴を保存しません。関連度順セッションの最新ツイートIDは意味がなく、インクリメンタル収集を破壊するためです。正しいインクリメンタル収集には「最新」タブに切り替えてください。

リトライモード
失敗ツイートの再処理
発動条件:📂 リトライボタンでfailed.txtファイルが読み込まれた場合

3回のAPIリトライ後も失敗したツイートはfailedIds[]に記録されます。⚠ エクスポートでファイルを書き出し、📂 リトライで再読み込みします。IMGLABはそれらの特定のツイートIDのみを再キューイングし、新しいAPI呼び出しで再処理します。以前に収集した画像は保持され、リトライ結果が追加されます。

1
DOMスキャン — ページからツイートIDを取得

スタート時、IMGLABはすべての表示中の<article>要素を即座にスキャンします。各記事の最初のa[href*="/status/"]リンクからツイートステータスIDを抽出し、メディアが含まれているか(写真リンク、data-testid="tweetPhoto"、センシティブコンテンツ表示)を確認して、条件を満たすIDをペンディングキューに追加します。MutationObserverでスクロールによって読み込まれた新しい記事を監視します。

2
GraphQL API — 写真URLの抽出

キュー内の各ツイートIDは、ご自身のブラウザセッションCookieで認証しながらTwitterのTweetResultByRestId GraphQLエンドポイントに送信されます。レスポンスにはフルのツイートオブジェクトが含まれており、IMGLABはすべてのtype: "photo"メディアを抽出し、?format=jpg&name=orig付きのオリジナル解像度URLを構築し、構造化されたファイル名を生成します。リツイートと引用ツイートは個別に処理され、写真が正しい作者に帰属します。

3
レート制限処理 — 自動一時停止と再開

APIがHTTP 429を返した場合、IMGLABはx-rate-limit-resetヘッダーを読んで正確な再開時刻を特定し、パネルにカウントダウンタイマーを表示して、ウィンドウが開いたら自動的に再開します。現在のツイートはキューの先頭に戻され、最初に再試行されます。レート制限の一時停止中にデータは失われません。

4
セッション終了 — 自動エクスポートと履歴保存

キューが空になり自動スクロールで新しいツイートが見つからなくなると、finishCollection()が実行されます。データ消失防止のためurls.txtが最初に自動ダウンロードされます(早期リターンの前)。次に、収集したファイル名から最新のツイートIDが抽出されchrome.storage.localに保存されます。失敗があった場合、部分的なセッションが境界を破壊しないよう履歴保存の確認プロンプトが表示されます。

4 履歴とお気に入り

履歴トラッキング

IMGLABはユーザーとハッシュタグごとに最新のツイートIDを記憶します。これにより、前回のセッション以降に公開されたコンテンツのみを収集するインクリメンタル収集が可能になります。

ストレージキー内容
imglab_history @usernameまたは#hashtagをキーとするオブジェクト。各エントリ:newest_tweet_idlast_downloaded(日付文字列)、total_images数。
imglab_downloaded ツイート別ダウンロードボタンでダウンロードしたツイートIDの配列。ダウンロード済みツイートに青い✓チェックマークを表示するために使用。
imglab_favourites { type, name, displayName }オブジェクトの配列。type"user"または"hashtag"name@usernameまたは#tag-a #tag-bのようなフルストレージキー。
imglab_min_faves 数値。最後に使用した最小いいね数フィルターの値。パネル読み込み時に自動的に復元されます。
📡
ダウンローダー履歴の同期:ポート7861でIMGLAB Image Downloaderを起動している場合、拡張機能は起動時にGET /imglab/historyでその履歴を取得し、ローカルストレージとマージします。常に最も高いツイートIDが保持されます。ダウンローダーセッションと拡張機能セッションは自動的に同期を維持します。

複数ハッシュタグ検索

複数のハッシュタグを組み合わせた検索に完全対応しています。タグは五十音順にソートされるため、入力した順序に関わらずストレージキーは常に一定です。

ストレージキー: #tag-a #tag-b
スペース区切り、各タグに#付き、五十音順ソート済み。imglab_historyキーとダウンローダーのフォルダ名として使用 — 両者は完全に一致します。
エクスポートファイル名:twitter_urls_hashtag_tag-a_tag-b.txt — アンダースコア連結・#なし。ダウンローダーが自動的にフォルダ名に変換します。

Tampermonkeyからのインポート

以前にTampermonkey版のIMGLABを使用していた場合、履歴をChrome拡張機能に移行できます:

1

パネルの設定セクションで📂 Tampermonkeyからインポート(またはhistory.jsonを読み込む)をクリックします。

2

エクスポートしたJSONファイルを選択します。IMGLABは自動的にフォーマットを検出します:フルエクスポートimglab_historyimglab_favouritesなどのキーを含む)または履歴のみ(トップレベルキーが@usernameエントリ)。両フォーマットとも正確に処理されます。

3

ステータスバーがインポートされた履歴エントリ数、お気に入り数、ダウンロード済みID数を確認します。次の収集セッションはインクリメンタル境界から正確に開始されます。

5 エクスポート形式

urls.txtファイル

すべての収集セッションでタブ区切りのテキストファイルが生成されます。各行が1枚の画像を表し、URLとファイル名がタブ文字で区切られています。

https://pbs.twimg.com/media/ExampleId?format=jpg&name=orig DisplayName(@example_user)_20260101-120000_123456789012345678_photo-1.jpg
URL — オリジナル解像度JPEGへの直接リンク。?format=jpg&name=origサフィックスで最高品質を強制します。
表示名 — Twitterの表示名 + ハンドル。ダウンローダーがサブフォルダ名として使用します。
YYYYMMDD-hhmmss — ツイートのタイムスタンプ(UTC)。ファイルマネージャーで画像を時系列順にソートできます。
ツイートID — 18桁のスノーフレークID。重複排除に使用 — ダウンローダーはこのIDを持つファイルが既に存在する場合にスキップします。
photo-N — 複数写真ツイートの連番(最大4枚)。複数写真ツイートの各画像がそれぞれ独立した行を持ちます。

エクスポートファイル名の形式

コンテキストファイル名
ユーザープロフィール twitter_urls_username_example_user.txt
単一ハッシュタグ twitter_urls_hashtag_tagname.txt
複数ハッシュタグ twitter_urls_hashtag_tag-a_tag-b.txt(五十音順ソート・アンダースコア連結)
不明なコンテキスト twitter_urls_1735000000000.txt(Unixタイムスタンプによるフォールバック)
💡
表示名内のUnicode文字は完全に保持されます。Twitterの表示名に含まれる日本語・中国語・韓国語・絵文字はファイル名とダウンローダーのサブフォルダ名の両方でそのまま保持されます。Windowsで使用できない文字(\ / | < > : * ? ")のみ全角の代替文字に置き換えられます。
6 画像ダウンローダー

IMGLAB Image Downloader

🔬 BETA
IMGLAB Image Downloaderは現在ベータテスト中の別アプリです。アクセスには開発支援のご寄付が必要です。寄付いただいた方にKo-fiまたはBuy Me a Coffeeからダウンロードリンクを直接お送りします。
☕ 寄付してアクセス

ローカルマシン上で動作するPython + Gradio GUIアプリです。エクスポートしたurls.txtファイルを読み込むだけで、並列ダウンロード・重複スキップ・サブフォルダ整理・拡張機能への履歴同期まですべて自動処理します。

📂
マルチファイルキュー

複数のurls.txtファイルを一度に読み込めます。同じユーザーのファイルは1つのバッチにまとめられます。異なるユーザーは順番に処理されます。正常完了後は次のユーザーが自動的に開始します。途中でStopを押すと残りのエントリがクリアされます。

並列ダウンロード

1〜5の同時ダウンロード数をセッションごとに設定できます。デフォルトは3 — 速度とサーバー安定性の安全なバランス。高速接続での大量バッチには5に増やし、エラーが発生する場合は1に下げてください。

📁
スマートなサブフォルダ名

ユーザーファイルの場合、最初の画像のファイル名からサブフォルダ名を抽出し、表示名(@example_user)形式のフォルダ名になります。ハッシュタグ検索は#tag-a #tag-b形式を使用し、拡張機能のストレージキーと完全一致します。

🔁
重複スキップ

ダウンロード前に、ダウンローダーが保存先パスにファイルが既に存在するかを確認します。既存ファイルは静かにスキップ — 再ダウンロードも上書きもしません。同じurls.txtを複数回読み込んでも安全です。

📊
履歴同期API

GET http://127.0.0.1:7861/imglab/historyを公開します。Chrome拡張機能のbackground.jsが起動時にこれを取得し、ローカル履歴とマージして常に最も高いツイートIDを保持します。手動同期は不要です。

🔍
TMD履歴インポート

Twitter Media Downloaderで既に何千枚もの画像をお持ちですか?「TMD履歴インポート」タブが既存のフォルダ構造をスキャンしてIMGLABの履歴ファイルを自動構築 — インクリメンタル収集が正確なポイントから開始されます。

⚠️
Gradioのファイル名サニタイズ:Gradio 6.6はアップロードされたファイル名から()を除去します。重複ダウンロードでtwitter_urls_username_example_user (1).txtという名前になった場合、Gradioはtwitter_urls_username_example_user 1.txtとして処理します。ダウンローダーはこれを自動的に処理 — フォルダ名の抽出前に末尾の数字を除去します。
7 制限事項

既知の制限事項

私たちは完全な透明性を大切にしています。以下の制限事項は実際に確認されたものです。その多くはTwitterのインフラ、APIレート制限、またはプラットフォームの意図的な設計判断によるものであり、私たちが選択したものでも合理的に修正できるものでもありません。何を期待すべきかを正確に理解していただけるよう、それぞれを文書化しました。
Twitter APIのレート制限
想定される動作

TwitterのGraphQLエンドポイントはアカウントごとにレート制限を適用します。大量収集(1000ツイート以上)では通常1〜2回の自動一時停止が発生します。IMGLABはx-rate-limit-resetヘッダーを読み取り、カウントダウンタイマーを表示して自動的に再開します — ユーザー操作は不要です。一時停止中にデータは失われません。

ヒント:タブを開いたままにして実行させてください。IMGLABがすべて処理します。APIディレイを1500ms未満にするとレート制限のリスクが増加します。
🖼️
写真のみ — 動画・GIFは対象外
仕様による

IMGLABはツイートオブジェクトからtype: "photo"のメディアのみを抽出します。動画、アニメーションGIF、その他のメディアタイプは意図的にスキップされます。高品質なオリジナル解像度の静止画像に特化しています。動画のダウンロードは異なる技術的アプローチが必要であり、現在のスコープ外です。

動画サポートは将来のPro機能として検討中です。寄付がその開発を支援します。
🔒
非公開アカウント
仕様による

拡張機能はご自身のブラウザセッションCookieを使用してAPI呼び出しを行います。ログイン中に閲覧権限があるツイートのみ収集できます。フォローしていない非公開アカウント、確認していない年齢制限コンテンツ、削除済みツイートにはアクセスできません — APIが単純に返さないためです。

これは正しく意図された動作です。IMGLABはあなた自身が閲覧できるものにのみアクセスします。
🔧
Twitter APIエンドポイントの変更
主要なメンテナンスリスク

TwitterはプライベートなGraphQLエンドポイントのIDと必要なフィーチャーフラグを定期的に変更します。これが発生するとAPI呼び出しが空の結果や予期しないエラーで失敗し、収集が機能しなくなります。エンドポイントを修正するためにIMGLABのアップデートが必要です。これがあらゆるTwitterスクレイピングツールの主要なメンテナンス負荷です。

Twitterのアップデート後に収集が突然動作しなくなった場合は、更新バージョンをimglab.netで確認するかサポートにご連絡ください。
セッション後にスタートボタンが無効化
仕様による

収集セッションが完了すると(state === 'done')、そのページのスタートボタンは恒久的に無効化されます。これは意図的な設計です — 自動スクロールはページ先頭ではなく現在のスクロール位置から開始するため、同じページの再スキャンは信頼性がありません。

新しい検索ページに移動するか、「過去に遡る」ボタンを使用して新しいページ読み込みで収集を継続してください。
🏷️
アンダースコアを含むハッシュタグ
既知のエッジケース

複数タグのファイル名形式はアンダースコアでタグ名を区切ります(例:hashtag_tag-a_tag-b.txt)。ハッシュタグ自体にアンダースコアが含まれている場合、ダウンローダーがファイル名をフォルダ名に変換する際に誤って2つのタグに分割します。

許容される制限 — 主要ターゲットユーザーである日本語・CJK圏のハッシュタグではアンダースコアが非常に稀です。修正の予定はありません。
8 サポート

サポートと寄付

無料 · オープン · コミュニティ支援

IMGLABを
継続させるために

拡張機能は無料です。広告なし、データ収集なし、サブスクリプションなし。すべてのアップデート — 壊れたAPIエンドポイントの修正、機能追加、エッジケースのテスト — には実際の調査と時間が必要です。あなたのサポートがそのすべてを支えています。

🔧Twitterの頻繁なGraphQLエンドポイント変更への対応
Pro機能の開発:寄付キーシステム・高度なフィルター・動画サポート
🔬IMGLAB Image Downloaderのベータ版→全寄付者への安定版リリース
🔑寄付キーシステム — 一度の寄付で永久オフラインアクセス・サーバー依存なし

このプロジェクトの成長は正直なところコミュニティの支援にかかっています。満足のいく画像を保存できたなら — 一杯のコーヒーが「続けてください」という最良のメッセージです。

トラブルシューティング
x.comにパネルが表示されない
ツールバーの 🧪 アイコンをクリックして「ページ上のパネルを切り替え」を押してください。それでも表示されない場合は、chrome://extensions/でIMGLABを見つけ、↺更新アイコンをクリックしてからx.comをリロードしてください。
収集が開始されるが画像が0件
ページに写真ツイートがないか、IMGLABが動作しないタブ(メディアタブ、f=userなど)にいる可能性があります。検索バーでfrom:ユーザー名 filter:imagesを試し、「最新」タブに切り替えてください。
API呼び出しがすべてエラーで失敗する
TwitterがGraphQLエンドポイントを変更した可能性があります。imglab.netでアップデートを確認してください。またx.comにログインしているか確認 — 拡張機能はセッションCookieを使用します。
履歴バッジに誤った日付が表示される
パネルの設定を開いてインポートボタンでhistory.jsonバックアップを読み込むか、ブラウザDevToolsのService Workerコンソールで次のコマンドでエントリを確認・削除してください:chrome.storage.local.get('imglab_history', d => console.log(d))
「過去に遡る」ボタンが表示されない
「過去に遡る」は「最新」タブでの完了セッション後、かつ少なくとも1つのツイート日付が記録された場合のみ表示されます。トップタブモード、バックフィルモード、または最古ツイートの日付が取得できなかった場合は表示されません。
urls.txtが自動ダウンロードされなかった
Chromeが自動ダウンロードをブロックしていないか確認してください(アドレスバーにプロンプトが表示される場合があります)。パネルの💾 Export urls.txtをクリックして手動でトリガーしてください。ダウンロードフォルダを確認 — 通知なしでダウンロードされている場合があります。