ホーム / 全スキル / コンテンツ制作 / baoyu-post-to-weibo
コンテンツ制作 · JimLiu/baoyu-skills

baoyu-post-to-weibo

Weibo (微博) にコンテンツを投稿します。Chrome CDP を介して、テキスト、画像、動画を含む通常の投稿や、Markdown 入力によるヘッドライン記事 (头条文章) に対応しています。ユーザーが「post to Weibo」「发微博」「发布微博」「publish to Weibo」「share on Weibo」「写微博」「微博头条文章」とリクエストした際に使用します。

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

1仕組みと動作原理

実装アプローチはローカルの実 Chrome を操作することです:Chrome 実行ファイルを探索 → デバッグポート付きインスタンス(独立プロファイル)を起動 → デバッグポートの待機完了を確認 → CDP WebSocket に接続 → 対象ページへアタッチ。

skills/baoyu-post-to-weibo/scripts/weibo-utils.ts
export async function launchChrome(url: string, profileDir: string, chromePathOverride?: string): Promise<number> {
HTTP レベルのリバースエンジニアリングやプライベート API リクエストの構築は行いません。すべての操作は実際のブラウザページ内で行われます(これがプラットフォームの自動化検知を回避できる前提でもあります)。

自動化検知の回避はこの skill の明示的な設計事項です:SKILL.md の冒頭でセールスポイントとして記載されており、コード上でも Chrome の自動化特徴フラグが無効化されています。

skills/baoyu-post-to-weibo/scripts/weibo-utils.ts
extraArgs: ['--disable-blink-features=AutomationControlled', '--start-maximized'],
SKILL.md 原文:`Posts text, images, videos, and long-form articles to Weibo via real Chrome browser (bypasses anti-bot detection).`——プラットフォームの自動検知に対する技術的バイパスが、本 skill が Red 判定される主因です。

コンテンツ注入の第一手段は合成イベントではなく「実キーストロークによる貼り付け」であり、スクリプトの用途説明にもその理由が明記されています:Web サイトは CDP 合成イベントを検知して無視することがあるためです。

skills/baoyu-post-to-weibo/scripts/paste-from-clipboard.ts
This bypasses CDP's synthetic events which websites can detect and ignore.
呼び出しチェーン:weibo-utils.ts の copyHtmlToClipboard/copyImageToClipboard が `spawnSync('npx', ['-y', 'bun', scriptPath, ...args])` で copy-to-clipboard.ts を起動し、pasteFromClipboard → paste-from-clipboard.ts を経由して実際の Cmd+V/Ctrl+V を送信(macOS は osascript System Events、Linux は xdotool/ydotool、Windows は PowerShell SendKeys)。weibo-article.ts 内では `// Method 1: Copy HTML to system clipboard, then real paste keystroke` と記載され、CDP 合成イベントはフォールバックとしてのみ使用されます。

通常 Weibo のテキスト入力には CDP Input.insertText を使用し、失敗時は execCommand へフォールバックします。メディアアップロードはページの file input にファイルパスを直接渡し、blob:/data: のカウントで検証します。

skills/baoyu-post-to-weibo/scripts/weibo-post.ts
await cdp.send('Input.insertText', { text }, { sessionId });
アップロードは `DOM.setFileInputFiles` で `#homeWrap input[type="file"]` を指定します。検証式では `#homeWrap img[src^="blob:"], #homeWrap img[src^="data:"], #homeWrap video` の数をカウントし、最大 18 ファイルまでに制限されます(MAX_FILES = 18)。

ヘッドライン記事は card.weibo.com の ProseMirror エディタを経由します:タイトル/導入文の入力 → HTML の貼り付け → 画像ごとに「画像コピー + 実貼り付けキー」でプレースホルダーを置換 → 残余プレースホルダーと画像数の検証。

skills/baoyu-post-to-weibo/scripts/weibo-article.ts
// Method 1: Copy HTML to system clipboard, then real paste keystroke
エディタのエントリ定数は `const WEIBO_ARTICLE_URL = 'https://card.weibo.com/article/v3/editor';` です。画像置換ループ内でも copyImageToClipboard → pasteFromClipboard('Google Chrome', 5, 1000) が使用されます。

プラットフォームの文字数制限はハードコードされており自動処理されます:タイトル 32 文字、導入文 44 文字で、超過時は句読点境界で切り詰めるか本文から再生成されます。

skills/baoyu-post-to-weibo/scripts/weibo-article.ts
const TITLE_MAX_LENGTH = 32;
同ファイル内の `const SUMMARY_MAX_LENGTH = 44;`。制限超過の導入文は parsed.shortSummary で再生成されるか、省略記号を付与して切り詰められます。

起動済みのデバッグ用 Chrome を引き継ぎ/再利用可能です:プロファイルディレクトリ + --remote-debugging-port でプロセス一覧と照合し、必要な場合のみ自身のプロファイルのインスタンスを終了します。

skills/baoyu-post-to-weibo/scripts/weibo-utils.ts
if (!line.includes(profileDir) || !line.includes('--remote-debugging-port=')) continue;
killChromeByProfile は `spawnSync('ps', ['aux'])` でプロセスを特定し `process.kill(Number(pid), 'SIGTERM')` を実行します。SKILL.md にはこれに関して CRITICAL なルールが明記されています:`Only kill Chrome instances launched by CDP with the baoyu-skills profile directory.`(ユーザーの Chrome 全体を pkill することを禁止)。

ログイン状態は永続化された Chrome プロファイルに保持され、初回に手動ログインを行えば長期的に再利用されます。スクリプトはページへの入力のみを担当し、投稿はユーザーが手動で確定します。

skills/baoyu-post-to-weibo/SKILL.md
All scripts only fill content into the browser, user must review and publish manually
SKILL.md の記述:`First run: log in to Weibo manually (session saved)`——セッションはプロファイルディレクトリ内の Cookie/ストレージに保持され、典型的な「ログイン済みブラウザセッションの再利用」パターンに該当します(認証情報ソース)。

2コア機能

01通常 Weibo の投稿(テキスト + 画像/動画、最大 18 ファイル)
02ヘッドライン記事の投稿(Markdown → HTML → ProseMirror エディタ、frontmatter の title/summary/cover_image に対応)
03タイトル/導入文の文字数制限遵守(32/44 文字)と超過時の自動切り詰めまたは再生成
04画像プレースホルダーの置換 + 投稿前のセルフチェック(残存する WBIMGPH_ プレースホルダーと想定画像数の突合)
05クロスプラットフォーム対応のクリップボードおよびキーストローク注入(macOS swift/osascript、Linux wl-copy/xclip + xdotool/ydotool、Windows PowerShell)
06デバッグ用 Chrome の再利用およびプロファイル指定による高精度なクリーンアップ(日常利用の Chrome を誤終了させない設計)
07既存のログイン状態の再利用(EXTEND.md でデフォルト Chrome プロファイルの設定が可能)による QR コード再スキャンの回避

3外部依存関係

KindDependency / Endpoint
network浏览器访问 weibo.com 与 card.weibo.com(发帖与头条文章编辑器)
network头条文章编辑器入口
cli本地 Chrome/Chromium(--remote-debugging-port + --user-data-dir,带 AutomationControlled 关闭参数)
cli粘贴按键注入工具(macOS osascript / Linux xdotool 或 ydotool / Windows powershell.exe)
cli剪贴板工具(macOS swift 临时脚本 / Linux wl-copy 或 xclip / Windows PowerShell)
clips(进程枚举,用于复用/清理调试 Chrome)
packagebaoyu-chrome-cdp(npm,仓库 packages/ 内共享包:CDP 连接、Chrome 查找与启动、按键/剪贴板基础件)
packagebaoyu-md(npm,仓库 packages/ 内共享包:Markdown → HTML,供头条文章使用)
clibun(内部以 npx -y bun 调起同目录辅助脚本)

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

安全運用のための推奨統制措置
Agent 向け
隔離環境で実行、都度明示的な認可
管理者向け
厳格な認可、全量監査、コンプライアンス確認
判定根拠(ファイルパスと抜粋)
  • SKILL.md / 脚本: 未公開またはリバースエンジニアリングされた非公開 API の呼び出し / クライアント識別子の偽装
  • SKILL.md / 脚本参数: 自動化検知の回避、ホストサンドボックスの無効化、または SSL 証明書検証のスキップを含む
  • SKILL.md / 会话存储: ブラウザのユーザーログイン状態およびセッション Cookie の読み取りまたは再利用
  • scripts/: ローカルスクリプトまたはコマンドの実行: bun {baseDir}/scripts/weibo-post.ts <text> --image/--video …
  • 外部 API: 外部プラットフォームに対する投稿、リソース作成または変更の書き込み
  • 本地工作目录: ファイルの読み書きおよびアーティファクトの出力: Chrome プロファイルディレクトリ(デフォルトの baoyu-skills/chrome-profile 構成、ログイン状態およびブラウザデータの永続化)
監査ノート: 「機能/ポリシーレベル」での Red 判定となります。規約に抵触する境界は本 skill ディレクトリ内に存在し、ドキュメントにも記載されています:①【技術的な自動化検知の回避】SKILL.md 冒頭に `Posts text, images, videos, and long-form articles to Weibo via real Chrome browser (bypasses anti-bot detection).` と明記されています。実装レイヤーである scripts/weibo-utils.ts では Chrome に対し `extraArgs: ['--disable-blink-features=AutomationControlled', '--start-maximized'],` を渡しており(自動化の特徴フラグをオフにする、notebooklm-skill と同様の手法)、scripts/paste-from-clipboard.ts には `This bypasses CDP's synthetic events which websites can detect and ignore.` と記載され、weibo-article.ts でもこれを主手段として扱っています(`// Method 1: Copy HTML to system clipboard, then real paste keystroke`、CDP 合成イベントはフォールバック扱い)。②【認証情報/セッション面】永続化された Chrome プロファイル内の Weibo ログインセッションを再利用(初回手動ログイン後に長期保持)し、実行中のデバッグ用 Chrome を引き継ぐことが可能です。なお、秘密鍵ファイル等の読み取りは行いません。③【外部への副作用】ユーザーのアカウントを用いて公開プラットフォーム上に投稿/ヘッドライン記事を作成します(スクリプトは入力のみを行い、公開はユーザーが確定)。また、プロファイル指定で自身が起動したデバッグ用 Chrome に SIGTERM を送信して終了します。総括:TLS のダウングレードやサンドボックスの無効化(Chrome に --no-sandbox は未指定)、プライベート API のリバースエンジニアリング、クライアントの偽装は含まれません。Red 判定の理由は自動化検知の技術的バイパスそのものに起因します。

5二重目の独立検証

  • [ok] 反自动化检测绕过(判红主因) — 三处证据互相印证:SKILL.md 'bypasses anti-bot detection';weibo-utils.ts `extraArgs: ['--disable-blink-features=AutomationControlled', '--start-maximized'],`(launchChrome 传给 launchChromeBase);paste-from-clipboard.ts 'This bypasses CDP's synthetic events which websites can detect and ignore.'
  • [ok] 真实按键是第一手段而非兜底 — weibo-article.ts 注释排序为 '// Method 1: Copy HTML to system clipboard, then real paste keystroke',失败后才走 DataTransfer paste 事件;图片替换循环直接 pasteFromClipboard('Google Chrome', 5, 1000)。
  • [ok] 凭证面确认(无密钥读取,靠 profile 会话) — 全目录 process.env/API_KEY/TOKEN/SECRET/.env 扫描零命中;SKILL.md 说明登录态由 Chrome profile 持久化(First run: log in to Weibo manually (session saved)),EXTEND.md 仅支持默认 profile 一项。
  • [ok] 外部端点仅微博自家域名 — grep https:// 命中 WEIBO_HOME_URL=https://weibo.com/ 与 WEIBO_ARTICLE_URL=https://card.weibo.com/article/v3/editor,另有一处仅作日志措辞的 'src: https://...';无第三方 API/CDN。
  • [ok] 平台限制与自检 — MAX_FILES=18、TITLE_MAX_LENGTH=32、SUMMARY_MAX_LENGTH=44 均在源码;SKILL.md 的 Post-Composition Check(剩余 WBIMGPH_ 占位符、预期 vs 实际图片数)与代码校验逻辑一致。
  • [ok] 进程清理不会误杀用户浏览器 — killChromeByProfile 只对同时包含 profileDir 与 '--remote-debugging-port=' 的行取 pid 并 SIGTERM;SKILL.md 用 CRITICAL 明确禁止 `pkill -f "Google Chrome"`。
  • [ok] 无其他安全降级 — grep no-sandbox / rejectUnauthorized / --insecure / NODE_TLS_REJECT / disable-web-security 零命中;Chrome 参数仅为调试端口、profile、AutomationControlled 与最大化窗口。
  • [ok] 元数据(license/stars/commit) — git HEAD=1567581c26ec29f4216c6e6835415bf30343b0e3;仓库根 LICENSE=MIT(Copyright (c) 2026 Jim Liu);GitHub API stars=25926、pushed_at=2026-09-10T15:13:43Z。

6結論

  • 厳格なログイン認証とフロントエンド検証を伴う Weibo の投稿環境において実ブラウザを採用し、カスタム API クライアントによるアカウント凍結や保守リスクを回避(ローカルで Chrome を実行できる環境が前提となります)。
  • 多重のフォールバック + セルフチェック機構を備えたコンテンツ注入:insertText/execCommand、クリップボード実キーストローク、DataTransfer イベントに対応し、投稿前にプレースホルダーと画像数を検証。
  • プラットフォームのハード制約をワークフローに組み込み済み:添付ファイル 18 点、タイトル 32 文字、導入文 44 文字の制限に対し、自動切り詰め/再生成を行うため予期せぬエラーを回避。
  • 明確な操作安全境界:入力のみを行い公開ボタンは押さない設計(ユーザーによる最終確認)、プロセス終了もプロファイル完全一致のみとしグローバルな pkill を禁止。
  • 主要 3 プラットフォームに対応:クリップボードとキー操作の実装が macOS/Linux/Windows ごとに用意されており、Chrome デバッグポート不通時のトラブルシューティングも完備。
  • 最適な用途: Weibo アカウントを保有し、手元の Markdown 原稿(カバー画像や本文内画像を含む)をワンクリックでヘッドライン記事エディタに流し込みたい作成者や、プラットフォームの制約上 API 利用が適さない日常的な投稿シナリオに最適です。また、他のコンテンツ制作 skill の最終工程としての連携にも適しています(自動化検知の回避手法およびアカウントリスクを許容できることが前提)。
    不向きな用途: コンプライアンスを重視する環境やプラットフォームのリスク管理リスクを許容できないシナリオには不適です(本 skill は自動化検知の回避を含んでいるため Red 判定となります)。GUI や Chrome のないサーバー環境には不適です。完全自動化・無人での運用が求められるパイプラインには不適です(スクリプトは入力のみを担当し、ユーザーによる公開ボタンのクリックが必要です)。アカウントの大量育成やスパム・マーケティング目的の投稿には適していません。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload baoyu-post-to-weibo.tar.gz
    sha256: 5673e558aeace4cc…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 1567581c26.