「ブラウザ履歴で1日を振り返る!」Chrome-Obsidian活用術
こんにちは、日和見くもりと申します。
今日、何をやっていたか思い出せますか?
私は週末に遊びに行った同人イベントでの買い忘れに気付いて凹んでいるところです。朝食べたおにぎりの種類も覚えていないし、このnoteを書き始めたときに何を思って何を調べたかもあんまり思い出せません。
Obsidianを使うようになったきっかけは、やったことを残そう&やることを管理しようというモチベーションでした。
言うてもまあ、何かをするたびにいちいちメモを取るのは面倒だし、まとめて振り返るとそもそも忘れています。
そんなとき、目を付けたのがブラウザの履歴。
インターネットオタクの"活動ログ"といえば、ブラウザ履歴一択!
この記事では、Chromeの履歴を使って1日の行動や学びを自動で記録する方法をご紹介します。
特に、Obsidianと組み合わせて、生活と知識の整理を簡単にすることを目指します。「今日家で何してた……?」の取っ掛かりを作りましょう。
ダイエットの第一歩は食べたものの記録だそうです。ネット依存の解消でも、たぶんそうでしょう。私はあすけんに課金したまま記録をサボり続けましたが、自動化していけるなら、やってやれる気がします。
というわけで、記憶が溶けていくのを何とかしたい自堕落な引きこもり向けのお話です。
💎課題
引きこもりの生活の振り返りと知識の振り返りをしたい
どんな時間の使い方をしていた?
新しく知ったことは何か?
💻この記事で実装したこと
🥰出来ること
Obsidianのデイリーノートに、自分のChromeの閲覧履歴を取りまとめて自動追記する
Windowsのローカルかローカルに同期したGoogleDrive内にobsidianのvaultがある想定
同じGoogleアカウントでログインしている別端末の履歴も分析可能だが、windows上で定期実行する想定
ファイルパスや日付の書式、不要な分析結果の除外など変更可能
😢出来ないこと
Google mapのタイムラインから物理的な移動のログも得る
Google Takeoutでロケーション履歴の全データ取得しか無さそう
毎日振り返るにはデータが重すぎるので断念
生活習慣を自動で整える
記録されたものと向き合う必要はある
🔧使うツール・サービス
Google Chromeの履歴
Python
Obsidian
charts-view プラグイン
❓Obsidian
ざっくり言うとメモ帳とノート管理とタスク管理が合わさったようなアプリ。
notionほど整理に気を遣わず、ファイルをローカル管理できます。ノート間のリンク機能が強いため、行動ログを残すと何かと便利とされています。
本来の思想は、手を使って情報を記入して第二の脳にしていくことなのですが、私は物忘れが激しく面倒くさがりなので自動化ありきで上手くやろうとしています。
charts-viewプラグインは、obsidian上でグラフを作れるプラグインの1つ。
今回は、時間ごとのネットサーフィン量の可視化に使います。
Obsidianはローカルで管理が行なえるので、クラウドに上げようものなら一発BAN確定なエグい性癖のブラウザ履歴などがあっても、気にせず記録を蓄積できます。
これは冗談ではなくマジの注意が必要で、よくObsidianのデバイス間共有に用いられるクラウドサービス(GoogleDrive, iCloud, Github)では、規約上は非公開にしていてもアダルトコンテンツをアップロードできないことになっています。
まあ、画像や動画が対象で、Webページタイトルの文字列群くらいなら許容範囲かな……とは思います。なので一応自己責任で。
本当に心配になったらObsidian syncを使えば、規約上の問題は無さそうです。
ノートアプリは自分しか見ない前提の場所なので、性癖を取り繕うのはやめてポルノに費やした時間やキーワードを可視化してみましょう。
全てに向き合え。
📦できたもの
💪工夫点
最も訪問したドメイン
SNSとかYoutubeが大量にあるのを見て反省するゾーン
閲覧をやめたりバックグラウンドで開いていても、次のブラウジングまでの期間を閲覧時間として計算される場合がある
長すぎる閲覧時間を丸めるようにした
注目したページ
新しく知ったことを再発見する手がかりのゾーン
単に何度も見たり長く見ていたページは、毎日それほど変わるわけではない
頻繁に使うドメインやURLを「注目したページ」から除外した
また、その日以前の履歴に残っていたページは新たに見たページではないと判断して除外した
閲覧時間や回数は少なくても、好きなトピックについては閲覧記録を残したい
キーワードとドメイン指定により重要度を上げる処理をした
また、閲覧時間や回数との重みづけを調整可能にした
キーワード上位10
その日の自分のトピックがわかるゾーン
単なるテキスト集計では区切り記号など意味の無い集計が出る
指示語、記号、alphabet、短すぎる単語を除外した
項目多すぎ
chatgptが作ってくれるから手間度外視で長くなっちゃった
個別に分析をやめられるようにした
🤖ぜんぶchatgpt4 o1-previewがつくった
chatgpt4 o1-previewのコード生成能力が高すぎて、「Chromeの履歴をObsidianで振り返る」というアイデア以外はほぼ全てgptが作成しています。
この企画案だけ渡したら一つのバグも無く実行可能なpythonコードを吐いたときはビビったね……。
私はコードを実行してみてエラー文をまた投げつけたり、明らかにおかしな処理フローの修正を指示したり、新機能の追加を無茶振りしたりするだけでした。
Chromeのhistoryファイルへのパスを始めとして、Chrome立ち上げ中はファイルにロックがかかっているから一時的にコピーするとか、historyはSQLiteで処理できるとか必要なqueryとか、取得したページタイトル群からのキーワード抽出あたりのロジックとか、考えもしてないし目を通してすらいません。
これまで関数の一部のロジックを考えてもらう程度の使い方だったのが、一気に全体丸投げしてもイケるようになりましたね。
数か月前にゲーム作成したときは4oを使って、一発でコードが通ることは無い程度には若干筋が悪かったので、段階を踏んで考えてくれるのこんなに嬉しいのか……と思ってます。
もう少し整理が付いたら、Githubにコードを置いておきます。
Githubの使い方もpythonも未だによく分からないので、変な風になってたらこっそり教えてください。そういう勉強のためにやってる面もあるので、よろしくね……。
おまけ↓