はてなブックマークでブックマーク時に同時にFacebookのタイムラインにも投稿する機能は、はてなブックマークにもともとあった機能だったのですが、先日、FacebookのAPI変更を理由に削除されてしまいました。
ブックマーク時に、Facebookへシェアする機能を終了します – はてなブックマーク開発ブログ
平素よりはてなブックマークをご利用いただきありがとうございます。
はてなブックマークでは2018年7月26日(木)をもって、ブックマークを追加・編集した際に、Facebookにもシェアする機能を終了します。 iOS・Androidアプリでは終了に先立ち、7月17日(火)ごろに当該機能を廃止したバージョンをリリースする予定です。
これはFacebookが提供するAPIの終了*1によるものです。ご利用いただいている皆様にはご不便をおかけいたしますが、ご了承いただきますようお願い申し上げます。
はてなのこの辺の諦めってなんつうか、ほんと信頼感ないよなあ。
どの程度無理なのか精査してないから「本当に無理」なのかも知れないけど、でもユーザーとしては何とかして欲しい。仕様変わったんでこっちも追随しましたって言って欲しい。そういうことを言ってから技術の会社っていって欲しい。まあもう今のはてなには無理なんだけど。
というわけで、まあ、なんとかしてみました。技術で何とかしたわけじゃ全然ないけど、工夫すればなんとかなるんじゃねえのっていうサンプルとして生暖かく見てもらえれば。
結論:IFTTTを使う
最初から一択でしたけど、RSSを読み込んでFacebookのタイムラインに投稿するってことをIFTTでやります。はてなブックマークのRSSはこちら(僕の場合)。
http://b.hatena.ne.jp/nobodyplace/rss
これをIFTTTに読み込ませるわけですが、このままだと1つ問題があります。
タグが反映出来ない。
タグをブックマークコメントに付記する
というわけで、タグを抽出して「#」つけてブックマークコメントの最後に追加するって言う処理を行いました。といってもすべてのブックマークを対象にするのではなく、「!F」というタグが付けられたブックマークのみがRSSとして書き出されます。Facebookでシェアしたいときだけ、「!F」というタグを付与してください。http://rss.nplll.com/hb/nobodyplace
「nobodyplace」の部分を自分のはてなIDに変えれば、誰でも使えるようになっています。
これをIFTTTに読み込ませて、Facebookにリンクポストとして投げるように設定します。
「Link URL」には「EntryUrl」を「Message」には「EntryContent」を設定。
これで完成です。
でっち上げ感がひどいですが、今のところちゃんと動いているようです。
注意
- タグをブックマークコメントに追加するやつですが、キャッシュ周りの設定がどこかで上手く行ってなくて最大20分程度のラグがあります。自分とこのサーバで久々に書いたので、すみません設定忘れました。お急ぎでない方のみお使いください。
- 負荷上昇などの理由により特に予告なく停止する場合があります。あらかじめご了承ください。
- 「*」など記号で始まるタグはFacebookではタグとして認識されません。削除しようかなと一瞬思いましたが、まあ、ありのままでポストする方がいいかなと思ってそのままにしてます。
追記
2018/07/27 追記
すべてのブックマークをFacebookでシェアしてしまうのはちょっと面倒ですね。IFTTT用のRSSを書き出すにあたって、「特定のタグがついた記事のみ」という条件を次の更新で付与したいと思います。今のところ「特定のタグ」は「!F」になる予定