クロスポストの面倒を全部肩代わりする Chrome 拡張機能 / All cross-posting hassle, handled.
複数の SNS に同じ投稿を一気に流す Chrome 拡張機能です (11 ネットワーク対応)。
文字数オーバーは自動分割 (X はリプライチェーンでスレッド化)、画像は各 SNS の
制約に自動リサイズ、動画は尺・サイズを判定し、上限超えは ffmpeg.wasm で
自動圧縮してから送信します。
投稿内容は第三者サーバーを一切経由しません。
- 📤 マルチ SNS 同時投稿 — 一度書けば、選んだ全ての SNS にワンクリック (11 ネットワーク)
- ✂️ 文字数オーバーの自動分割 —
(1/N)形式で連番付きの逐次投稿。X は リプライチェーン で繋いでスレッド化、それ以外は独立投稿 #hashtagを境界で途中切断しない / Bluesky では rich text facets (タグ・URL annotations) を自動付与- 🖼️ 画像最大 4 枚 + 自動リサイズ — Bluesky の 1MB 等の厳しい制限にも自動でフィット
- 🎬 動画送信 + 自動圧縮 — 各 SNS の上限超えは
ffmpeg.wasm(offscreen document) でその場で再エンコード - 🔌 公式 API 経由オプション — Bluesky / Mastodon / Misskey は credentials を登録すると DOM 操作を経由せず API 直叩きで投稿 (SNS UI 変更に強い)
- 📊 ライブ進捗表示 — 各 SNS の投稿状況をリアルタイムで確認
- 🪪 ログイン中アカウント表示 — popup で「いまどのアカウントから投稿されるか」が見える (誤爆防止)
- 🛡️ autoPost トグル — 初期値 OFF。各 SNS の compose ページに本文・添付を入れて投稿ボタン手前で止める "preview" モードが既定 (誤投稿事故防止)
- 📜 投稿履歴 — 直近 20 件をローカルに保存
- 💾 下書き自動保存 — popup を閉じてもテキストは消えない
- ⌨️ Ctrl/Cmd + Enter で投稿
- ⚙️ Mastodon / Misskey インスタンス切り替え — 設定画面から任意のインスタンスを指定可能
- 🩹 Selector hot-fix — SNS の DOM が変わって投稿経路が壊れても、拡張更新を待たずに
selectors.jsonを fetch して当日中に修復可能 - 🐞 障害報告ボタン — popup から redacted DOM snapshot 付きで GitHub Issue を 1 クリック作成 (auto-triage → selector PR まで自動化)
- 🌐 多言語対応 — 日本語 / English (popup / options 両方)
11 ネットワーク対応。実機投稿で安定確認できているものを「Stable」、 adapter 実装は済んでいるが実投稿の動作確認が浅いものを「Experimental」と 区別しています。Experimental は preview (autoPost OFF) での検証から始めるのを推奨。
| ネットワーク | text | image | shortVideo | longVideo | 経路 |
|---|---|---|---|---|---|
| X (旧 Twitter) | ✅ | ✅ | ✅ | ✅ | DOM |
| Bluesky | ✅ | ✅ | ✅ | — | DOM + API |
| Threads | ✅ | ✅ | ✅ | ✅ | DOM |
| Mastodon | ✅ | ✅ | ✅ | ✅ | DOM + API |
| Misskey | ✅ | ✅ | ✅ | ✅ | DOM + API |
| Tumblr | ✅ | ✅ | ✅ | ✅ | DOM |
| Pixiv | — | ✅ | — | — | DOM (multi-step) |
| TikTok | — | — | ✅ | — | DOM (multi-step) |
| YouTube (Shorts) | — | — | ✅ | — | DOM (multi-step) |
| ネットワーク | text | image | shortVideo | longVideo | 経路 |
|---|---|---|---|---|---|
| — | ✅ | ✅ | — | DOM (multi-step) | |
| DeviantArt | — | ✅ | — | — | DOM (multi-step) |
「経路」の意味:
- DOM: SNS の Web 投稿ページを自動操作する経路 (anti-bot 対策の影響を受けやすい)
- DOM + API: Settings で credentials を登録すると公式 API 経路に切り替わる。 API 失敗時は DOM に フォールバックしない (= 明示的に user へ通知)。 credentials を登録しない通常運用では DOM 経路のみ
- multi-step: 複数モーダルの wizard 型 UI 用 (P12 framework
executeMultiStepFlow)
各 SNS の文字数 / サイズ制約 / 検証状態 / 既知の不安定点は docs/platform-matrix.md に一覧。
審査中 (v0.4.57、2026-05 申請)。承認され次第ここに store URL を掲示します。
Releases から最新の zip をダウンロードして:
- 解凍
chrome://extensions/(Brave ならbrave://extensions/)を開く- 「デベロッパーモード」を ON
- 「パッケージ化されていない拡張機能を読み込む」→ 解凍したフォルダを選択
投稿テキスト・画像・動画はユーザーのブラウザ内でのみ処理され、 第三者のサーバーには送信されません。 詳細はプライバシーポリシー。
All Rights Reserved — © 2026 komm64
ソースコードは透明性のため公開していますが、再配布・再利用・改変は許可していません。
このセクションは、コードを読んで動作を確認したい方や、 issue / PR を出してくださる方向けの情報です。
- WXT — Vite ベースの MV3 拡張ビルドツール
- TypeScript (strict +
noUncheckedIndexedAccess) - Svelte 5 (runes)
- Tailwind CSS v4
- Vitest (単体テスト) / Playwright + puppeteer-core (実投稿 E2E)
@ffmpeg/ffmpeg(動画再エンコード、offscreen document 配下)
npm install
npm run dev # Chrome 用 HMR 開発サーバー
npm run dev:firefox # Firefox 用
npm run build # 本番ビルド (.output/chrome-mv3/)
npm run zip # Chrome Web Store 提出用 zip
npm run compile # 型チェック
npm test # 単体テスト (vitest)
npm run test:e2e-api # API 経路の実投稿 E2E (credentials 必要)
npm run e2e # DOM 経路の実投稿 E2E (self-hosted runner 前提)entrypoints/
background.ts - service worker (orchestrator)
popup/ - popup UI (Svelte 5)
options/ - 設定画面 (Svelte 5)
offscreen/ - 動画再エンコード用 offscreen document (ffmpeg.wasm)
inject-helper.content.ts - MAIN-world helper (file input 注入 / drop dispatch)
tumblr-probe.content.ts - Tumblr の page world 状態取得 (MAIN-world)
{x,bluesky,threads,mastodon,misskey,tumblr,pixiv,tiktok,youtube,
instagram,deviantart}.content.ts
- 各 SNS 用 content script
src/
messages.ts - popup/background/content 間のメッセージ型
storage.ts - chrome.storage 集約 API
adapters/ - 各 SNS の metadata・URL・selectors (registry.ts で束ねる)
api/ - 公式 API クライアント (bluesky / mastodon / misskey)
+ Bluesky rich text facets / limits probe
utils/ - 共通ユーティリティ
(split, step-runner, image-resize, post-flow,
selector-overrides, binary-transfer, …)
public/
icon/ - 拡張アイコン
_locales/{ja,en}/messages.json - 翻訳
ffmpeg/ - ffmpeg.wasm core / wasm (postinstall でコピー)
docs/
index.html - GitHub Pages 用プライバシーページ
platform-matrix.md - 11 ネットワークの SoT (制約・検証状態)
selectors.json - selector hot-fix の配信元 (GH Pages)
store-listing.md - Web Store 申請ドラフト
scripts/
e2e/ - 実投稿 E2E (Playwright / puppeteer-core CDP attach)
cws/ - Chrome Web Store Publish API CLI
worker/ - 障害報告 → GitHub Issue 化する CF Workers relay