最近Lobstersでhisterという検索エンジンを見つけた。 過去にLobstersについても書いているのでぜひ。
Histerは検索エンジンとは言うものの、一般的なWebサイトの検索エンジンではなく、ブラウザで見たページとかテキストファイルをインデックスするタイプの検索エンジンとなっている。
3行まとめ
- Histerローカルで動く検索エンジン
- ブラウザのタグやファイルをインデックスできる
- 過去に開いたタブを検索でき、AI経由でも検索をかけられて便利
含まれている機能
大体以下の機能が含まれている。
- ページインデックス機能 サイトに応じたインデックスをやってくれる。例えばGitHubならStarとかもインデックスされる。
- ファイルインポート機能 テキストファイルを取り込んでインデックスしてくれる。
- クロール機能 定期的にwebサイトをクロールしてインデックスしてくれる。 ドキュメントサイトとかを手元で検索にかけられる。
- API機能 機能というかは怪しいけど、APIがあるためお使いのテキストエディタから検索をかけられる。
- web UI 有効化する必要があるけどwebUIも付属している。ブラウザから使うならこれが便利。
何が嬉しいのか
拡張機能を使って、開いたWebページをインデックスできる。 ブラウザはChromeとFirefoxをサポートしている。
僕はブラウザのタブを開きっぱなしにしてたらいつの間にか100タブ越えてメモリがカツカツになる…とか結構やりがちなので、気付いた時にタブを閉じている。
そもそもタブを開きっぱなしにしたい理由は開いているwebサイトをすぐに見返せるようにするためで、histerを使えば開いたサイトを全文検索で引っ張り出せるからそもそもタブを開き続ける理由がなくなる。
つまり、開いたサイトを常にhisterにインデックスし続ければ、後はタブを一週間とか三日とか適当なタイミングで自動で閉じるようにしても問題がなく、そもそもタブ管理をする必要がなくなる。 この点が個人的に嬉しいなと思っている。
あとブラウザのタブをインデックするという特性から、ChatGPTとかの会話履歴もインデックスされる。 「前聞いたあれなんだっけ」みたいな時もHister経由で該当のセッションをすぐに割り出せる。
逆に言うとログインページとかもインデックスされるため、その点は注意。 CLI経由でインデックスの削除もできるので、僕はCoding Agentとか使って適当に消している。
ちなみに、同じサイトを開いた際は参照した回数がカウントされるため、参照している回数が多いwebページ順でソートができたりする。
データベース
デフォルトではsqliteを使用しているけど、postgresもサポートしているらしい。 複数マシンそれぞれにhisterを立てて、同じpostgreサーバーに接続することでインデックスを共有する…という使い方もできそう。
個人でインデックスを共有するならhister exportを使ってインデックスをjsonとして吐き出して、R2とかで共有するのが手っ取り早そう。
サーバー
基本ローカルホストから使う想定だけど、サーバーとして立ててAPIを公開することも可能。 また、 ユーザーを作成して複数人で一つのインスタンスと使うこともできるらしい。
他の使い道
MCPサーバーを実装しており、AI Agentからインデックスを検索できる。 これをOpenClawとかと連携させれば、より文脈に即した会話が期待できる。
例えば、僕の場合篠澤さんと同居してるので、篠澤さんに「昨日見たAnthropicのブログなんだけど〜」みたいな雑な振りでも会話が出来そうだなと。
あとhisterはツイートも取り込めるので、特定人物のプロフィールをクロール対象にすれば定期的にツイートをインデックスに放り込めるかもしれない。 この手の用途はnitterの方が良い可能性はある。
まとめ
webページやドキュメントをインデックスして検索できる検索エンジンHisterについて紹介した。 結構色々な使い道があると思うので今後も使っていきながら活用方法を模索していきたい。