最終更新日:2012/03/03
SafariEverLogger - Safariで一定時間以上開いていたページを全自動でEvernoteに記録するAppleScriptとUserScript
SafariEverLoggerとは
Safariで表示したページをEvernoteに記録する仕組みで、AppleScriptとUserScriptで実現しています。
自分はネットを見ていて良かったと思ったページがあっても、「もう一回見たくなったら検索すればいいじゃん」、ということでほとんどブックマークを取らないのですが、Safariの履歴から無くなった数ヶ月後に、もう一回見ようとして検索に苦労することがあります。
そこで全自動で、履歴を別の何かに残しておいて検索できたらどうかなということで今まで使ったことがないEvernoteを使ってやってみました。
(ブックマークとかWebクリップすればいいじゃん、というのは無しで…)
できること
- 一定時間以上開いていたページを記録
- すぐに閉じたページは記録しません。あとから見たいページは大抵長く見たページなので、履歴のノイズを減らす為に、それなりに表示したページのみを記録した方がいいのでは、ということです。元ネタは「画像を見た回数を記録」です。
- 「見た回数」を記録します
- 「見た回数」が多いほど自分に取って有用なページだと思うので、見ているだけで自然とそのようなページがわかるようになるといいなあ。
- ノートは1日ごと/1時間ごと/ページ毎に作成可能
- 個別とか1時間の方が検索時に絞り込めそうですが、ノート数が多くなります。
- 0.6では個別ノートのみでやってます。
- 記録するのはタイトル、URL、本文の要約
- 検索用に本文の要約を記録します。全部記録してもいいような気がしますが。
- 0.6では個別ページなので要約せず本文全部を記録しています。
- 本文の摘出にはWebページの本文抽出 (nakatani @ cybozu labs)を使用しています。要約はOSの機能を使っています。要約する段落数を指定できます。SafariEverLoggerの中に入っています。
- YouTube、ニコニコ動画対応
- YouTubeとニコニコ動画動画はapiを使って取得した、動画情報とサムネイルを記録します。
- Safari5.0.5を使ってる人はSafariWebView2Pdfをインストールすると表示中のページをPDFで保存可能
- ほとんどの人は5.1以降を使ってると思いますが…。
- 無くても動きます
必要なソフト
- Mac OS X
- 10.6.8で動作確認をしています
- Safari
- バージョン 5.0.5 (6533.21.1)で動作確認しています
- Evernote.app
- バージョン 3.0.6 (221382)で動作確認しています。
- Growl
- エラー等一部情報をGrowlで通知します。
- Safariの拡張のNinjaKit
- UserScriptを実行するのに必要
- SafariEverLoggerHelper.user.js
- SafariからSafariEverLoggerに情報を送るUserScript
- SafariEverLogger
- Evernoteに履歴を追加するAppleScript
- ServiceAppleScriptでできています。
- SafariWebView2Pdf - SafariのアクティブなタブをPDFで保存するSIMBLプラグイン
- 今ではあまり居ないと思いますが、Safari5.0.5を使ってる人はこのSIMBLプラグインをインストールしてあるとWebページのサムネイルを履歴に追加できます。また、PDFで保存もできます。
- 無くてもSafariEverLoggerは動きます。
- ImageOptim
- ImageOptimがアプリケーションフォルダにあれば、ImageOptimの内部にあるoptipngを使って作成されるthumbnail.pngなどを最適化してファイルサイズを小さくします。
- Version 1.3.4のファイル構成で動作確認しています。
使い方
- Safariの拡張のNinjaKitをインストールします。
- SafariEverLoggerHelper.user.jsを開くとNinjaKitがインストールするか確認してくるのでインストールします。
- ツールバーの手裏剣のアイコンをクリックしてNinjaKitの設定を表示してSafariEverLoggerHelperの設定を変更します。
- 必要なパスワードを設定します。デフォルトでは次のAppleScriptで取得できる文字列です。Long User Name + Short User Name
tell application "System Events" to set p to (full name of current user) & (name of current user)
パスワードはWebページから勝手に履歴を追加されないようにする為の念のための仕組みです。
- ユーザー名から作成するデフォルトパスワードで使用する場合SafariEverLoggerは特に設定を変更する必要はありません。
- SafariEverLoggerにその他設定があるのでAppleScriptエディタで開いて、必要に応じて変更して下さい。
- 除外URLはUserScriptかAppleScriptで指定できます。
- 何秒表示したらどのノートブックに保存するかはUserScriptを直接いじって変更して下さい。初期値も含めて、スクリプトを見たら何となく分かると思います。
- Safariでページを開きます。しばらくするとEvernoteに履歴が追加されれば成功です!
- 一回目のSafariEverLoggerの実行時にはこのアプリケーションでURLを開いていいか確認ダイアログが出る場合があります。
- パスワードが違う場合はGrowlで通知されます。正しいパスワードも表示します。
使用上の注意
- JavaScriptがオフだと動きません。
- 本文取得、サムネイル作成、PDF作成などに外部Webサービスは使っていませんので見ているページ情報が外に出ることはありません。AppleScriptでSafariから見ているページのソースやテキストを取得します。EvernoteにはEvernote.appをAppleScriptで操作して記録します。記録したデータが同期されてEvernoteのサーバーに行くことはあります。
- ページ毎に記録するものは同名のページタイトルの記事があれば保存済みとします。URLは別だけど同タイトルの場合は保存済みとなります。
- 画像等UserScriptが動かないものは記録されません。
- 前回記録された時と「表示時間が同じ秒数」の場合、ノート更新処理は実行されません。
仕様
- ノートのsubject dateに「見た回数」を更新した時間を記録します。「見た回数」は一定時間以内に同じページを見た場合、更新されません。「見た時間」が長くなった場合は長い時間に更新されます。
- 「見た時間」は「見た回数」には影響しません。長く見ても、短く見ても1回になります。
- 「見た時間」は見た中での最大時間です。長く見た後に短く見ても「見た時間」が短くなることはありません。
- ほぼ同じ意味のlongViewとviewSec50があるのはSecの数字は60とかに変わるかもしれないけど、longViewを検索条件等に使うと、数字が変わった時でもそのまま使えるからです。
- SafariEverLoggerがノートを作成、更新した後にoptipngでサムネイルのpngを最適化します。手動でノートを編集した場合などには最適化されません。
検索例
- 1回だけ長く見たことがあるページを検索
- 2回以上見たことがあるページを検索
- 2回以上見たことがあり、長く見たこともあるページを検索
- 2回以上見たことがある動画を検索
スクリーンショット
- Ver.0.6.0(画像クリックで拡大)
- 履歴
- サムネイル付き履歴
-
- PDF履歴
-
- 動画履歴
コメント
数日使ってますが、「見た回数」を記録するようにしたのがいい気がします。iTunesでも「再生回数」をいろいろ参考にしてますが、この何かした回数を数えるというのはいろいろなところで使えるような気がします。
できれば、見た時間ごとに見た回数をカウントしたいのですが、いい方法が見当たりませんでした。なんかあるかなあ。
あと、ページが違うけどタイトルが同じケースもなんとかしたいかなあ。
数日使って記録されるページ数は5日で250ページほどでした。一日50ページぐらいです。データサイズをサムネイル込みで1ページ60KByteとすると、一日3000KByte=約3MB、1年で3MB*365=1095=約1GBとデータサイズ的にはほとんど気にせず使えるかな?ここ数日調べものをしてなかったけど、いろいろ調べたらもっとページが増える日はありそうです。
しかし、SafariEverLoggerで記録されるデータはこのぐらいなんですが、Evernoteが自動作成するサムネイルのpngで結構でかくて300KByteぐらいあります。このデータサイズが一日300KByte*50=15MByte、1年で5475MByte=5.4GByteと結構でかいです。そこでちょっとでも小さくしようとoptipngで最適化するようにしてみました。2割ぐらい小さくなるようです。年間1GByteぐらい節約できるかな。ついでなんでjpgもjpegoptimで最適化するようにしておきました。
ちなみにEvernoteの最大ノート数は10万らしいので一日50ページだと2000日で到達ですね。2年後ぐらいにまだ使ってたら、「見た回数」が1、「見た時間」が短くて、最後に見たのが1年以上前とかのすごい昔のページを削除して掃除すればいいかな。
保存の仕方を大幅に変えました。前回の方法だと同じページが何度も記録されることになり、検索時に無駄が多いので、URL毎(ページタイトル毎)にノートを作るようにしました。
1095
あと、前回の記録では今ひとつ便利に感じなかったので、「見た回数」も記録するようにしました。Evernoteで数値を記録するいい方法がわからなかったので、タグで最大5回まで記録します(最大数は変更可能です)。2回以上見たページはたぶん自分に取って重要なページだと思うから、自動的にそういうページがわかるようになることに期待です(1時間ぐらい以内に再度ページを表示した場合は見た回数は増えません。なので、リンク先に行って、戻ってきたら見た回数がすぐ増えるということはありません)。
保存するデータもpdfはWebページをそのまま記録できていいのですが、データサイズが大きくて気になるので止めました。気軽に保存するということで、検索用に本文を要約しないで全部保存することにしました。サムネイルと合わせて、1ページのサイズは30KByteぐらいからとなります。サムネイルが無いともっと小さいかな。完全版を見たくなったらブラウザで表示するということになります。その際、見た回数も更新されるので、これはこれでいいかもしれません。まあ、たまにページが無くなって見れなくなっていることもありますけど。
本当は見た回数を秒数ごとで制限無く全部記録して回数順でソートしてみたかったのですが、いい記録方法が思いつきませんでした。
0.5.0
Evernote初心者のなので基本的なところで無駄なことをしているかもしれません。
とりあえず動くようになりましたが、どのタイミングで記録するかの設定については、調整中です。PDFはデータサイズが大きいので止めるかもしれません。
また、記録したデータが役に立つかは数ヶ月後にならないとわからないですね。ちゃんと出番が来るのでしょうか。
SafariWebView2Pdfを使いましたが、Safari5.1でも使える同じようなソフトって無いのかなあ。Safari標準の機能で欲しいですね。サムネイルが有ると無しでは印象がかなり違います。
履歴の配色等のデザインは各自調整して下さい。
処理の重さはほとんど気にならないかな?
ダウンロード
- SafariEverLogger0.6.1.zip
- 記録の更新中にタブやウインドウを閉じた時にテキストが消えないようにした。
- thumbnail.pngなどをoptipngで最適化するようにした。
- コメント 0.6.1もご覧下さい。
- SafariEverLogger0.6.0.zip
- コメント 0.6.0をご覧下さい。
- スクリーンショットをご覧下さい。
- SafariEverLogger0.5.0.zip
- 一段落ついた