リンクを複数のソーシャルメディアでシェアする仕組みを持ってなくて、そういう時は個別に投稿している。でも公開範囲とか細かく設定したい時以外はサクッと一発で終わらせた方がクールだ。あと今までほとんど Twitter ではリンクのブックマーク的シェアしていなかったんだけれど、まあ今後はちょっとしてもいいかなと。
ということで仕組み作り。はてなブックマークから Twitter 連携・外部サイト連携するのが国内的王道かな。でも他の人のリンク踏むとブックマーク先に飛んだりブックマークエントリーページに飛んだりっていう体験があってちょっとそういうの嫌だったりする。
代替案としては Facebook を一次投稿先にして IFTTT で他へ流す方法が思いついた。IFTTT 的に quick trigger になるのでタイムラグが無いのが良い。そのかわり非公開以外のリンク投稿について全て trigger してしまうようなのでちょっと怖い。URL・ページタイトル・コメントを IFTTT 側で分けて取れるのでいいんだけどね。
あとは Buffer を一次投稿先にして直接あるいは IFTTT で流す案も検討した。時間をばらしたい人はいいけどそうでない場合はあまり良くない。あとページタイトルは取得してくれない。
ということでやはりリンクの共有としては、はてなブックマークが便利なんだなぁ。PC からでも Android 端末からでもいけるし。なので一次投稿先ははてなブックマークに決定。全体公開ものをここにブックマークしているので、垂れ流れていくのも問題なし。ただ前述した点があるので、実際の連携にははてなブックマークの機能を使わないで、フィードを IFTTT に読ませて撒くことにした。
ただ IFTTT、はてなブックマークにつけたコメント部分をフィードから読みとれない。ということでちょこちょこっと Perl でフィルタを書いた。
#!/usr/bin/perl use warnings; use strict; use CGI; use LWP::UserAgent; use XML::RSS; my $ua = LWP::UserAgent->new; my $response = $ua->get('http://b.hatena.ne.jp/はてなID/rss'); my $rss = XML::RSS->new; $rss->parse($response->content); foreach my $item (@{$rss->{items}}) { my $description = $item->{description}; $item->{title} = $description if defined $description; } my $query = CGI->new; print $query->header('application/xml; charset=utf-8'); print $rss->as_string;
サーバに XML::RSS が入ってたのでそれを使った感じ。IFTTT からは15分に1回ぐらいのアクセスのはずなので、まあこんなもんで。エラー処理も端折り。
はてなブックマークにつけたコメントは IFTTT でエントリのタイトルとしてとれるようになるので、それを使うように。Facebook に投げる場合はページのタイトルは Facebook が自前で取得してくれるので使わないので、フィードではタイトルを上書きしてしまって問題ない。
ページのタイトルを取得しないソーシャルメディア向け(Twitter とか)には
foreach my $item (@{$rss->{items}}) { my $description = $item->{description}; $item->{title} = '“' . $item->{title} . '”'; $item->{title} = $description . ' / ' . $item->{title} if defined $description; }
と、タイトルとコメントをはてなブックマーク書式っぽくしてタイトルに設定してあげる。あとは IFTTT でいい感じに流してもらうと。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。