🗒️

ブログカードを自作する方法について色々調べた

2020/09/20に公開

今回の記事は経緯と調査まで。
実装はこちらの記事へ
https://zenn.dev/junki555/articles/a4902e7f66547c91d812


ブログカードを作りたい

はてブ とかWordPressのモダンなテーマとかだと外部リンクをカード表示にしてくれる。
最近のブログサービスにはよくある機能だ。
undefined.jpg
↑こういうの。
これは画像です。が、クリックしたくなるでしょ?

カード表示にしてくれるサービスを使えばいいんだけど、
諸事情あって自作することになったので色々調べた

いろんなブログカード

なるほど、はてブのブログカードをiframeで出すという強引な技(?)から
embed.ly や EMBED BOOKMARKLET といった
ブログカード的なものを生成してくれるサービスがあるのか。
ただ、外部サービスを使うのはサイトのコードが汚くなるし
何よりパフォーマンスがイマイチだな〜

というわけで自作することにした

最終的にはリンクを貼り付けた時に
そのアドレスにリクエストを送って得られたDOMを解析して……とかやればいいんだけど
フロント側からXMLHTTPRequestでやろうとするとCORSでつまづきそうなので
まずはブックマークレットとしてリンク先で実行すれば
ブログカードとして貼り付けられるDOMを生成、
そのDOMに対するCSSはサイト側にもつ、という構成にしよう

つくるブックマークレットのイメージ

  • リンク先側のDOMを解析
    • タイトル、ブログカードに表示したい文言を取得
    • 表示しているURLを取得
    • 標準URL(canonical link)がヘッダに指定されていればそれを取得
    • ブログカードに表示したい画像をDOMから取得
  • ブログカードに表示したい画像を縮小、base64に変換
    • 画像を直リンクするのは嫌
    • かといって都度こちらのサービスにアップロードするのも嫌
    • なのでbase64エンコードして構築するDOMに埋め込んじゃおう
  • ブログカードに表示したいものを詰め込んだDOMを生成
  • クリップボードにコピー

こんな感じでいいだろう。

つくるブックマークレットの参考になりそうなサイト


今回はここまで。

Discussion