memo

つぶやきメモ

たこつぼくらぶの管理人・おくとの個人的なつぶやきやメモ

ピン止め 下書き 一覧外 パスワード限定 パスワード入力済
2023/12/25 19:01
インスタンスを入力してMisskey・Mastodonサーバーに共有する(てがろぐの本文とURL)

こちらの記事を参考に、Misskey・Mastodon系サーバーに共有リンクを作成します。
SNS・Fediverseの投稿インテントURL

こういう感じ。簡単なHTMLで記述しているので、適当に装飾してください。
共有フォームのサンプル

コピペ用

```html
<label for="SNSshareBTN">https://</label>
<input type="text" id="SNSshareBTN" placeholder="mstdn.jp">
<button onclick="SNSshareLINK()">share</button>

<script>
  function SNSshareLINK() {
    // inputからテキストを取得
    var inputText = document.getElementById('SNSshareBTN').value;

    // テキストが入力されている場合のみリンクを生成
    if (inputText) {
      // リンクの生成
      var link = document.createElement('a');
      link.href = 'https://' + inputText + '/share?url=[[PARMAURL:FULL]]&text=[[COMMENT:TITLE:120:...]]';
      link.target = '_blank';  // 新しいタブまたはウィンドウで開く
      link.rel = 'noopener noreferrer';  // セキュリティ対策

      link.click(); // リンクをクリックするとジャンプ

    } else {
      // テキストが入力されていない場合はエラーメッセージを表示
      alert('共有したいサーバー(インスタンス)のドメインを入力してください');
    }
  }
</script>
```

**解説**

`<input type="text" id="SNSshareBTN" placeholder="mstdn.jp">`で入力フォームを作り、そこに入力されたサーバーへ共有するようにします。

例として`placeholder="mstdn.jp"`を入れていますが、好きなサーバーをvalueとして入れていてもいいと思います。

ここで重要なことは、「https://」を除いたドメイン名を入力してもらう必要があることです。
これはほとんどのサードパーティアプリがそうしているため、
fediverseサーバーで「ドメインを指定」といえば「https://」を除いたドメイン名であるという
共通理解があります(特にわざわざ共有したいと思うような人々は。)
よって「https://」を除いたドメイン名を入力してもらうような導線が必要なので、こうしています。

ラベルは何でもいいんですが、上記の理由で「https://」を除いたドメイン名を入力してもらうような導線としてこのようにしています。

スクリプトの
`link.href = 'https://' + inputText + '/share?url=[[PARMAURL:FULL]]&text=[[COMMENT:TITLE:120:...]]';`
の部分なのですが、
ハッシュタグを含めるとurlのパラメーターも巻き込んで出力が途中で切れるという問題があり、
その解消のためにurlのパラメーターを先に、textのパラメーターを後にしています。
この場合でも、投稿フォーム自体にはtext,urlの順に出力されます。


確認
Mastodon系:mstdn.jp fedibird
Misskey系:りんごぱい(最新版追従のサーバー)
バニラFireFish(v1.0.5-rc)で動いている自鯖でも確認しています。
なのでMisskeyのVer12以上のフォークなら(わざわざこの機能を消していないなら)動くと思いますが、v11以下のフォークはアカウントがないのでちょっとわかりません。

Akkoma(3.10.4)の場合、Pleroma FE、Soapboxでは動きませんでした。
(サーバーにはジャンプするけどそこで投稿フォームが開けない)
ManganeだとMisskeyやMastodonと同じように動きました。フロントエンドの問題?
この3つを導入しているインスタンスに登録しているので検証しましたが、そのほかのFEでは動作するかわかりません。

備考
このフォームではサーバーを覚えないので、閲覧者に毎回入力してもらう必要があります。
このためにもっと長いコードを書くことが現実的なのかわかりません。どうせすべてのfediverseサーバーには対応してないし。
多分サードパーティアプリを入れて端末の共有シートとかから共有するほうが現実的なように思います。

Misskeyだけに共有するならhttps://misskey-hub.net/ja/tools/share-l... が一番いいです。公式だし、サーバーを覚えてくれるので。
Mastodon系ならMastoshare があります。

え?ていうかMastoshareでよくないですが? すごくないですかこれ?自分好みのインスタンスを登録できるし、Misskeyも共有できたし。
Mastoshareがいいです。みなさんMastoshareを使ってみてください。

以上。
カテゴリー:メモ
タグ: