コンテンツ制作 · freestylefly/canghe-skills

canghe-post-to-x

X(Twitter)にコンテンツや記事を投稿します。画像/動画付きの通常ポストやX Articles(長文Markdown)に対応しています。CDPを備えた本物のChromeを使用して自動化対策を回避します。ユーザーが「Xに投稿して」「ツイートして」「Twitterに公開して」「Xでシェアして」と依頼した際に使用します。

L5 厳格管理 · 隔離環境と厳格な監査V2 人間監査済規約/コンプライアンス認証情報/セッションコマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author freestyleflyGitHub freestylefly/canghe-skills ↗License MIT(仓库根 LICENSE)Commit dd0bf35595
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

Playwright/Puppeteerを使用せず、CDPを介して実環境のChromeを駆動しコンテンツをXの実UIに入力します。公式説明文でも自動化検出の回避を目的と明記しています。

skills/canghe-post-to-x/SKILL.md
Posts text, images, videos, and long-form articles to X via real Chrome browser (bypasses anti-bot detection).
処理内容:SKILL.mdの冒頭で方針の動機を明記しています。永続プロファイルを保持する実Chrome + CDPセッションによって実装されています。

4種類のコンテンツ(通常ポスト/動画ポスト/引用/長文記事)で同一のChrome/CDP基盤およびクリップボードサブシステムを共有します。

skills/canghe-post-to-x/SKILL.md
| `scripts/x-video.ts` | Video posts (text + video) |
処理内容:Script Referenceの表に各エントリポイントスクリプトが記載されており、各スクリプトが同一のパラメータモデルで個別に実Chromeを起動します。

主要な回避手法:CDPの合成キーイベントはXに検出・無視されるため、osascriptを用いた実際のCmd+Vキーストロークを送信します。

skills/canghe-post-to-x/references/regular-posts.md
Sends real Cmd+V keystroke to Chrome, bypassing CDP's synthetic events that X can detect
処理内容:Image Paste Mechanismのセクションで説明されています。CDPによる合成キーボードイベントはサイト側に検知される可能性があるため、システムレベルの実際のキー入力に切り替えています。

起動パラメータで自動化フラグを明示的に無効化します。

skills/canghe-post-to-x/scripts/x-browser.ts
'--disable-blink-features=AutomationControlled',
処理内容:x-article/x-browser/x-quote/x-videoの4スクリプトすべてに当該パラメータが付与されており、navigator.webdriverなどの痕跡を消去します。

長文記事のフロー:md-to-html.tsがfrontmatterやカバー画像を解析し本文画像をXIMGPH_nプレースホルダーに置換、x-article.tsがCDP経由でエディタに入力したのちプレースホルダーを逆置換して画像を挿入します。

skills/canghe-post-to-x/references/articles.md
"placeholder": "XIMGPH_1",
処理内容:X Articlesのエディタがクリップボード経由の画像貼り付けを受け付けない場合の代替手段として、プレースホルダー+順次特定・置換を行っています。

クロスプラットフォーム対応のクリップボード/キーストロークサブシステム:Linuxではxdotool/ydotool、macOSではosascript、WindowsではPowerShell SendKeysを使用します。

skills/canghe-post-to-x/scripts/paste-from-clipboard.ts
{ cmd: 'xdotool', args: ['key', 'ctrl+v'] },
処理内容:paste()がprocess.platformに応じて分岐します。画像はまずcopy-to-clipboard.ts(macOSではインラインSwift)経由でシステムクリップボードに書き込まれます。

デフォルトでは入力のみ行い投稿はしません:スクリプトはコンテンツを入力した後に停止して人間の確認を待ち、長文記事は--submitが指定された場合のみ実際に公開されます。

skills/canghe-post-to-x/references/articles.md
10. **Publish**: Only with `--submit` flag
処理内容:Workflowのステップ9〜10にブラウザをプレビュー状態で待機させることが明記されており、投稿には明示的な--submitが必要です。

事前チェック用スクリプトがChrome、プロファイル分離、Bun、アクセシビリティ権限、クリップボード、貼り付けキー、およびChromeとの競合を検証します。

skills/canghe-post-to-x/SKILL.md
Checks: Chrome, profile isolation, Bun, Accessibility, clipboard, paste keystroke, Chrome conflicts.
処理内容:check-paste-permissions.tsが任意の事前診断として機能し、失敗時には項目ごとの修正ガイダンスを提供します。

初回実行時は手動ログインが必要であり、セッションはプロファイルに永続化されます。

skills/canghe-post-to-x/SKILL.md
- First run: log in to X manually (session saved)
処理内容:Prerequisites/Notesにて、ログイン状態を維持するために永続プロファイルを使用し、以降のスクリプトでそれを再利用することが説明されています。

2コア機能

01通常ポストの投稿(テキスト + 最大4枚の画像)
02動画ポストの投稿(MP4/MOV/WebM)
03コメント付き引用リポスト
04X長文記事の投稿(Markdown形式、X Premiumが必要)
05Markdown → HTML変換(カバー画像および本文画像プレースホルダー対応)
06実際のキーストロークによる貼り付け(検出可能なCDP合成イベントの回避)
07マルチプラットフォーム対応のクリップボード/キー入力(macOS/Linux/Windows)
08環境の事前チェック(Chrome/権限/クリップボード/キーストローク/競合)およびデフォルトでの目視確認付き投稿フロー

3外部依存関係

KindDependency / Endpoint
networkX 编辑器页面(浏览器端访问)
clibun(经 npx -y 即时拉取)
cliGoogle Chrome / Chromium(CDP)
cli真实键击工具:osascript / xdotool / ydotool / powershell.exe
packagemarked / highlight.js / front-matter / remark-*(md 转换)
mcpPlaywright MCP(可选的手工工作流示例调用)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
隔離環境で実行、都度明示的な認可
管理者向け
厳格な認可、全量監査、コンプライアンス確認
判定根拠(ファイルパスと抜粋)
  • SKILL.md / 脚本参数: 自動化検出の回避、ホストサンドボックスの無効化、またはSSL証明書検証のスキップが含まれています
  • SKILL.md / 会话存储: ブラウザのユーザーログイン状態およびセッションCookieの読み取りまたは再利用
  • scripts/: ローカルスクリプトまたはコマンドの実行: npx -y bun ${SKILL_DIR}/scripts/x-browser.ts / x-video.ts / x-quote.ts / x-
  • 网络端点: 外部ネットワークアクセスの宣言: CDPポート検出 http://127.0.0.1:<port>/json/version およびWebSocketによるCDP接続(x-utils.ts
  • 本地工作目录: ファイルの読み書きおよび成果物の出力: Chromeプロファイルディレクトリ(X_BROWSER_CHROME_PATH / profile引数で変更可能)
監査ノート: (機能およびポリシーレベルでの判定であり、悪意あるコードの混入ではありません)。自動化検出を技術的に回避しているためレッド判定としています:SKILL.mdに「bypasses anti-bot detection」と明記され、regular-posts.mdには実際のCmd+Vを使用する理由(「bypassing CDP's synthetic events that X can detect」)および「This approach bypasses X's anti-automation detection that blocks Playwright/Puppeteer.」と明記されています。また、x-article/x-browser/x-quote/x-videoの4スクリプトすべてに--disable-blink-features=AutomationControlledが付与されています。認証情報の観点では、Chromeプロファイルに共有されたログイン済みXセッションを使用し、--submitによってユーザーアカウントから元に戻せない投稿が行われます。認証情報ファイルの窃取、TLS/サンドボックスのダウングレード、難読化は含まれないため、判定は純粋に回避機能に起因するものであり、baoyu-post-to-xと同系統です(前例:notebooklm-skill、baoyu-post-to-x)。

5二重目の独立検証

  • [ok] 反自动化绕过动机 — SKILL.md 描述、regular-posts.md 的 How It Works 与 paste-from-clipboard.ts 顶部注释三处一致声明绕过检测。
  • [ok] AutomationControlled 标志 — 风险扫描在 x-article.ts:117 / x-browser.ts:44 / x-quote.ts:48 / x-video.ts:48 四处定位同一参数,判红据成立。
  • [ok] 四条内容路径 — SKILL.md Script Reference 与各命令行示例互证 x-browser/x-video/x-quote/x-article 四个入口。
  • [ok] 剪贴板/键击跨平台适配 — paste-from-clipboard.ts 正文完整展开,pasteMac/pasteLinux/pasteWindows 分派逐字可核。
  • [ok] 长文占位符机制 — articles.md 的 images XIMGPH_n 与 Workflow 第 8 步『反向替换』描述自洽。
  • [ok] 凭证读取 — 「凭证/环境变量」39 条命中均为 ${SKILL_DIR}/$HOME/profile 参数与示例,未见密钥/cookie 文件读取;凭据即 profile 登录态,与结论一致。
  • [unlocatable] 主脚本的 CDP DOM 细节 — x-browser/x-video/x-quote/x-article.ts 全文未在 bundle 展开,文本注入与 DOM 操作细节以 SKILL.md/references 描述与扫描行为据,未代码级复核。
  • [ok] Playwright MCP 引用 — 仅出现在 regular-posts.md 的可选手工工作流示例,非脚本内置依赖,不改变档位。

6結論

  • Xにおける4つの投稿形態(通常/動画/引用/長文記事)をカバーし、単一のスキル内で完結。
  • デフォルトでは自動投稿を行わない:内容の入力にとどめてプレビュー状態で待機し、実際の投稿には明示的な--submitが必要。
  • マルチプラットフォーム対応のクリップボード/キー入力サブシステムを備え、環境事前チェックと修復ガイダンスも同梱。
  • 最適な用途: テキスト、画像、動画、長文記事をXに投稿する必要があり、認証済みの実ブラウザによる半自動操作を許容できるコンテンツクリエイター。
    不向きな用途: プラットフォームの自動化検出回避を行わない完全なコンプライアンス遵守が求められる環境。実Chromeのログイン状態の再利用やアクセシビリティ権限の付与を望まない環境。
    Install Agent-Ready
    ① Verified Mirror 2026-10-10
    Option A · Direct DownloadDownload canghe-post-to-x.tar.gz
    sha256: aa885729a2c33e40…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit dd0bf35595.