NotionでChoromeの履歴を管理する

ざっくり

Notion APIとChrome 拡張機能を利用することによって、その日に訪れたサイトをNotionに流し込むプログラムを作成した。

イントロ

指導教官の言葉に、「生産性を上げる」というものがある。『イシューから始めよ』の定義によれば、生産性とは「アウトプット÷インプット」という風に定義されている。 本の趣旨はこの値を上げることであり、それを正確に把握することではないのだが、興味半分で”生産性のトラッキング”ということをやってみようと考えた。 日々のインプットの中にはブラウザの閲覧履歴が含まれている。それを無料のWikiツールであるNotionにスタックさせることで、どれだけあるプロジェクトのためにネットの海から情報をインプットしたのかが分かる。

方法

開発に用いたツールは2つ。1つがChrome 拡張機能で、もう1つがNotion APIだ。これらの詳細はMemexに譲るとして、実装方法を見ていこう。まずはどこからイベントを受け取るのかだ。なお、JavaScriptを普段書くことはそんなに無いので、もう少しスマートな実装があると思う。

⓪Chrome拡張機能に関する補足

Chrome拡張機能に馴染みのない方もいらっしゃると思うので、Chrome拡張機能について説明する。既に知識を持っている方々は①に飛ばしていただきたい。 Chrome拡張は一般的なWebアプリケーションのように、複数のファイルから構成される。最低限必要なのが、manifest.jsonというファイルである。
プロジェクトの名前や権限、実行するスクリプトを記述する。 content_scriptsはユーザーにUIを提供する、いわゆるフロントエンドのJSを、backgroundは演算処理やapiなどを叩く文字通りバックエンドのJSファイルを指定する。 Webアプリケーションに馴染みのある方ならスッと理解できると思われる。(Web系ど素人の筆者でもググったらどうにかなったので、分からない方は検索することをオススメする。)

参考図 各stepと叩いているAPIの種類

①Notion APIで何日までのDiaryを作成したか取得

私のNotion Diaryはこのようになっており、年月日という形で、Databaseに1日ごとのページが格納されている。このリストにない日付はまだ作成されていないということなので、最初に何日までのDiaryが作成されたかをこのアプリケーションは取得するようにしている。

②作成されていない部分のChrome履歴を取得する。

何日までのDiaryが作成されたか分かったところで、次はChrome拡張を起動した日までの間で作成されていない日付のChrome履歴を取得する。例えば、Chrome拡張が3/4に起動されて、作られたDiaryが3/2までだったとしたら、3/3と3/4分のChrome履歴を取得することになる。

③その日分の記事を作成し、タイトルをyyyymmddにする。

Chromeで履歴が取得できたら、ここから先はNotionにそれを流し込んでいくだけだ。と言っても、流し込むページやDatabaseが存在していなかったら不可能なことなので、まずはページを作成する。ParentをDiaryのDatabaseとしたページをNotion Apiで作成し、わかりやすいようにタイトルをyyyymmddにしておく。

④各ページにテンプレートブロックを配置する。

このDiaryはあくまでも生産性管理の一貫なので、このようにテンプレートとなるものはAPIによって自動で配置されるようにしている。

⑤Webデータベースをページの子要素として配置する。

④内の画像に生成さているブロックで、唯一WebリストというDatabaseはAppend block Childrenによって生成することができない。なぜならば、Databaseはブロックではなく、一つのページという扱いだからだ。そこで、再度Create Pageを行う。なお、今回のParentは③で作成したDiary Pageだ。

⑥取得したChrome履歴をWebデータベースに流し込む。

ここで、ようやくChrome履歴をNotionにInputしていく。⑤で作成したWeb Databaseの子ページして、タイトルは閲覧履歴のタイトル、プロパティのURLは閲覧履歴のURLという設定でひたすらページを生成していく。

結果

上記の手法で、その日のInputとOutputを1ページで行うことが可能になった。なお、期待値を下回った部分として、Diaryページの子ページであるWebリストが、APIからはデフォルトでインライン表示にできないという点がある。

意味合い

試運転期間を含めると、この特殊なDiaryを2.5ヶ月の間つけてみている。作成当初はそこまで役立たないかも..と思っていたが、意外と1日ごとにアウトプットに偏ったり、インプットに偏ったりすることが分かる。どちらかに傾くトレンドが長く続くと、生産性は大きく下がるということに気づいた。(当たり前だが、アウトプットしかしないと新しいアイデアが枯渇し、インプットしかしないと頭でっかちになる)。Webデータベースの効果は絶大で、その日に何気なく見ていた記事を改めて見ると、新しい発見を生み出してくれる。また、プロジェクトのために洗ったデータが大型残るので、このようなブログを執筆するときに、自分の参考資料が分かりやすい。

終わりに

「生産性をトラッキングする」という問に対して、自分の中ではなかなか良い答えが出せたと思う。ただ、これだけだと日付ベースで、当初の目的であるプロジェクトベースにならないので、このようなBlogの参考資料を以ってプロジェクトベースのInput総覧としたい。(残念だが、Diary機能を作っている最中にChrome拡張とNotion APIについていろいろ調べあげたので、Amaurotにそれらの検索データは入っていない..)

参照

©️2023 Y.A.