canghe-post-to-x について
skills互換エージェント向けに、実際のChromeブラウザーでXの投稿内容を準備するスキルです。テキストやメディア、長文を入力し、公開前にユーザーが確認して手動で投稿します。
主な機能
- 01最大4枚の画像付き投稿
- 02動画投稿の準備
- 03コメント付き引用ポスト
- 04Markdown記事の投稿
- 05Chromeプロファイルの指定
活用シーン
- 01画像付きX投稿の準備
- 02動画をXに投稿する準備
- 03既存ポストへのコメント付き引用
- 04Markdown記事からX長文を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ freestylefly/ canghe-skills --skill canghe-post-to-xインストール後、Claude Code で/canghe-post-to-xを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/articles.mdregular-posts.mdscripts/bun.lockcheck-paste-permissions.tscopy-to-clipboard.tsmd-to-html.tspackage.jsonpaste-from-clipboard.tsx-article.tsx-browser.tsx-quote.tsx-utils.tsx-video.ts詳細
X に投稿
実際の Chrome ブラウザーを介して、テキスト、画像、動画、長文記事を X に投稿します(ボット対策検出を回避します)。
スクリプトディレクトリ
重要:すべてのスクリプトは、このスキルの scripts/ サブディレクトリにあります。
エージェントの実行手順:
- この SKILL.md ファイルのディレクトリパスを
SKILL_DIRとして特定します - スクリプトのパス =
${SKILL_DIR}/scripts/<script-name>.ts - このドキュメント内のすべての
${SKILL_DIR}を実際のパスに置き換えます
スクリプト一覧:
| スクリプト | 目的 |
|---|---|
scripts/x-browser.ts | 通常の投稿(テキスト + 画像) |
scripts/x-video.ts | 動画の投稿(テキスト + 動画) |
scripts/x-quote.ts | コメント付き引用ポスト |
scripts/x-article.ts | 長文記事の公開(Markdown) |
scripts/md-to-html.ts | Markdown → HTML 変換 |
scripts/copy-to-clipboard.ts | クリップボードにコンテンツをコピー |
scripts/paste-from-clipboard.ts | 実際の貼り付けキー入力を送信 |
scripts/check-paste-permissions.ts | 環境と権限を確認 |
設定(EXTEND.md)
Bash を使用して、優先順位に従って EXTEND.md の有無を確認します:
# Check project-level first
test -f .canghe-skills/canghe-post-to-x/EXTEND.md && echo "project"
# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.canghe-skills/canghe-post-to-x/EXTEND.md" && echo "user"
┌──────────────────────────────────────────────────┬───────────────────┐ │ パス │ 場所 │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .canghe-skills/canghe-post-to-x/EXTEND.md │ プロジェクトディレクトリ │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.canghe-skills/canghe-post-to-x/EXTEND.md │ ユーザーホーム │ └──────────────────────────────────────────────────┴───────────────────┘
┌───────────┬───────────────────────────────────────────────────────────────────────────┐ │ 結果 │ 操作 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 見つかった │ 読み込み、解析し、設定を適用します │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 見つからない │ デフォルトを使用します │ └───────────┴───────────────────────────────────────────────────────────────────────────┘
EXTEND.md で設定可能:デフォルトの Chrome プロファイル
前提条件
- Google Chrome または Chromium
bunランタイム- 初回実行時:X に手動でログインします(セッションは保存されます)
事前チェック(任意)
初めて使用する前に、環境チェックの実行を提案してください。ユーザーは希望すればスキップできます。
npx -y bun ${SKILL_DIR}/scripts/check-paste-permissions.ts
確認項目:Chrome、プロファイルの分離、Bun、アクセシビリティ、クリップボード、貼り付けキー入力、Chrome の競合。
いずれかのチェックに失敗した場合、項目ごとに修正方法を案内してください:
| チェック | 修正方法 |
|---|---|
| Chrome | Chrome をインストールするか、X_BROWSER_CHROME_PATH 環境変数を設定します |
| プロファイルディレクトリ | ~/.local/share/x-browser-profile に書き込み可能であることを確認します |
| Bun ランタイム | curl -fsSL https://bun.sh/install | bash |
| アクセシビリティ(macOS) | システム設定 → プライバシーとセキュリティ → アクセシビリティ → ターミナルアプリを有効にします |
| クリップボードへのコピー | Swift/AppKit が利用可能であることを確認します(macOS Xcode CLI tools:xcode-select --install) |
| 貼り付けキー入力(macOS) | 上記と同じアクセシビリティの修正を行います |
| 貼り付けキー入力(Linux) | xdotool(X11)または ydotool(Wayland)をインストールします |
参考資料
- 通常の投稿:手動でのワークフロー、トラブルシューティング、技術的な詳細については
references/regular-posts.mdを参照してください - X 記事:長文記事の公開ガイドについては
references/articles.mdを参照してください
通常の投稿
テキスト + 最大 4 枚の画像。
npx -y bun ${SKILL_DIR}/scripts/x-browser.ts "Hello!" --image ./photo.png
パラメーター:
| パラメーター | 説明 |
|---|---|
<text> | 投稿内容(位置引数) |
--image <path> | 画像ファイル(繰り返し指定可、最大 4 件) |
--profile <dir> | カスタム Chrome プロファイル |
注:スクリプトは、コンテンツを入力した状態でブラウザーを開きます。ユーザーが内容を確認し、手動で公開します。
動画投稿
テキスト+動画ファイルです。
npx -y bun ${SKILL_DIR}/scripts/x-video.ts "Check this out!" --video ./clip.mp4
パラメーター:
| パラメーター | 説明 |
|---|---|
<text> | 投稿内容(位置引数) |
--video <path> | 動画ファイル(MP4、MOV、WebM) |
--profile <dir> | カスタム Chrome プロファイル |
注:スクリプトは、内容を入力した状態でブラウザーを開きます。ユーザーが確認して手動で公開します。
制限:通常は最大 140 秒、Premium は 60 分です。処理時間:30~60 秒。
引用リポスト
既存のツイートをコメント付きで引用します。
npx -y bun ${SKILL_DIR}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!"
パラメーター:
| パラメーター | 説明 |
|---|---|
<tweet-url> | 引用する URL(位置引数) |
<comment> | コメントテキスト(位置引数、省略可能) |
--profile <dir> | カスタム Chrome プロファイル |
注:スクリプトは、内容を入力した状態でブラウザーを開きます。ユーザーが確認して手動で公開します。
X 記事
長文の Markdown 記事です(X Premium が必要です)。
npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md
npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md --cover ./cover.jpg
パラメーター:
| パラメーター | 説明 |
|---|---|
<markdown> | Markdown ファイル(位置引数) |
--cover <path> | カバー画像 |
--title <text> | タイトルを上書き |
フロントマター:YAML フロントマターで title、cover_image をサポートしています。
注:スクリプトは、記事を入力した状態でブラウザーを開きます。ユーザーが確認して手動で公開します。
トラブルシューティング
Chrome のデバッグポートが準備できていない
スクリプトが 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 インスタンスを終了し、コマンドを再試行してください。
注記
- 初回実行時:手動ログインが必要です(セッションは保持されます)
- すべてのスクリプトはブラウザーに内容を入力するだけです。ユーザーが確認して手動で公開する必要があります
- クロスプラットフォーム:macOS、Linux、Windows
拡張機能のサポート
EXTEND.md を使用してカスタム設定を行えます。パスとサポート対象のオプションについては、Preferences セクションを参照してください。