NanoSkill
スキルを投稿

エックス (ツイッター) への自動投稿エージェントスキル

作成者JimLiu20KGitHub スターGitHub

実際のChromeブラウザを使用して、テキスト、画像、動画、長文記事のエックス (ツイッター)への投稿を自動化します。Codex Chromeプラグイン、コンピューター使用、CDPスクリプトなど、さまざまなモードに対応しています。コンテンツを効率的に共有し始めましょう。

ツイッターセキュリティスキャン済み
結果プレビュー

完全デモ

公開準備が整った、関連する画像とハッシュタグ付きのAI生産性ツールに関するツイッター投稿をご覧ください。

はじめる

最初のタスクを実行

  1. a simple demonstration of the first step in using Post to X
    01

    ステップ1:インストール

    エージェントにスキルを追加してください。

  2. a simple demonstration of the second step in using Post to X
    02

    ステップ2:投稿アイデアを共有

    ツイート、画像、動画、記事のアイデアを提供し、エックスでの公開準備をスキルに依頼してください。

  3. a simple demonstration of the first step in using Post to X
    03

    ステップ3:公開前にレビュー

    生成された投稿をレビューし、公開前に確認してください。

インストールコマンド

$ npx skills add https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-post-to-x

概要

エックス (ツイッター) への投稿スキルは、エックス上でのコンテンツ公開を自動化する堅牢なソリューションを提供し、ユーザーがテキスト、画像、動画、長文記事を効率的に共有できるようにします。このツールは、個人ユーザーからコンテンツクリエイター、マーケターまで、ソーシャルメディアでのプレゼンスを合理化したいすべての人のために設計されています。実際のChromeブラウザインスタンスと統合し、エックスのプラットフォームとの互換性を確保しながら、柔軟な制御オプションを提供します。

このスキルは、Codex Chromeプラグイン、Chromeコンピューター使用、CDPスクリプトモードなど、複数のブラウザ制御モードをサポートしている点が際立っています。この適応性により、さまざまなユーザー環境や好みに応じて効果的に機能します。重要な機能として、Markdownファイルから直接詳細なエックス記事を公開する能力があり、カバー画像のアップロードやコンテンツ画像の埋め込みなど複雑なタスクを処理できます。これは、詳細なコンテンツを共有する上で非常に貴重です。

ユーザーは、日々のソーシャルメディア更新の自動化、包括的なブログ投稿やレポートのエックス記事としての公開、他のツイートへの素早い引用やコメントなど、さまざまなシナリオでこのスキルを活用できます。環境が正しく設定されていることを確認するための便利な事前チェックと、トラブルシューティングの明確なガイダンスが含まれており、自動化に不慣れなユーザーでも利用しやすくなっています。

主な機能

強力な理由

  • マルチコンテンツ投稿

    テキスト、画像、動画をX(Twitter)にシームレスに投稿し、さまざまなコンテンツ共有ニーズに応じて異なるメディアタイプを処理します。

  • 長文記事の公開

    MarkdownファイルからX記事を公開します。カバー画像や埋め込みコンテンツ画像を含み、詳細な投稿に最適です。

  • 柔軟なブラウザ制御モード

    Codex Chromeプラグイン、Chrome Computer Use、CDPスクリプトモードをサポートし、さまざまな実行環境やユーザーの好みに対応します。

  • 引用ツイート機能

    既存のツイートに簡単にコメントを付けて引用でき、プラットフォーム上でのエンゲージメントや議論を促進します。

  • 事前環境チェック

    Chrome、Bun、アクセシビリティ権限などの必要な前提条件をチェックするスクリプトが含まれており、問題が発生した場合のガイダンスを提供します。

ユースケース

使うべきタイミング

  • ソーシャルメディアの更新を自動化

    コンテンツクリエイターやマーケターは、手動介入なしでX上でアクティブな存在感を維持するために、テキスト、画像、動画を含む定期的な投稿をスケジュールして自動化できます。

  • 詳細なX記事を公開

    ジャーナリスト、ブロガー、アナリストは、Markdownから直接、リッチメディアを含む長文記事を公開して、X上のオーディエンスと詳細なコンテンツを共有できます。

  • 効率的に引用してコメント

    ユーザーは迅速にツイートを引用してコメントを追加でき、トレンドトピックや他のユーザーのコンテンツにエンゲージするプロセスを効率化します。

SKILL.md

X(Twitter)への投稿

実際のChromeブラウザ経由で、テキスト、画像、動画、長文記事をXに投稿します。

Codexでは、以下のブラウザパスを混同しないでください:

  • Codex Chromeプラグイン / @chrome / Chrome拡張機能: バンドルされたchrome:ChromeスキルとそのNode REPLブラウザクライアントを使用します。ユーザーが「Codex Chromeプラグイン」「Codex 自带的 Chrome 插件」「@chrome」などと言った場合に必須です。
  • Chrome Computer Use: 可視のGoogle Chrome UIに対してmcp__computer_use__.*を、ユーザーがComputer Useを要求した場合、またはChromeプラグインの指定がなくComputer Useが利用可能な場合にのみ使用します。
  • CDPスクリプトモード: 選択したモードが利用できない場合、またはユーザーがCDP/スクリプトモードを明示的に要求した場合のフォールバックとしてのみ使用します。

スクリプトディレクトリ

重要: すべてのスクリプトは、このスキルのscripts/サブディレクトリにあります。

エージェント実行手順:

  1. このSKILL.mdファイルのディレクトリパスを{baseDir}として決定します。
  2. スクリプトパス = {baseDir}/scripts/<script-name>.ts
  3. このドキュメント内の{baseDir}をすべて実際のパスに置き換えます。
  4. ${BUN_X}ランタイムを解決:bunがインストールされていれば → bunnpxが利用可能なら → npx -y bun、そうでなければbunのインストールを提案します。

スクリプト参照:

スクリプト目的
scripts/x-browser.ts通常の投稿(テキスト+画像)、CDPフォールバック
scripts/x-video.ts動画投稿(テキスト+動画)、CDPフォールバック
scripts/x-quote.ts引用ツイート(コメント付き)、CDPフォールバック
scripts/x-article.ts長文記事の公開(Markdown)、CDPフォールバック
scripts/md-to-html.tsMarkdown → HTML変換
scripts/copy-to-clipboard.tsコンテンツをクリップボードにコピー
scripts/paste-from-clipboard.ts実際の貼り付けキーストロークを送信
scripts/check-paste-permissions.ts環境と権限を検証

実行モードの選択(必須)

Xと対話する前に、必ず1つのモードを選択してください:

  1. ユーザーがCodex Chromeプラグイン、@chrome、Chrome拡張機能、または「Codex 自带的 Chrome 插件」を明示的に要求した場合、Codex Chromeプラグインモードを使用します。Computer Useを最初に呼び出さないでください。
  2. ユーザーがChrome Computer Useを明示的に要求した場合、Chrome Computer Useモードを使用します。ユーザーに伝え承認を得ずに、CDP、Playwright、アプリ内ブラウザ、またはChromeプラグインにフォールバックしないでください。
  3. ユーザーがCDP/スクリプトモードを明示的に要求した場合、CDPスクリプトモードを使用します。
  4. それ以外の場合は、Chrome Computer Useモードを優先します。Markdownの**X記事(ローカルコンテンツ画像を含む)**では、テスト済みのXエディターフローを使用します:ツールバーから各本文画像をそのプレースホルダーに挿入し(InsertMedia → ダイアログのアイコンボタンAdd photos or video)、その後プレースホルダーテキストを削除します。CDPスクリプトモードは、選択したブラウザ制御モードが利用できない場合、またはUIのアップロード/選択フローが不安定な場合にのみ使用します。

X公開ワークフローでは、アプリ内ブラウザを使用しないでください。

Codex Chromeプラグインモード

ユーザーがCodex Chromeプラグイン、@chrome、またはChrome拡張機能のパスを要求した場合は常にこのモードを使用します。これは、Computer UseやCDPではなく、バンドルされたChromeプラグインを介してユーザーの実際のChromeプロファイルとXログインを使用します。

セットアップ

  1. ブラウザ作業の前にchrome:Chromeスキルを読み込みます。
  2. Node REPL jsツールがまだ表示されていない場合は、tool_searchnode_repl jsを検索します。
  3. Chromeスキルの指定どおりにChromeブラウザクライアントを初期化し、browser.user.openTabs()のような軽量な呼び出しを実行して拡張機能の接続を確認します。
  4. 最初の軽量呼び出しが失敗した場合は、2秒待ってから再試行します。それでも失敗する場合は、Chromeスキルの拡張機能チェックと回復手順に従います。チェックに合格しても通信がまだ失敗する場合は、新しいChromeウィンドウを開く前にユーザーに尋ねてください。サイレントにComputer UseやCDPに切り替えないでください。

一般ルール

  • Chromeプラグインのbrowser.tabs.*tab.playwright.*tab.cua.*、およびファイルチューザーAPIをXのUIアクションに使用します。
  • シェルコマンドは、Markdownの前処理とリッチHTMLのクリップボード準備に使用できます。X記事の本文画像では、画像のクリップボード貼り付けに依存せず、エディターのInsertMediaアップロードフローを使用してください。
  • ファイルアップロードがNot allowedで失敗した場合は、ユーザーに次のように伝えます:ファイルのアップロードを有効にするには、Chromeでchrome://extensionsに移動し、Codex拡張機能の下の「詳細」をクリックして、「ファイルのURLへのアクセスを許可する」を有効にしてください。詳細はhttps://developers.openai.com/codex/app/chrome-extension#upload-files を参照してください。
  • Chromeプラグインがnative pipe is closedと報告した場合は、2秒後にもう一度軽量ブラウザ呼び出しを再試行し、次にChromeスキルのヘルスチェックを実行します。Chromeが実行中で、拡張機能が有効になっており、ネイティブホストマニフェストが正しい場合は、新しいChromeウィンドウを開いて再試行する許可を求めます。壊れたパイプを通してブラウザアクションを送り続けないでください。
  • 現在の会話でユーザーからの明示的な最終確認なしに、PublishPost、または外部から見える送信アクションをクリックしないでください。

X記事

  1. Markdownを変換し、イメージマップを保持します:
    ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
    
  2. JSON出力からtitlecoverImagecontentImagesplaceholderlocalPath)を読み取ります。
  3. https://x.com/compose/articlesで記事の下書きを開くか作成します。
  4. Chromeプラグインのファイルチューザーフローでカバー画像をアップロードします。アップロードが拡張機能の権限によってブロックされる場合は、停止して上記の正確な権限修正方法を報告します。
  5. タイトルを入力し、リッチHTMLをコピーします:
    ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html
    
  6. Chromeプラグインを介して実際の貼り付けキーストロークで記事本文に貼り付けます。macOSではMeta+Vを使用します。
  7. エディターテキストに記事本文とXIMGPH_プレースホルダーが含まれていることを確認します。シェルのクリップボード書き込み後に、システムクリップボードの証明としてtab.clipboard.readText()に依存しないでください。macOSでは必要に応じてpbpasteで確認します。
  8. contentImages項目をプレースホルダー順に処理します:
    • 可視のプレースホルダーテキスト(XIMGPH_N)を見つけてクリックし、そこにキャレットを配置します。
    • ツールバーメニューInsertMediaを開きます。
    • モーダル内で、aria-label="Add photos or video"のアイコンボタンをクリックします。テキスト/ドロップゾーンや非表示のファイル入力をクリックしないでください。
    • ファイルチューザーを使用して、その画像のlocalPathをアップロードします。
    • 画像が表示された後、その上にXIMGPH_Nが残っている場合は、そのプレースホルダーを正確に選択して最初にDeleteを押します。Deleteが失敗し、選択されたテキストが正確にプレースホルダーであることが確認された場合にのみBackspaceを使用します。
    • そのXIMGPH_Nのプレースホルダー数が0であることを確認します。
  9. プレビューを開き、タイトル、カバー、本文、リンク、画像を確認します。
  10. Publishをクリックする前に明示的な確認を求めます。

設定(EXTEND.md)

優先順にEXTEND.mdを確認します — 最初に見つかったものが優先されます:

優先順位パススコープ
1.baoyu-skills/baoyu-post-to-x/EXTEND.mdプロジェクト
2${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-post-to-x/EXTEND.mdXDG
3$HOME/.baoyu-skills/baoyu-post-to-x/EXTEND.mdユーザーホーム

見つからない場合は、デフォルトを使用します。

EXTEND.mdがサポートするもの: デフォルトのChromeプロファイル

前提条件

  • Google ChromeまたはChromium
  • bunランタイム
  • 初回実行時:手動でXにログイン(セッションが保存されます)

プリフライトチェック(オプション)

初回使用前に、環境チェックを実行することをお勧めします。ユーザーが希望する場合はスキップできます。

${BUN_X} {baseDir}/scripts/check-paste-permissions.ts

チェック項目:Chrome、プロファイルの分離、Bun、アクセシビリティ、クリップボード、貼り付けキーストローク、Chromeの競合。

いずれかのチェックが失敗した場合、項目ごとに修正ガイダンスを提供します:

チェック修正
ChromeChromeをインストールするか、環境変数X_BROWSER_CHROME_PATHを設定します
プロファイルディレクトリbaoyu-skills/chrome-profileの共有プロファイル(CLAUDE.mdのChromeプロファイルセクションを参照)
Bunランタイムbrew install oven-sh/bun/bun(macOS)またはnpm install -g bun
アクセシビリティ(macOS)システム設定 → プライバシーとセキュリティ → アクセシビリティ → ターミナルアプリを有効にする
クリップボードコピーSwift/AppKitが利用可能であることを確認(macOS Xcode CLIツール:xcode-select --install
貼り付けキーストローク(macOS)上記のアクセシビリティ修正と同じ
貼り付けキーストローク(Linux)xdotool(X11)またはydotool(Wayland)をインストールします

参照

  • 通常の投稿:手動ワークフロー、トラブルシューティング、技術的な詳細についてはreferences/regular-posts.mdを参照してください
  • X記事:長文記事の公開ガイドについてはreferences/articles.mdを参照してください

Chrome Computer Useモード

ユーザーがChrome Computer Useを明示的に要求した場合、またはChromeプラグインの指定がなくCodexがComputer UseでGoogle Chromeを制御できる場合にこのモードを使用します。既存のChromeウィンドウ、Cookie、ログイン、拡張機能、Xセッションを使用します。

一般ルール:

  • Chromeを制御するアシスタントの各ターンで、Google Chromeに対してget_app_stateを呼び出して開始します。
  • 可能な場合は要素インデックスアクションを優先します。座標はエディターテキストの選択やドラッグ選択にのみ使用します。
  • ユーザーがモード変更を承認しない限り、このモードでX UIアクションにアプリ内ブラウザ、Chromeプラグイン、Playwright、CDPを使用しないでください。
  • 現在の会話でユーザーからの明示的な最終確認なしに、PublishPost、または外部から見える送信アクションをクリックしないでください。

通常の投稿:

  1. Chromeでhttps://x.com/compose/postを開くか移動します。
  2. Computer Useを使用して、投稿テキストをコンポーザーに入力します。
  3. 各画像に対して次を実行します:
    ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /absolute/path/to/image.png
    
  4. Computer Useで貼り付け(macOSではsuper+v、Windows/Linuxではcontrol+v)、Xがメディアのアップロードを完了するまで待ちます。
  5. Postをクリックする前に確認を求めます。

動画投稿:

  1. Chromeでhttps://x.com/compose/postを開くか移動します。
  2. 投稿テキストをコンポーザーに入力します。
  3. 可視のメディアアップロード/ファイルピッカーUIを使用して動画を添付します。
  4. アップロードと処理が完了するのを待ちます。
  5. Postをクリックする前に確認を求めます。

引用ツイート:

  1. ChromeでツイートURLを開きます。
  2. 可視の引用/リポストUIを使用して引用を選択します。
  3. コメントを入力します。
  4. Postをクリックする前に確認を求めます。

X記事:

  1. Markdownを変換し、イメージマップを保持します:
    ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
    
  2. JSON出力からtitlecoverImagecontentImagesplaceholderlocalPath)を読み取ります。
  3. Chromeでhttps://x.com/compose/articlesを開き、下書きを作成または開き、カバーがある場合はアップロードし、タイトルを入力します。
  4. リッチHTMLをクリップボードにコピーします:
    ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html
    
  5. Computer Useで記事本文に貼り付けます。
  6. contentImagesエントリをプレースホルダー順に処理します:
    • 正確な可視プレースホルダーテキスト(例:XIMGPH_3)を見つけてクリックし、挿入ポイントを設定します。
    • ツールバーのInsertドロップダウンを開き、Mediaを選択し、モーダルのAdd photos or videoというラベルのアイコンボタンをクリックします。
    • ネイティブファイルピッカーを使用して画像のlocalPathを選択します。
    • 画像ブロックが表示され、アップロードアクティビティが終了するまで待ちます。
    • 挿入された画像の上にプレースホルダーが残っている場合は、そのプレースホルダーテキストを正確に再選択し、まずDeleteを押します。Deleteが失敗し、選択されたテキストが正確にプレースホルダーであることが確認された場合にのみBackspaceを使用します。
  7. XIMGPH_プレースホルダーが残っておらず、予想される画像が表示されることを確認します。
  8. プレビューを開き、タイトル、カバー、本文、リンク、画像を確認します。
  9. Publishをクリックする前に明示的な確認を求めます。

Computer Useの選択、ツールバーのアップロード、またはファイルピッカーの制御が信頼できなくなった場合は、サイレントにChromeプラグインやCDPに切り替えるのではなく、停止してブロッカーを報告します。


CDPスクリプトモード(フォールバック)

以下のスクリプトセクションは、選択したブラウザ制御モードが利用できない、信頼できない、または明示的に要求されていない場合にのみ使用します。これらのスクリプトは、CDP経由で実際のChromeインスタンスを起動または再利用し、レビューのためにブラウザを開いたままにします。

ユーザーがCodex ChromeプラグインまたはChrome Computer Useを明示的に要求している場合、ブロッカーを説明してユーザーがフォールバックを承認しない限り、CDPスクリプトモードを使用しないでください。


投稿タイプの選択

ユーザーが投稿タイプを明示的に指定しない限り:

  • プレーンテキスト + 10,000文字以内 → 通常の投稿(プレミアム会員は最大10,000文字、非プレミアムは280文字)
  • Markdownファイル(.md) → X記事

通常の投稿

${BUN_X} {baseDir}/scripts/x-browser.ts "Hello!" --image ./photo.png

パラメータ:

パラメータ説明
<text>投稿内容(位置指定)
--image <path>画像ファイル(繰り返し可能、最大4枚)
--profile <dir>カスタムChromeプロファイル

注記: スクリプトは内容が入力された状態でブラウザを開きます。ユーザーが確認して手動で公開します。

Codexモードに関する注記: ユーザーがCodex Chromeプラグインを明示的に要求した場合、Codex Chromeプラグインモードを使用します。それ以外の場合、Chrome Computer Useが有効であれば、x-browser.tsを実行する代わりにChrome Computer Useモードを使用します。


動画投稿

テキスト+動画ファイル。

${BUN_X} {baseDir}/scripts/x-video.ts "Check this out!" --video ./clip.mp4

パラメータ:

パラメータ説明
<text>投稿内容(位置指定)
--video <path>動画ファイル(MP4、MOV、WebM)
--profile <dir>カスタムChromeプロファイル

注記: スクリプトは内容が入力された状態でブラウザを開きます。ユーザーが確認して手動で公開します。

Codexモードに関する注記: ユーザーがCodex Chromeプラグインを明示的に要求した場合、Codex Chromeプラグインモードを使用します。それ以外の場合、Chrome Computer Useが有効であれば、x-video.tsを実行する代わりにChrome Computer Useモードを使用します。

制限: 通常は最大140秒、プレミアムは最大60分。処理時間:30〜60秒。


引用ツイート

既存のツイートにコメントを付けて引用します。

${BUN_X} {baseDir}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!"

パラメータ:

パラメータ説明
<tweet-url>引用するURL(位置指定)
<comment>コメントテキスト(位置指定、オプション)
--profile <dir>カスタムChromeプロファイル

注記: スクリプトは内容が入力された状態でブラウザを開きます。ユーザーが確認して手動で公開します。

Codexモードに関する注記: ユーザーがCodex Chromeプラグインを明示的に要求した場合、Codex Chromeプラグインモードを使用します。それ以外の場合、Chrome Computer Useが有効であれば、x-quote.tsを実行する代わりにChrome Computer Useモードを使用します。


X記事

長文のMarkdown記事(X Premiumが必要)。

${BUN_X} {baseDir}/scripts/x-article.ts article.md
${BUN_X} {baseDir}/scripts/x-article.ts article.md --cover ./cover.jpg

パラメータ:

パラメータ説明
<markdown>Markdownファイル(位置指定)
--cover <path>カバー画像
--title <text>タイトルを上書き

フロントマター: YAMLフロントマターでtitlecover_imageがサポートされています。

Codexモードに関する注記: ユーザーがCodex Chromeプラグインを明示的に要求した場合、上記のCodex Chromeプラグインモードに従います。Chrome Computer Useを明示的に要求した場合は、Chrome Computer Useモードに従います。それ以外の場合はChrome Computer Useを優先します。ローカルコンテンツ画像を含むMarkdown記事では、ツールバーのInsertMedia画像アップロードワークフローを使用してから、CDPスクリプトモードx-article.tsにフォールバックします。

CDPフォールバックに関する注記: スクリプトは記事が入力された状態でブラウザを開きます。--submitが使用されない限り、ユーザーが確認して手動で公開します。

公開の安全性: ユーザーが最終的な公開アクションを明示的に確認しない限り、--submitを使用したりPublishをクリックしたりしないでください。

ポストコンポジションチェック: すべての画像が挿入された後、スクリプトは自動的に次のことを検証します:

  • エディターコンテンツ内に残っているXIMGPH_プレースホルダー
  • 予想される画像数と実際の画像数

チェックが失敗した場合(出力に警告)、公開前に具体的な問題をユーザーに警告します。


トラブルシューティング

Chromeデバッグポートの準備ができていない

CDPフォールバックのみ:スクリプトがChrome debug port not readyまたはUnable to connectで失敗した場合、まず既存のChrome CDPインスタンスを強制終了してから再試行します:

pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2

重要: これは自動的に行う必要があります — このエラーが発生した場合、ユーザーに尋ねずにChrome CDPインスタンスを強制終了してコマンドを再試行します。

注意事項

  • 初回実行時:手動ログインが必要です(セッションは永続化されます)
  • Codex ChromeプラグインモードおよびChrome Computer Useモードでは、ユーザーの既存のChromeセッションを使用し、別のCDPプロファイルを起動しないでください
  • CDPスクリプトはデフォルトでブラウザにコンテンツを入力するだけです。--submitが明示的に使用されない限り、ユーザーが確認して手動で公開する必要があります
  • クロスプラットフォーム:macOS、Linux、Windows

拡張サポート

EXTEND.mdによるカスタム設定。パスとサポートされるオプションについては設定セクションを参照してください。

FAQ