きっかけ
ブラウザ拡張機能を作ろうと思い立つたびに、セットアップの段階で手が止まっていました。
manifest.jsonの構成、permissionsの選定、Service Workerの仕組み…。作りたいものは頭の中にあるのに、Manifest V3の仕様を調べるだけで時間が消えていく。しかもネットで見つかるサンプルはV2時代のものが混在していて、そのまま動かないことが多い。
「やりたいことを自然言語で説明したら、そのまま動く拡張機能が出てきたらいいのに」。そう思って作ったのが NuModeX Ext Maker です。
何ができるか
ブラウザ拡張機能の中でチャットUIが開いて、自然言語で欲しい拡張機能を説明すると、Manifest V3準拠のファイル一式がZIPで出てきます。
例えば「現在のページのタイトルとURLをMarkdown形式でコピーするボタンが欲しい」と書くと、manifest.json、popup.html、popup.js、アイコンまで含めたZIPが生成されます。そのままChromeのchrome://extensionsでロードすれば動く。
もともとは拡張機能を楽に作りたいという動機で始めましたが、開発の途中でブラウザ拡張機能と静的Webサイトの構造に共通点が多いことに気づいて、静的サイトの生成機能も追加しました。
生成されたコードはそのまま使うこともできるし、エディタで直接編集することもできます。AIに任せっきりではなく、自分でコードを触りたい人にも対応しています。サンドボックス上のライブプレビューで、変更を即座に確認しながら作業できます。
バックエンドを持たないという判断
一番最初に決めたのは「バックエンドサーバーを運用しない」ということでした。
理由は2つあって、1つは単純にサーバー代を払いたくなかった。もう1つは、ユーザーのプロンプトやAPIキーを預かりたくなかった。預かった瞬間にプライバシーポリシーの責任範囲が一気に広がるし、漏洩リスクも自分が背負うことになる。
なので、全部ブラウザの中で完結する設計にしました。
ユーザーのブラウザ → AIプロバイダー(ユーザー自身のAPIキー)
↓
生成されたコード → ブラウザのローカルストレージ
SoraVantia GK(開発元)はこのデータパスの中に一切いません。アカウント登録もなし、ログインもなし。インストールしてAPIキーを入れたらすぐ使えます。
正直、この設計にはデメリットもあります。ユーザーの利用状況が全く見えないので、どの機能が使われているか、どこで詰まっているかがわからない。改善のフィードバックは完全にユーザーからの自発的な連絡頼みです。
AIプロバイダーを1つに絞らなかった理由
最初は1つのプロバイダーだけ対応すればいいかなと思っていました。でも実際に使ってみると、モデルによって得意不得意があって、使い分けたいという声がある。ユーザーによって手持ちのAPIキーも違う。
結局、以下に対応しました:
- Google Gemini
- OpenAI GPT
- Anthropic Claude
- OpenAI互換APIなら何でも
- オンデバイスAI
OpenAI互換APIに対応したことで、ローカルで動くLLMをつなげることも可能になりました。
マルチブラウザ対応で地味にハマったこと
Chrome、Edge、Firefox、Opera、Whale、Safariに対応しています。
ManifestV3自体はChromium系ブラウザ間ではほぼ共通なので、Chrome/Edge/Opera/Whaleはそこまで問題ない。面倒だったのはFirefoxです。
FirefoxのManifest V3サポートは微妙に挙動が違うところがあって、特にbrowser_specific_settingsの扱いとか、一部のAPIの有無とか。このあたりの差異をAIの出力段階で吸収するのは結構苦労しました。
Safariはさらに別世界で、これは現在も対応作業中です。
Import from ZIPを後から追加した話
最初は「ゼロから生成する」機能だけだったんですが、使っているうちに「既存の拡張機能をAIで修正したい」という場面が出てきました。
自分で生成したものを微調整したいとか、他のプロジェクトを読み込んでリファクタリングしたいとか。それでZIPインポート機能を追加して、既存プロジェクトに対してAIで編集できるようにしました。
これは後から足した機能ですが、今では一番便利に使っています。ゼロから作るより、既存のコードを改善するほうが実用的な場面の方が多い。
9言語対応
UIは日本語、英語、スペイン語、フランス語、韓国語、中国語、ドイツ語、ポルトガル語、イタリア語に対応しています。
なぜ9言語かというと、ブラウザ拡張機能のストアはグローバルなので、英語だけだと機会損失が大きいと感じたからです。ブラウザの言語設定を検出して自動切り替えしますが、UI内で手動で言語を切り替えることもできます。
ライセンス
Business Source License 1.1を採用しました。
個人利用・社内利用は無料。ソースコードはGitHubで全部見れます。ただし、NuModeX Ext Maker自体を別のストアに出すのはNGです。2030年3月にApache 2.0に自動移行します。
「ソースは見れるけど、フォークしてそのままストアに出すのはダメ」という形です。ユーザーが生成した拡張機能は当然ユーザーのものなので、商用利用含めて自由にできます。
試してみたい方へ
APIキーがあればすぐに使えます。
| ブラウザ | リンク |
|---|---|
| Chrome | Chrome Web Store |
| Firefox | Firefox Add-ons |
| Edge | Edge Add-ons |
| Whale | Whale Store |
ソースコード: github.com/soravantia/numodex-ext-maker
製品ページ: numodex.com/numodexextmaker
バグ報告や改善提案はGitHubのIssueか numodex@soravantia.com まで。
開発元: SoraVantia合同会社

