Drupal CMS の AI 機能を使ってみる

Drupal

はじめに

せっかく Drupal CMS に移行したにもかかわらず、AI に関しては全くスルーしてた。
記事のタイトルを決めて、予め設定しているプロンプトに基づいた統一感のある記事を生成する、という使い方ができるらしい。
他にも AI エージェントを活用して記事のタグ付けや分類を自動化する、AI 翻訳によりサイトの多国語化を図るなどなど、Drupal CMS の目玉機能と言っても良い。

しかし、AI 機能を活用するには外部の生成 AI の Gemini API や ChatGPT API などを利用する必要がある。
これが問題で、このサイトのように単なる個人的メモを自鯖で粛々と運用しているケースだと AI の利用コストはバカにならないから、これまでなかなか手を出せずにいた。

でもせっかく手元の ThinkPad T16 Gen4 AMD で Gemma 4 を動作させることができたし、Drupal のモジュールには開発版とはいえ Ollama Provider があるから、お試しで Drupal CMS AI を使ってみることにした。

 

目標

AI にブログを書かせる訳じゃない。今回は、コンテンツ(本文)をもとに概略を生成させることにする。
今までは記事冒頭の数行をコピペしていたから、少しはマシになることを期待している。

 

AI 有効化手順

モジュールの有効化

Open AI などを利用することが前提なら、機能拡張ページのタブ Recommended add-ons で、AI Assistant をインストールするほうが便利だけど、今回は無視。

Drupal CMS には最初から AI 関係のモジュールがインストールされているから、管理画面の機能拡張アイコンをクリックして、関係のモジュールを手動で有効化する。

実験的モジュールを含むセクションAI では、

  • AI API Explorer
  • AI Automators
  • AI CKEditor integration
  • AI Core
  • AI Observability
  • AI Search

セクション AI Tools では

  • AI Agents
  • AI Agents Explorer
  • AI Assistant API
  • AI Chatbot
  • AI Image Alt Text
  • AI Image Bulk Alt Text

非推奨のモジュールを除き、全部有効化した。もちろん、すべての機能を活用する訳じゃないけれど、とりあえずということで。

 

モジュールのインストール

Drupal 用の AI モジュールのリストは AI (Artificial Intelligence) module for Drupal のとおりで、表内の Ollama をクリックすると Ollama Provider のモジュールのページが表示される。
まだ 1.2.0-rc3 だけど誰にも迷惑をかけないお一人さま用 Drupal なので、composer でそのままインストールする。

composer require 'drupal/ai_provider_ollama:^1.2@RC'

 

有効化する。

drush en ai_provider_ollama

 

Provider の設定

管理画面の「環境設定 > AI > 概観」をクリックすると次のような画面になる。まず最初に、AI Platform Providers をクリックして Provider の初期設定を行う。

 

先にモジュールを追加したから Ollama の設定メニューが表示されているハズ。モジュール追加前だと、前述の Provider リストへのリンクが表示される。

Ollama Configuration をクリックする。

Provider

 

下画像のホスト名を入力する。自分の場合は LAN 内だけの運用なので、手元の ThinkPad T16 の IP アドレスを DHCP から固定 IP に変更して、(例として)http://192.168.1.99 とした。ポートは 11434 のままで変更なし。T16 の ollama.service に Environment="OLLAMA_HOST=0.0.0.0" を忘れないように。
ちなみに、 T16 にテスト環境として DDEV でインストールした Drupal CMS の場合は、http://host.docker.internal とすることで Ollama に接続できる。

入力したら右上の「構成を保存」をクリックしてエラーメッセージが出なければ接続 OK。もし接続できないようなら、Drupal の動作しているサーバーからターミナルで curl 192.168.1.31:11434 等で確認してみること。正常なら Ollama is running メッセージが返って来る。

ホスト名

 

「環境設定 > AI > 概観」に戻って、次は Default Models for AI Operations をクリックする。

AI Settings

 

チャットをはじめとする各機能をどの AI Provider に担ってもらうかを選択する。プロバイダー列の No default をクリックするとプルダウンで Ollama を選択できるので、全ての項目に適用する。もし2つ以上のプロバイダーを有効化していれば、ここで機能別にプロバイダーを選択できる。続いて Model 列では「選択」をクリックすると、手元の ThinkPad T16 で使用している gemma4:e4b が選択できる。
モデレートは Model の選択ができないからパス。

Additional AI Capabilities も Provider を追加していないから無視。

Embeddings は Ollama、gemma4:e4b を選択可能。

以下の項目は初期設定のままで右上「構成を保存」をクリックする。

 

動作確認

この時点で、またまた「管理画面 > AI > 概観」から右下の AI API Explorer をクリックすると、Chat Generation Explorer から AI の動作確認ができる。下画像はプロンプト「Drupal CMS の特徴を100文字以内で纏めてください。」の結果が中央に表示されたところ。
ちなみに、手元の PC で nvtop を起動しておくと、GPU の使用率が跳ね上がるのがわかる。

チャット

 

AI 機能を使ってみる

これまでの設定で、Ollama を正常に使用していることが確認できたから、次は記事に対して概要を AI に生成させるための手順をメモする。

 

CKEditor の設定

管理画面の「環境設定 > コンテンツ作成 > Text formats and editors」から、Content の右端の設定をクリックする。

Text formats and editors

 

画像赤丸のツールバーのアイコン AI CKEditor を下段にドラッグ & ドロップする。

AI CKEditor

 

すると、次の画像のように AI tools の項目が表示される。
とりあえず、AI Agents CKEditor を展開して有効化、右上の「構成を保存」をクリックして保存する。
後ほど、本文の見出しに行頭数字を付与するための修正を試してみる。

AI tools

 

こうすると下画像のように、実際に記事を書くときには AI Assistant のアイコンが表示される。が、記事の生成や校正などの機能は何も有効化していないからクリックしても何も変わらない。

AI Assistant

 

後ほど簡単な AI Assistat の例を試してみる。

 

フィールドの設定

CKEditor の AI Assistant から AI 機能を活用することもできるけれど、今回の目標は概要の生成なので、記事本文を書き終えて保存するタイミングで AI に概要を生成してもらうことにする。

最初に AI Assistant の設定を行っておく。例によって管理画面の AI の概観から、右側の AI Assistants をクリック、ラベルや説明、AI の基本的なルールを記述して保存する。複数のアシスタントを作成できるから使い分けができる。

ChatGPT に生成してもらったサンプルはこちら。

あなたは Drupal CMS に特化した技術アシスタントです。

## 役割
- Drupal サイト構築・テーマ開発・運用に関する支援を行う
- 実務で使える具体的な手順・設計を提示する

## 文体・スタイル
- 日本語で簡潔かつ論理的に説明する
- 見出し(H2・H3)を使用する
- 必要に応じて箇条書きを使う
- 結論→理由→手順の順で説明する

## 制約
- Markdown形式で出力する
- 不要な前置きや冗長な説明は避ける
- 推測や不確実な情報は明示する
- Drupalのベストプラクティスに基づく
- 存在しないAPI・モジュールを提示しない

## 技術前提
- Drupal CMS 2.x(Starshot)を前提とする
- StarterKitベースのテーマ開発を考慮する
- Bootstrap 5 の使用を前提とする
- CSS中心のカスタマイズを優先する
- 可能な限りテーマ側で解決し、不要なカスタムモジュールは避ける

## Drupal特化ルール
- Core または一般的な contrib モジュールを優先する
- バージョン差異がある場合は明示する
- UI(Canvas / Experience Builder)で解決できる場合はコードより優先する

## 出力方針
- 手順は具体的に記述する
- ファイルパス・設定箇所を明示する
- 実用性を最優先とする

 

続いて、管理画面の「サイト構築 > コンテンツタイプ」から対象のコンテンツタイプ(例えば Blog post)の右端「フィールドの管理」をクリックする。続いてAI に生成させたい「概要」は下画像の Description フィールドなので、ここの右端の「編集」をクリックする。

フィールドの管理

 

フィールド設定ダイアログが表示されるので、Enable AI Automator を有効化する。

Blog post の Description 設定 1

続きの画像。

Blog post の Description 設定 2

 

とりあえず次のとおり設定する。

  • Choose AI Automator Type
    LLM: Text または LLM: Text(Simple)
  • Automator Input Mode
    Base Mode
  • Automator Base Field
    Content(このフィールドにある本文記事を元に概要を生成する)
  • Automator Prompt
    以下のような感じでプロンプトを入力してみた。最後に、以下の文章を指定するため {{ context }} を記述するのを忘れないように。

    以下の文章を、次の要件で、簡潔に150文字以内に要約してください。
    ・文末に文字数は表示しないこと。
    ・一人称は「自分」若しくは「私」とすること。
    ・文体は、「する」「した」「しない」「しよう」「た」「だった」「ではない」「だろう」などの普通形を用いる文体で、小説や日記などで用いられる普通体(常体)とすること。
    
    {{ context }}
  • Edit when changed
    ここを有効化することで、記事の保存時に概要を生成するようになる。

 

概要を生成してみる

本文を書いて保存すると、前述のプロンプトに基づいて概要を生成してくれる。このページがまさにそうで、概要っぽくなっている。
もう少しフレンドリーな文体にしてみる等、まだまだ詰めるべきところがあるとは思うけれど、以降の記事は基本、生成 AI に作成してもらうことにする。

 

CKEditor で AI Assistant を使う

Modify with a prompt の項目に、次のプロンプトを書いてみる。

以下のブログ記事について、次のHTMLタグがあれば記事冒頭から順に行頭数字を追加してください。
なお、原文はそのままとし、行頭文字の追加に限定してください。
 h2 : 1 2 3 ・・・(以降、同様にHTML タグに連番を付与する)
 h3 : (1) (2) (3) ・・・(以降、同様にHTML タグに連番を付与する)

{{ context }}

 

次の記事で試してみる。

見出しテスト

 

本文の全てを選択(Ctrl+A)した状態で AI Assistant をクリックすると、CKEditor で有効化した Modify with a prompt を選択できる。
クリックすると次のようなダイアログが表示される。

サンプル1

 

ここでプロンプトを入力することもできる。
空白のままで Modify text をクリックした結果はこちらのとおり。

サンプル2

 

正しく見出しに連番がついている。これでよければ右下の Save changes to editor をクリックすれば記事に反映される。
今回は記事全てを選択した状態だったけど、一部の段落を選択した状態でプロンプト「フレンドリーな感じに修正して」と書けば、そのように修正される。

 

チャットボットを使ってみる

管理画面の「サイト構築 > ブロックレイアウト」で、ヘッダーやフッターなど、テーマ Gin のどこかのブロックに AI DeepChat Chatbot を配置すれば OK。デフォルトで右下にチャットボットのツールバー(アイコンに変更可)が表示されるので、Drupal CMS と密接?に関係した使い方ができる。

幅や高さは初期値から適当な固定値に変更したほうがスッキリするからお好みで。

チャットボット

 

おわりに

あくまでも本日時点の記事ということで。Dupal CMS は活発に開発が進められているから、この記事もすぐに陳腐化するだろうなぁ。

本格的に使用するなら商用の生成 AI サービスを利用するほうがサクサク動作して快適かつ実用的なのは間違いない。でも、ThinkPad T16 を活用している(ような気分になる)から、自分の目標はとりあえず達成ということで良しとしよう。

他にも多くの AI 機能があるけれど、少なくとも以降、記事そのものを生成 AI に書いてもらうつもりはない。

関連記事