七色七音

「いつも」と「今日」は別の日だから……

OGPのprefixは「og: http://ogp.me/ns#」だけで良いんじゃねぇの?的な

ちょっと信頼性がないネタ(自分がそう思うと言うだけの話)なので雑記扱いで。誰か詳しい情報知ってたら教えて。

諸事情でHugoとか弄ってまして、まぁその関係でOGPを設定する際に何を<head>に入れりゃええんや?みたいなの調べてた時に思った事。いやHugoの件は関係ないな、前から思ってた。

headとかhtmlにprefixって属性でog: http://ogp.me/ns#って設定するじゃないですか?このhttp://ogp.me/nsってアクセスした事あります?まぁOGPの規格ページに飛ばされるんですけど、要は、規格読んだことあります?

これ見れば分かるんですけど、article: http://ogp.me/ns/article#とかwebsite: http://ogp.me/ns/website#が必須なんてどこにも書いてないんですよね

というかページ開いて一番最初に出て来るサンプルがog: http://ogp.me/ns#しか設定してない。実際、その規格ページもog: http://ogp.me/ns#しか設定されていない(og:typeはwebsite)

この辺Xamarinとか触った事あったらなんとなく理解できると思うんですけど、og: http://ogp.me/ns#ってのは「og:」で始まるmetaを設定する時に必要なんじゃない?と、必須系のタグは全部og:始まりだよね、og:titleとか(Xamarin知らない人は「xml namespace uri」とかでググれば言いたい事が伝わるはず)

なので、articleから始まる奴(article:tagとかarticle:authorとか)を使いたい場合はog:typeにarticleを設定したうえで、prefixにarticle: http://ogp.me/ns/article#を追加する必要がある。逆に言えばそれを使わないなら設定しなくてもいい(設定しないままog:typeにarticleを指定してもvalidな)はず?

もっと分かりやすく言えば、「fb:app_id」を使ってるならfb: http://ogp.me/ns/fb#を設定しないといけない。使ってないなら要らない(どうでも良いけど、俺はFB使わないので垢消した)

面白い例だと人力検索はてなとかだとprefixにはhatenaquestion: http://ogp.me/ns/fb/hatenaquestion#が設定されており、og:typeは「hatenaquestion:question」になっている。この辺考慮せずに雑に作られてるOGPパーサーに食わせたらエラー吐くと思う。

もっと言えば、neko: http://ogp.me/ns#って設定して、neko:titleとかneko:descriptionとかってしても、たぶんvalidなんじゃないかな?と。(各サービスのOGPパーサーがその辺までしっかり見てるかは知らん)

まぁ何が言いたいかというと、articleとか使わないならarticle: http://ogp.me/ns/article#は要らないと思うし、その辺脳死でググって出た情報を検討もせずにコピペしてるサイト実は腐るほどあるんじゃねぇの、みたいな。(まぁ僕が間違ってる可能性もある)

そういう事なので、僕が管理するサイトは全部og: http://ogp.me/ns#しか設定していないが特に問題ない。各サービス側のOGP読み取るプログラムがいい感じにしてくれているだけかも知れないが(もしくはその辺ハードコーディングされてて一切見てない)

og:typeはif(トップページ)で変わるんやぞ、という余談

ああ、あと、og:typeはトップページがwebsite、それ以外の記事がarticleらしい(実際それで正しいかは知らん)。blog?そんなものはとっくの昔に廃止されてるよ

なのでブログエンジンとかその辺りの機能を使って、トップページか否かで振り分けしなきゃいけないんすよ。例えばクソWordPressならこう。

<meta property="og:type" content="<?=is_front_page() ? 'website' : 'article'?>">

まぁ、なんかその辺、世の中って曖昧に動いてるよネ。的な