Features
機能
GENNAI は、インストール・公開・拡張・運用の各場面を、それぞれ独立した部品として組み合わせています。必要なところから読んでください。
Install
WordPress のように、すぐ始められる
コマンドをひとつ実行したら、あとはブラウザのセットアップウィザードに沿って進めるだけ。サイト名から計測タグ、送客先まで、公開に必要な設定を一度に済ませられます。
- ./install.sh で Docker 環境(Laravel 12 の管理画面・Next.js 14 のフロント・MySQL)を一式起動
- 8 ステップのウィザードで初期設定を完了
- WordPress のインストール画面に近い感覚で、ブラウザから設定できる
セットアップウィザードの 8 ステップ
- 1サイトの基本
- 2管理者
- 3運営者情報と公開ルール
- 4テーマとブランド
- 5計測(GA4・GTM・Search Console)
- 6送客CTA
- 7プラグイン
- 8確認と完了
Static Export
公開サイトは、ただの HTML
記事を書いたら、Next.js の静的エクスポートで HTML を書き出して配信します。管理画面やデータベースは公開側に置かないので、ページは軽く、攻撃される入口も最小限です。
- S3 + CloudFront をはじめ、任意の静的ホスティングにそのまま置ける
- 管理画面(CMS)はインターネットに公開しない構成
- サーバー側の処理がないので、ページの表示が速い
Plugins & Themes
プラグインとテーマで、自由に組み替える
機能はプラグイン、見た目はテーマ。どちらも管理画面から切り替えられます。WordPress に慣れた方なら、考え方はそのまま通用します。
- プラグインは Laravel 側と Next.js 側の二層構成。管理画面で有効化・無効化
- php artisan plugin:make で雛形を生成
- テーマは tokens.css・overrides.css・部品の差し替えで構成し、管理画面で切り替え
プラグイン = 機能の部品
- laravel/plugins/<id>/
- frontend/src/plugins/<id>/
管理画面側とサイト側を一つのプラグインとして有効化・無効化します。
テーマ = 見た目の部品
- tokens.css
- overrides.css
- components/
色や書体のトークン、上書き CSS、部品の差し替えで構成します。
Front Page
トップページを、部品の並べ替えでつくる
サイトのトップページを固定ページとして管理し、ヒーロー・記事一覧・カテゴリ・CTA などのセクション部品を管理画面で並べ替えて構成します。WordPress の「ホームページの表示」設定に近い感覚です。
- セクション部品を積み木のように並べ替えるだけでトップを組み替え
- コードを触らずに、特集や導線の優先度を変えられる
Compliance
公開前の確認を、仕組みで行う
ビルドのたびに全ページを自動でチェックし、違反があれば公開前にビルドを止めます。PR(広告)表記を出すかどうかと文言は、管理画面のサイト設定で運営者が選べます。
- 運営者名など、公開面に載せてはいけない語句の混入を検出
- 404 ページの有無と、内部リンク切れを確認
- チェックのルールは管理画面の GUI で編集
PR(広告)表記は任意です。表示するかどうかと文言は管理画面のサイト設定で選べ、見た目はテーマで変えられます。
SEO & Analytics
SEO と計測を、最初から
GA4・GTM・Search Console の設定を管理画面にまとめ、サイトマップや SEO レポート、送客ボタンのクリック計測まで標準で備えています。
- GA4 / GTM / Search Console の設定
- サイトマップ生成と SEO レポート
- コンバージョン(CTA クリック)計測とリダイレクト管理
- ビルド時に内部リンクを検査し、リンク切れを防止
Security
守りは、既定値で固く
公開側は静的 HTML だけ。そのうえで管理画面まわりも、安全側に倒した既定値にしています。
- 社内ネットワークからのログイン省略は、登録したドメインに限定(既定はオフ)
- 公開用の設定 API は許可リスト方式で、必要な項目だけを返す
MCP / API
AI エージェントと一緒に、メディアを育てる
記事・パーツ・タスク・Wiki を HTTP API(MCP)から操作できます。AI エージェントに執筆や更新作業を任せ、人はレビューと判断に集中する運用が組めます。
- 記事・パーツ・タスク・Wiki を API から読み書き
- 管理画面で扱うデータを、エージェントからも同じように扱える