Hidehisa YASUDA
nebosuker.net
Hidehisa YASUDA
@nebosuker.net
よし。一応大丈夫っぽい。

サイト上のボタン押したあとのcompose画面で改行が反映されてないのは、とりあえず末尾に空白入れることで対処

ちなみにURLは直前の文字が改行だとカードの処理がトリガーされないので、URLの前に空白入れなきゃダメだった
January 30, 2025 at 3:52 AM
でもこれだとcomposeの画面で改行が反映されないという問題が(最終的な投稿には反映される)。あと2ミリぐらい美しくない状態。むー
January 30, 2025 at 3:48 AM
なんか勘違いしてた。<br>入れちゃダメで\nだ
January 30, 2025 at 3:45 AM
と思ったらそのとおり実装済みだった
January 30, 2025 at 3:34 AM
CMS側の処理としては「HTMLタグをstrip」「改行をbrに置換」「URLエンコードする」でいいのか。入れるURLがすでにURLエンコードされてたら変になりそうだけど、自サイト内のURLならまぁ大丈夫か
January 30, 2025 at 3:28 AM
テスト用URL:
bsky.app/intent/compo... 「\n改行→%0A」 「\r改行→%0D」 「URLエンコードしてないbr→
」 「URLエンコードしたbr→%3Cbr>」 「brの開きltをアンパサンドURLエンコードした文字実体参照→%26lt;br>」 「pにテキスト→

もげ

」 「strong→もげ」 URLを記載→ https%3A%2F%2Fwebtan.impress.co.jp%2F%0D%0A%23web担%0D%0A
https://bsky.app/intent/compose?text=テストです「\r\n改行→%0D%0A」
January 30, 2025 at 3:28 AM
使い物になったポイント:
・text内にURLがあると、ユーザーが何もしなくてもURL添付がトリガーされるようになった
・text内の<br>が改行として反映されるようになった(\rや\nじゃダメ)
・text内に<p>があると有効になる(前後に文字がある場合は「前の文字</p><p>入れたp</p><p>後の文字」みたいにちゃんとpを切ってくれる
・text内の他のHTMLタグは消える(strongしかチェックしてない、細かいProseMirrorの設定までは見てない)
・<br>とか<p>を表示したい場合は文字実体参照「&lt;」だけどURL query内なので「%26lt;」としておく
January 30, 2025 at 3:19 AM
おー、intent/composeが使い物になってる!
これでサイトに「Blueskyに投稿」ボタンを実装できるようになった
https://bsky.app/intent/compose?text=テストです「\r\n改行→%0D%0A」
January 30, 2025 at 3:19 AM