Xのシェアボタンから他のSNSへ投稿できるブラウザ拡張機能「ShareSwitch」の紹介記事です。
動機
Bluesky, Mastodon, Misskeyなどの新興SNSは、多くのサイトでまだシェアボタンが設置されていません。
特に、大手のお堅いニュースサイトはXとFacebookへのシェアボタンしかありません。
この場合、例えばAddToAnyなどの拡張機能を使えば、シェアボタンがないページでも共有が可能です。
しかし、これらの拡張機能はページのタイトルとURLから共有内容を決定するので、シェアボタンに設定されたテキストをそのまま共有したい場合に不便です。
例えば、AddToAnyでは診断メーカーの診断結果を取得できません。
この問題を解決するため、Xのシェアボタンから他のSNSへ投稿できるブラウザ拡張機能「ShareSwitch」をリリースしました!
https://chromewebstore.google.com/detail/shareswitch/llfcobjpmnnnccbofmkhlfdbefmceloi?hl=ja
仕様
オプション
以下のオプションを設定可能です。
確認ダイアログを開く(ON/OFF)
リダイレクト前に確認ダイアログを表示できます。
共有内容によってXに投稿するかどうかを選びたい人はONにしてください。
デフォルトではONです。
両方開く(ON/OFF)
Xとスイッチ先のSNSを両方開きます。
両方のSNSに投稿したい人はONにしてください。
デフォルトではOFFです。
技術的な話
Manifest V3対応
2022年1月17日以降、ChromeウェブストアではManifest V2拡張機能の新規受付が停止し、Manifest V3(以下MV3)への対応が必須となりました。
MV3では、webRequestBlockingの権限が使用できません。
これにより従来webRequest APIで行なっていたリクエストのブロッキングは機能しなくなり、代わりにdeclarativeNetRequest API(以下DNR)を使用する必要があります。
ShareSwitchでは、リダイレクト前にtext, url, hashtagsのクエリパラメータを結合します。
これはDNRでもregexSubstitutionで正規表現とキャプチャを駆使すればどうにか実装できそうなのですが、柔軟性が低くなかなか面倒です。
このような事情からShareSwitchではDNRを使用せず、代わりにwebNavigation APIでX Intent URLへの移動を検知した場合にタブを更新しています。
今後の予定
やりたいこと
インスタンスの選択
現在のバージョンでは、MastodonとMisskeyはもっとも人気のインスタンスであるmastodon.socialとMisskey.ioのみ選択できます。
これらのインスタンス以外に所属しているユーザーのために、任意のインスタンスを選択できるようにします。
カスタムIntent URL機能
現在のバージョンでは、私があらかじめ指定したSNS以外へのリダイレクトはできません。
カスタムIntent URL機能では、TumblrやLinkedInなどのIntent URLをサポートしているSNSであれば、ユーザーがリダイレクト先を自由に設定できるようになります。
共有ボタン
シェアボタンが存在しないWebページでも、右上のアイコンから共有できるようにします。
FireFox対応
FireFoxに対応します。
できればやりたいこと
モバイル拡張機能への対応
実際のところ、SNSはパソコンよりもスマートフォンから使用することが圧倒的に多いです。
Firefox for AndroidやSafari on iOSなど、一部スマートフォン向けブラウザには拡張機能を提供しているものがあります。
可能であれば、これらに対応したいです。
ただし、懸念点がいくつかあります。
やらないこと
X以外の共有ボタンへの対応
当初はFacebookなど他のシェアボタンへの対応も検討していました。
しかし、他のシェアボタンを設置しているサイトでは多くの場合Xのシェアボタンも置いてあり、対応の必要性を感じなかったため見送りました。
ライセンス
コードはMIT Lisenceで公開しています。
バグ報告や改善要望はこちらのリポジトリのIssueからお願いします。
もしこの拡張機能が気に入った場合は、リポジトリにStarをいただけると大変励みになります!