Libing

Libing用のSafari拡張的な他アプリ連携ブックマークレットの作り方


ver. 6.2.0 - 無料( ユーティリティ )
Nobuo Saito

(2014-11-27修正)

Safari拡張なんかに負けない!

iOS8になってSafariの拡張機能が作成できるようになり、「Safariで開いているページを受け取る」機能を多くのアプリが実装しています。

また、私のiPhoneでのメインブラウザであるLibingからも、Safari拡張が利用できるようになっています。

これで、昔ながらのブックマークレットによる連携は不要になったかにも思われますが、動かないやつあるしブックマークレットとして登録しておくとスワイプジェスチャで起動できて大変素晴らしいので、Safari拡張的なブックマークレットの作り方をまとめてみます。

今回は、Todoistとの連携を例にします。

ブックマークレットの基本

Libingのブックマークに以下のようなURLを登録すると、ブックマークを叩くことでTodoistを呼び出すことができます。

todoist://

また、javascriptも利用できます。

1
javascript:location.href="todoist://"

シェアアクション(Libing独自スキーム)

Libingにはいくつかのシェアアクションが用意されており、シェイクメニューから閲覧中のページをシェアすることができます。

これらのシェアアクションは、LibingのURLスキームから呼び出すことができます。

libing://share シェア
┣ text=[テキスト]を与えることで、定型文を設定出来ます。
┣ 定型文内の%URL%はURL、%title%はタイトルで置換されます。
┣ %URL%がない場合、強制的にURLが付加されます。
┣ plain=YESを与えることで、URLやタイトルの置換、付加が行われなくなります。
┣ パスを与えることで、メニューをスキップし、任意のアクションを起動出来ます。
┣ libing://share/mail
┣ libing://share/message
┣ libing://share/twitter
┣ libing://share/facebook
┗ libing://share/copy

これは以前ネタにしました。

ここでは、%URL%%title%という変数が利用できます。

JavaScript

シェアアクションにないアプリ・サービスと連携する場合、上記のようにURLスキームを利用することもできますが、この場合%URL%%title%の展開ができません。

そのため、JavaScriptを利用して閲覧中ページの情報を取得し、URLを生成します。

TodoistのURLスキームについては、以下を参考にしました。

以下のようなスクリプトを登録すると、閲覧中のページをリンク形式で登録することができます。場合によっては、期日等を加えてもよいでしょう。

1
javascript:location.href="todoist://addtask?content="+escape(document.URL)+" ("+encodeURIComponent(document.title)+")"

タイトル・URLに=などが含まれる場合、正常にTodoistに渡すことができなくなるため、escapeを用いてURLエンコードします。同様に、文字化けを防ぐためにencodeURIComponentを用います。

例えばhttp://google.comの場合、以下のようなテキストがTodoistに渡されます。

http://google.com (Google)

Todoistのリンク記法を利用することで、アプリ上の表示でURLを隠すことができます。

なお、x-callback-url対応のアプリと連携する場合、以下のようにするとすぐLibingに戻ってくることができます。(EverClipの例)

javascript:location.href="everclip://x-callback-url/article?url="+document.URL+"&x-success=libing:"

ブックマーク登録用リンク

さらに、これを簡単にLibingに登録できるようにします。

Libingにブックマークを登録するための独自スキームとして、以下のふたつがあります。

libing://bookmark?locate=[URL]&title=[タイトル]
libing://install?name=[タイトル]&code=[URL]&cmds=[スワイプジェスチャ]

installだとスワイプジェスチャも指定できるため、基本的にこちらを利用すべきでしょう。cmdsの指定は←↓↑→の組み合わせ(:::区切りで複数指定)で行います。

上記のスクリプトの場合、以下のようになります。各クエリの内容はURLエンコードします。

libing://install?name=Todoist&code=javascript%3Alocation.href%3D%22todoist%3A%2F%2Faddtask%3Fcontent%3D%22%2Bescape%28document.URL%29%2B%22%20%28%22%2BencodeURIComponent%28document.title%29%2B%22%29%22&cmds=%E2%86%90%E2%86%93%E2%86%91%E2%86%92

ここをタップすると実際に登録されます

リンクをタップすると、Libingでブックマーク登録画面が開き、そのままサブフォルダ、ジェスチャ等の設定ができます。Libing以外のブラウザでも大丈夫です。

これを利用すると、ブックマークレットを簡単にシェアできるのでみんな使いましょう。

LibingからPushbulletにリンクを送るブックマークレット


ver. 6.2.0 - 無料( ユーティリティ )
Nobuo Saito

ver. 1.4 - 無料( 仕事効率化 )
Pushbullet

Libingで読んでいるページをPCで読みたい場合などに。

Pocketでもなんでもいいっちゃいいのですが、Pushbulletの場合、PC(Chrome)側で勝手にページが開くのが気持ちいい。

1
javascript:location.href="pushbullet://compose?type=link&title="+encodeURIComponent(document.title)+"&url="+escape(document.URL)

文字化けやエラーを防ぐため、escapeencodeURIComponentでURLエンコードします。

これで、タイトルとURLがセットされた状態でPushbulletが起動します。タッチジェスチャーで実行できるのが最高としか言えない。

参考

Libingからノートブック&タグ指定でEvernoteにメール投稿するブックマークレットはこれでよかった

(はてなブログからの移行記事です。正常に表示されていない場合、ご連絡いただけると助かります。)


ver. 5.3.0 - 無料( ユーティリティ )
Nobuo Saito

Libing以外で動作確認してないです。

javascript:location.href="mailto:(Evernote投稿メールアドレス)?subject="+document.title+" @(ノートブック名) #(タグ)&body="+document.URL

フツーにスペースとか@とか入れていいとは思わず、URLエンコードしてハマったりしてました。

なんのために書いたのか?

動作が怪しいらしいQuickEver Clipの代用です。いや、EverClipでいいだろって話はあるのですが。


ver. 2.1.3 - ¥1,000( 仕事効率化 )
Ignition Soft Limited

「選択してコピー→ジェスチャでブックマークレット起動+本文にペースト」の流れで、画像を含むクリップを比較的楽に取ることができます。

でも本当は、URLの後に改行が入った方がいい。x-callback-urlでTextwellに送ってnextActionでEmailアクションを起動してやればよさそうですが、めんどくさかった。あんまりアプリ間移動すると、目がチカチカしますしね。

Libingについて補足

ボタン類のないフルスクリーン表示、それを補うタッチジェスチャ、安価(100円)かつ強力な広告ブロック機能、自由過ぎるURLスキーム&ブックマークレットが特長のブラウザ。

現在のメインブラウザになってます。クリップボード監視によるURLオープン機能もあるし、他アプリからURL投げる先としては理想的じゃないでしょうか。

下記の記事にあるように、任意のタイミングで元アプリに戻れるのが気持ちいい。Seeqからも行ったり来たりしてます。

白牙隊A2屯所: Sylfeedのsendto機能からLibingを外部ブラウザ化するx-callback-url