tweet-replicate について
Tweet Replicateは、公開されたX/Twitterの投稿を再レンダリング可能なローカルビルドに変換し、MP4マスターとGIFプレビューを出力するスキルです。投稿データとメディアをスナップショットに固定し、Xのライブ画面を録画するのではなく、ローカルでレイアウトを再構築します。
主な機能
- 01公開投稿をsnapshot.jsonに固定
- 02アバターと主要メディアをローカルに保存
- 03ローカルのHTMLとCSSで投稿レイアウトを再構築
- 04Playwrightで複製画面を録画
- 05MP4マスターとGIFプレビューを出力
活用シーン
- 01公開投稿を動画素材に変換
- 02保存済みスナップショットから投稿を再描画
- 03再生可能な動画で投稿レイアウトを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jpcaparas/ skills --skill tweet-replicateインストール後、Claude Code で/tweet-replicateを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdskill-card.prompt.mdagents/openai.yamlassets/.gitkeepevals/evals.jsonreferences/gotchas.mdlayout.mdworkflow.mdscripts/fetch_tweet_snapshot.pyprobe_tweet_replica.pyrecord_tweet_replica.pyrender_tweet_replica.pytest_skill.pyvalidate.pytemplates/tweet_replica.html詳細
Tweet Replicate
公開されている X/Twitter の投稿を、再レンダリング可能なローカルビルドに固定します。常に高品質な tweet-replica.mp4 マスターと、24 MB 未満の GIF プレビュー tweet-replica.gif を同時に出力します。
2026年4月9日時点の公開ステータスで検証済みです。
まず限界を明確にする
ブラウザー表示と同等のクローンや、永久に安定した X のクローンだと約束してはいけません。X はレイアウトを変更することがあり、指標はずれ、メディア URL は期限切れになることがあります。また、ローカルレンダラーは、X の非公開レンダラーを再現するのではなく、意図的に決定論的に動作します。
このスキルで得意なこと:
- 公開ステータスを取得し、固定された
snapshot.jsonに保存する - アバターとメインのメディアを、利用可能な最高画質でローカルにダウンロードする
- 決定論的なローカル HTML/CSS でツイートの UI を再構築する
- ツイートの周囲に余分な余白付きのステージを作らず、Playwright でレプリカのビューポートを録画する
- 高品質な MP4 マスターと GIF プレビューを同じディレクトリに書き出す
判断フロー
- ユーザーが公開 X/Twitter 投稿 1 件をローカル動画アセットとして再構築したい場合は、
scripts/render_tweet_replica.pyを実行します。 - ツイート本文、指標、またはメディア URL だけが必要な場合は、このスキルではなく、テキスト/メディア抽出のワークフローを使用します。
- 元のメディアファイルだけが必要な場合は、このスキルではなく、メディアダウンローダーを使用します。
- X 自体をブラウザーでライブキャプチャしたい場合は、処理を中止し、このスキルは実際の X UI の録画ではなく、決定論的なローカルレプリカ用であることを説明します。
- スレッド全体、複数階層の引用、カルーセル、または認証済み状態が必要な場合は、このバージョンでサポートしているのは公開ステータス 1 件と、入れ子になった引用投稿カード 1 件であることを説明します。
デフォルトの保存先ルール
ユーザーが保存先を指定しない場合は、まず ./pieces/ を提案します。同意した場合、または保存先にこだわりがない場合は、--save-root ./pieces を付けて実行するか、スクリプトのデフォルトに従って現在の作業ディレクトリの pieces/ フォルダーに保存します。
生成されるビルドの構成は変わりません:
<save-root>/tweet-replicate-status-<id>-<timestamp>/
assets/
snapshot.json
tweet-replica.html
capture.webm
tweet-replica.mp4
tweet-replica.gif
クイックリファレンス
| タスク | コマンド | 理由 |
|---|---|---|
| ステータス URL から、指定したデフォルトの保存先にレンダリングする | python3 scripts/render_tweet_replica.py 'https://x.com/.../status/...' --save-root ./pieces | ./pieces/ の下に、高品質な MP4 マスターを含む再レンダリング可能なビルドフォルダーを作成します |
| 同じ固定済みの投稿を後から再レンダリングする | python3 scripts/render_tweet_replica.py ./tweet-build/snapshot.json | スナップショットと同じ場所に保存し、件数のずれを防ぎます |
| すべてを名前付きの 1 つのビルドフォルダーにまとめる | python3 scripts/render_tweet_replica.py '<url>' --workdir ./tweet-build | スナップショット、ローカルの高品質アセット、HTML、WebM、MP4、GIF をまとめて保存します |
| 抽出したスナップショットだけを確認する | python3 scripts/fetch_tweet_snapshot.py '<url>' --output ./tweet-build/snapshot.json --asset-dir ./tweet-build/assets | レイアウトを調整する前の確認に便利です |
| 用意した HTML レプリカだけを録画する | python3 scripts/record_tweet_replica.py ./tweet-build/tweet-replica.html ./tweet-build/capture.webm | 再取得せずに CSS を調整する場合に便利です |
| 公開ツイート URL に対して実際のパイプライン検査を実行する | python3 scripts/probe_tweet_replica.py 'https://x.com/.../status/...' --save-root ./tmp-tests --cleanup | MP4、GIF、再生時間、GIF のサイズ上限、出力フレームのジオメトリを検証します |
対象範囲
対象となる依頼
- 「このツイートを再現して」
- 「この X の投稿を再現して」
- 「このツイートを mp4 と gif にして」
- 「このツイートを動画として固定して」
- 「このステータスを X のように見せて」
- 「再生できるツイートのスクリーンショット」
- 「キャプション、件数、再生動作を保持して、再レンダリング可能なビルドを作成して」
対象外の依頼
- ツイートを読むだけ、または抽出するだけ
- 元のメディアのダウンロードのみ
- ライブ埋め込みのデバッグ
- フィード、検索ページ、DM、Spaces
- 複数投稿スレッドのシネマティックな表現
- 出力がブラウザー表示と完全に同一の X クローンであるという主張
作業ルール
ライブのツイートページではなく、スナップショットを正とします。一度だけ取得してデータを固定し、ダウンロードしたローカルメディアは最高画質のまま保持してから、snapshot.json を使ってローカルで反復作業を行います。
読み方ガイド
| 必要な情報 | 参照先 |
|---|---|
| エンドツーエンドのワークフロー、保存先ルートの動作、成果物の構成 | references/workflow.md |
| レイアウトのヒューリスティック、サイズ設定のルール、調整項目 | references/layout.md |
| 失敗しやすいケース、GIF のサイズ、ずれ、未対応のケース | references/gotchas.md |
注意事項
- 数値はすぐにずれます。特定の時点の「いいね」、リポスト、閲覧数が重要な場合は、
snapshot.jsonから再レンダリングしてください。 - GIF はプレビュー用の素材であり、2つ目のマスタービデオではありません。レンダラーは高品質なマスターとして MP4 を維持し、24 MB 未満に収めるために必要に応じて GIF の解像度、フレームレート、色深度のみを下げます。
- このレンダラーはツイートの表示要素をローカルで再構築します。X 独自のレンダラーとのバイト単位またはピクセル単位の一致を保証するものではありません。
- X の公開メディア URL は期限切れになることがあります。後で出力を再現する必要がある場合は、ダウンロードしたローカルメディアを作業ディレクトリ内に保持してください。
- Playwright のビューポート録画は映像のみです。最終的な MP4 は録画した映像マスターを高品質で保持し、ローカルの動画ファイルに音声ストリームがある場合は、元のメディア音声を多重化して戻します。GIF に音声は含まれません。
- 引用された投稿は、引用動画の再生を含めて1階層まで対応していますが、それより深い引用の連鎖や、スレッド全体の再構築には対応していません。
- レンダリングされた WebM と MP4 は、ツイートのキャンバス幅および実測したツイートの高さと一致する必要があります。投稿が左上に張り付いたように表示され、余分なグレーの領域や空白がある場合は、ツイートの CSS を再調整する前にキャプチャのジオメトリを修正してください。