クロスポストの面倒を全部肩代わりする Chrome 拡張
Tutti は 11 のソーシャルネットワーク (X, Bluesky, Threads, Tumblr, Mastodon, Misskey, Pixiv, TikTok, YouTube Shorts, Instagram, DeviantArt) に同じ投稿を 一気に流す Chrome 拡張です。バックエンドを持たず、投稿内容は第三者サーバーを 一切経由しません。
最終更新: 2026-05-15 (v0.4.57)
投稿コンテンツ(テキスト・画像・動画)はいかなる第三者サーバーにも送信しません。
例外(障害報告): popup のエラー表示または診断ボタンから ユーザーが「報告する」ボタンを押した時だけ、以下が開発者の Cloudflare Workers 経由で GitHub Issues に 公開 Issue として 送信されます:
投稿の本文・画像・動画・SNS のログイン情報・API credentials は 送信されません。報告ボタンを押すまで送信は発生しません。
Chrome の storage API でユーザーのブラウザ内にのみ保存します。
chrome.storage.sync): Mastodon / Misskey インスタンス URL、autoPost トグルの ON/OFF、Selector override URL 等。Chrome 同期で他デバイスに複製される場合ありchrome.storage.session): 入力中のテキストおよび添付メディア(画像/動画)。ブラウザ終了で自動消去chrome.storage.local): 投稿先としてチェックした SNS の記憶。投稿後もリセットしない、デバイスローカルのみchrome.storage.local): 各 SNS の現在ログイン中ユーザー名(誤投稿防止のため popup に表示)。デバイスローカルのみchrome.storage.local): 直近 20 件の先頭 80 文字、対象プラットフォーム、成否、タイムスタンプ。デバイスローカルのみchrome.storage.local): ユーザーが Bluesky / Mastodon / Misskey の公式 API 経路を有効にした場合のみ保存される、Bluesky app password または Mastodon / Misskey の access token。デバイスローカル限定で、Chrome Sync には載らず、開発者サーバーにも送信されません。Settings 画面の wizard から登録/解除可能chrome.storage.local): SNS の UI が変わった時に応急処置で使う selector 上書きデータ。ユーザーが Settings で URL を指定した時のみ動作(デフォルトは公式 GitHub Pages の selectors.json)chrome.storage.local): Bluesky 等の動画アップロード上限を API probe した結果のキャッシュ。実値のみ、認証情報を含まないこれらは拡張のアンインストールでいつでも完全削除できます。API credentials は Settings の wizard から個別に削除することもできます。
| 権限 | 用途 |
|---|---|
storage | 上記データのローカル保存 |
offscreen | 動画ファイルが対象 SNS の上限を超える場合、ffmpeg.wasm によりブラウザ内で再エンコード(圧縮)するための offscreen document を生成。動画データはローカル処理のみで外部送信なし |
host_permissions | 各 SNS の投稿ページにアクセス: x.com / twitter.com / bsky.app / bsky.social (Bluesky PDS) / threads.net / threads.com / mastodon.social / misskey.io / tumblr.com / pixiv.net / tiktok.com / youtube.com / instagram.com / deviantart.com |
optional_host_permissions: https://*/* | ユーザーが Mastodon / Misskey の代替インスタンスを設定した際にのみ動的に要求 |
Tutti は対応 11 ネットワークの Web 画面を自動操作(または公式 API 経由で投稿) しますが、これらは公式機能ではなく、各社・運営とは無関係です。 各サービスの利用規約は各サービスのものに従ってください。
GitHub Issues: https://github.com/komm64/tutti/issues
メール: contact@komm64.com
Last updated: 2026-05-15 (v0.4.57)
Post content (text, images, video) is never transmitted to any third-party server.
Exception (error reporting): only when you press the "Report" button in the popup error display or diagnose panel, the following are sent through the developer's Cloudflare Workers relay to GitHub Issues as a public issue:
Your post content, images, video, SNS login data, and API credentials are never included. Nothing is sent until you press the report button.
Stored only inside the user's browser via Chrome's storage API.
chrome.storage.sync): Mastodon / Misskey instance URLs, autoPost toggle, selector override URL, etc. May be replicated to other devices via Chrome Sync.chrome.storage.session): In-progress text and attached media (images / video). Auto-cleared on browser exit.chrome.storage.local): The set of networks you've ticked. Persists after posting, local only.chrome.storage.local): Current account on each SNS (for safety display in popup). Local only.chrome.storage.local): Last 20 entries (first 80 chars of text, target platforms, success flags, timestamps). Local only.chrome.storage.local): If you enable the official API path for Bluesky / Mastodon / Misskey, the corresponding Bluesky app password or Mastodon / Misskey access token is stored. Device-local only — never synced via Chrome Sync, never sent to the developer. You can register or remove credentials per-network from the Settings wizard.chrome.storage.local): Remote-fetched selector overrides used to recover when an SNS UI changes. Defaults to the project's official selectors.json on GitHub Pages; users may change the URL or disable it in Settings.chrome.storage.local): Result of probing Bluesky's video upload limit API. Numeric values only; no credentials.All of the above can be erased at any time by uninstalling the extension. API credentials can also be removed individually from the Settings wizard.
| Permission | Purpose |
|---|---|
storage | Local persistence above |
offscreen | When an attached video exceeds the target SNS's size limit, Tutti re-encodes (compresses) it in-browser via ffmpeg.wasm in an offscreen document. Video data stays local and is never sent off-device. |
host_permissions | Access to the compose pages of each supported network: x.com / twitter.com / bsky.app / bsky.social (Bluesky PDS) / threads.net / threads.com / mastodon.social / misskey.io / tumblr.com / pixiv.net / tiktok.com / youtube.com / instagram.com / deviantart.com |
optional_host_permissions: https://*/* | Requested at runtime only when user configures a custom Mastodon / Misskey instance |
Tutti automates the web UIs of the 11 supported networks (or, optionally, posts via their official APIs), but is not affiliated with any of them. Use of each service is subject to that service's own terms.
GitHub Issues: https://github.com/komm64/tutti/issues
Email: contact@komm64.com