前回、今までのChrome拡張の代替として、ClineとともにChrome拡張を作ってみました。
Clineとともに、AmazonのURLをシンプル化するChrome拡張を作ってみた - メモ的な思考的な
今回も「ショートカットキーを押すと、開いているWebページのURLをmarkdown形式でコピーする」Chrome拡張機能の代替がほしくなったことから、Clineと作ってみたときのメモを残します。
目次
環境
Clineのバージョンが少し上がった程度で、前回と変わりません。
- Windows11
- Dev Containerで開発
- VS Code
- Cline 3.8.3
- AIモデル
- Claude 3.7 sonnet 20250219
- Google NotebookLM
- 主にClineの公式ドキュメントを読むのに使用
事前準備
前回同様、 .clinerules や memory-bank ディレクトリのファイルを用意しました。
一方、「動くものができればよい」程度の意識でいたため、Chrome拡張の仕様については調べたりしませんでした。
Clineとの協業
initialize memory bank を入力した後、実装を進めてもらいました。
途中エラーになるところがいくつかあったため、Clineへエラーメッセージを添えて修正の依頼をしました。具体的には
Windowsで ctrl + C を押した時に次のエラーになりました。その原因を教えて下さい。 Error handling response: ReferenceError: document is not defined at copyToClipboard (chrome-extension://fmjakpepfonbeijohmjcfddhhgladefg/background.js:35:19) at chrome-extension://fmjakpepfonbeijohmjcfddhhgladefg/background.js:18:7
と
実行したところ別のエラーが出ました。何が考えられるか教えて下さい Error handling response: TypeError: Cannot read properties of undefined (reading 'writeText') at copyToClipboard (chrome-extension://fmjakpepfonbeijohmjcfddhhgladefg/background.js:36:4) at chrome-extension://fmjakpepfonbeijohmjcfddhhgladefg/background.js:18:7
です。
この対応をしてもらったところ、 Ctrl + C というショートカットキーを押すことで、URLをmarkdown形式で保存するところまでできました。
ここで完成としたら良かったのですが、「 Ctrl +C だと他のショートカットキーと重複するので、別のショートカットキーにする」という対応をさらに進めました。しかし、自分がChrome拡張の仕様に詳しくないことから、Clineとのやり取りがそこそこ発生してしまいました。
最終的にはショートカットキーを Ctrl + I にすることで、最低限動くようになりました。細かいところの作り込みはまだまだ必要と感じていますが、いったん完成としました。
タスクの費用感はこんな感じです。
感想
Clineとの往復を知っておけばよかった仕様としては次のあたりです。
- Chromeでは、連続キー入力のショートカットができない
- 例:
Ctrl + Cの後にC
- 例:
- Chromeで空いているショートカットキー
- Notificationを使って画面通知する仕様
- 通知する手段
- アイコンが必須なこと
一方、自分がChrome拡張に詳しくないことで、「ClineのコードはChrome拡張的に本当に適切なコードなのか」というようなレビューモードにはならなかったことから、コードはさっと見る程度で済、頭の疲れがそこまでではなかった気がしました。
技術的な背景を知っているとレビューモードになってしまって頭が疲れてしまうので、Chrome拡張はちょうどよい題材だった気がします。
ソースコード
GitHubに上げました。
https://github.com/thinkAmi-sandbox/url_copy_chrome_extension_with_ai
今回のプルリクはこちら。
https://github.com/thinkAmi-sandbox/url_copy_chrome_extension_with_ai/pull/1
