mcpField
X
x-publish

x-publish

github.com/kangarookingマーケティング・グロース34287 回インストール36 週間前に更新
リポジトリ

x-publish について

x-publish は、Playwright によるブラウザー自動化で X の単独投稿やスレッドを作成し、下書きとして保存するスキルです。X へのログインが必要で、保存前に内容を確認し、自動投稿は行いません。

主な機能

  1. 01単独投稿の下書き保存
  2. 023~10件のスレッド下書き保存
  3. 03投稿文のクリップボードコピー
  4. 04280文字制限の確認
  5. 05Xでの下書き確認

活用シーン

  1. 01確認用の投稿を準備
  2. 02複数投稿のスレッドを下書き保存
  3. 03入力前に投稿文を確認

MCP 対応

Playwright MCP を使ったブラウザー自動化で X の投稿画面を操作し、下書きを保存します。

インストール

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

$npx skills add https://github.com/kangarooking/x-skills --skill x-publish

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

同梱ファイルscripts/copy_to_clipboard.py

詳細

X Publish

Playwright のブラウザー自動化を使って、X の下書きにポストやスレッドを保存します。

前提条件

  • ブラウザー自動化用の Playwright MCP
  • ユーザーが X(Twitter)にログインしていること
  • Python 3.9 以降と依存関係:
    • macOS:pip install Pillow pyobjc-framework-Cocoa
    • Windows:pip install Pillow pywin32

重要なルール

  1. 自動で公開しないでください - 下書きとして保存するだけにします
  2. ユーザーがログインしている必要があります - ログインしていない場合はログインを促します
  3. 保存前に内容を確認してください - ポストのテキストを入念に再確認します

コンテンツの種類

短いポスト

280 文字以内の単独ポスト

スレッド

複数のポストをつなげたもの(3~10 件)

スクリプト

copy_to_clipboard.py

貼り付け操作のために、テキストをシステムクリップボードにコピーします:

# Copy text to clipboard
python scripts/copy_to_clipboard.py text "Tweet content here"

# Copy from file
python scripts/copy_to_clipboard.py text --file /tmp/tweet.txt

ワークフロー

短いポスト

ステップ 1:コンテンツを準備

# Save tweet to temp file
echo "Tweet content" > /tmp/tweet.txt

# Copy to clipboard
python scripts/copy_to_clipboard.py text --file /tmp/tweet.txt

ステップ 2:投稿画面を開く

browser_navigate: https://x.com/compose/post

ステップ 3:コンテンツを貼り付ける

browser_snapshot → Find tweet textbox
browser_click: textbox
browser_press_key: Meta+v

ステップ 4:下書きを保存

browser_click: X (close button)
browser_click: "Save" or "保存" in dialog

ステップ 5:確認

Report: "Draft saved. Please review at https://x.com/compose/drafts"
スレッド

ステップ 1:コンテンツを準備 スレッドを個別のポストに分割します:

### 1/5
First tweet content...

### 2/5
Second tweet content...

ステップ 2:投稿画面を開く

browser_navigate: https://x.com/compose/post

ステップ 3:最初のポストを追加

python scripts/copy_to_clipboard.py text "First tweet content"
browser_click: textbox
browser_press_key: Meta+v

ステップ 4:残りのポストを追加 追加するポストごとに:

browser_click: "Add another post" / "添加" button
browser_press_key: Meta+v (after copying next tweet)

ステップ 5:下書きを保存

browser_click: X (close button)
browser_click: "Save" in dialog

ステップ 6:確認

Report: "Thread draft saved ({n} tweets). Review at https://x.com/compose/drafts"

効率化のガイドライン

不要な待機を避ける
❌ browser_snapshot after every action
✅ Use action return values for next step
準備を並行して行う
✅ Prepare all tweet content before browser operations
✅ Copy to clipboard while navigating
順番に実行する
Navigate → Paste first tweet → Add tweet → Paste → ... → Save

要素の参照

X の投稿画面によくある要素:

要素説明一般的な参照パターン
ポストのテキストボックスメインの入力欄「What's happening」と表示されたテキストボックス
ポスト追加ボタン「+」または「追加」投稿エリア付近のボタン
閉じるボタンX アイコン左上のボタン
下書きを保存閉じるダイアログ内「保存」ボタン
下書きへのリンク保存済みの下書きを表示/compose/drafts へのリンク

フローの例

短いポストの例

ユーザー:/x-publish "Claude 4.5发布了,extended thinking是真正的游戏规则改变者。"

# 1. Copy to clipboard
python scripts/copy_to_clipboard.py text "Claude 4.5发布了,extended thinking是真正的游戏规则改变者。"
# 2. Navigate and paste
browser_navigate: https://x.com/compose/post
browser_snapshot → find textbox
browser_click: textbox
browser_press_key: Meta+v

# 3. Close and save
browser_click: close button (X)
browser_click: "Save" button

# 4. Report
"Draft saved! Review at: https://x.com/compose/drafts"
スレッドの例

ユーザー:/x-publish(x-create で作成したスレッドの内容を使用)

Thread:
### 1/3
First point about AI...

### 2/3
Second point...

### 3/3
Conclusion...

実行:

# Prepare all tweets
tweet1="First point about AI..."
tweet2="Second point..."
tweet3="Conclusion..."
# Navigate
browser_navigate: https://x.com/compose/post

# Tweet 1
python copy_to_clipboard.py text "$tweet1"
browser_click: textbox
browser_press_key: Meta+v

# Tweet 2
python copy_to_clipboard.py text "$tweet2"
browser_click: "Add another post" button
browser_press_key: Meta+v

# Tweet 3
python copy_to_clipboard.py text "$tweet3"
browser_click: "Add another post" button
browser_press_key: Meta+v

# Save
browser_click: close button
browser_click: "Save"

# Report
"Thread draft saved (3 tweets). Review at: https://x.com/compose/drafts"

エラー処理

未ログイン
If login page detected:
→ "Please log in to X first, then run /x-publish again"
文字数制限
If tweet > 280 chars:
→ Split into thread or truncate with warning
ネットワークエラー
If page fails to load:
→ Retry once, then report error

連携

公開後:

推文已保存到草稿箱!

- 类型: {short/thread}
- 条数: {n}
- 草稿链接: https://x.com/compose/drafts

请手动审核后发布。

フック/状態取り込み用に、機械可読なブロックを追加します:

PUBLISH_JSON
{
  "schema_version": "x_skills.publish.v1",
  "timestamp": "{timestamp}",
  "draft_saved": true,
  "post_type": "short|thread",
  "count": 1,
  "draft_url": "https://x.com/compose/drafts"
}

(任意)フィードバックループ用のイベントを追加します:

python ~/.claude/skills/x-create/scripts/x_state.py event --event publish.saved_to_draft --payload-json '{"post_type":"short","count":1,"draft_saved":true}'

コメント