こんにちは。今回は、当サイト(PuzzleOut)のウェブサイト上に常駐している「AIキャラクター」を、新たな機能に変更したプロジェクトについてご紹介します。
その名も、「本日の記念日コンテンツ自動生成システム(puzzleout-anniversary)」 です。
毎日深夜0時になると、AIが自動で「今日が何の日か」を調べ、それに基づいた雑学や豆知識をキャラクターのセリフとして生成してくれます。さらに、WordPressへの記事投稿まで全自動で行う仕組みを構築しました。
以前は記事の右下に常駐するAIキャラクターが、過去記事に対するコメントをつぶやいていたのですが、記事とは関係ないことをつぶやくほうが良いかなと思い、機能を変更しました。
世の中には意外な記念日が多くあり、そういったものを日替わりでつぶやくほうが面白いかなと思い実装しました。ぜひ試してみてください。
システムの概要
このプロジェクトは、フロントエンド(見た目・動き)とバックエンド(自動生成の裏側)の2つの要素で構成されています。
1. バックエンド(深夜0時のバッチ処理)
- 毎日深夜0時にサーバー上でスクリプトが自動起動(Cron機能を使用)。
- Gemini APIと通信し、「今日の記念日」に関するユニークなセリフや解説文を自動生成。
- 生成した文章を、WordPressの固定ページに自動更新。(新規記事追加とするとAI生成コンテンツで溢れるので、更新するかたちにしています)
- 同時に、フロントエンド表示用のデータファイル(
anniversary.json)を更新。
2. フロントエンド(AIキャラクターのウィジェット)
- サイト訪問者がページを開くと、更新された
anniversary.jsonを読み込みます。 - 画面の端にいるAIキャラクターが、その日の記念日に合わせた会話を展開します。
これにより、「管理人が一切作業しなくても、毎日サイト上に新しいコンテンツと新鮮なキャラクターのセリフが追加され続ける」 という完全自動化を実現しました。
なぜバックエンドに「PHP」を採用したのか?
AIやAPI連携のスクリプトといえば「Python」が主流です。当初の開発でもPythonの利用を検討していましたが、最終的にバックエンドの言語には 「PHP」 を選択しました。
その最大の理由は、私が利用している「Xサーバー(共有レンタルサーバー)の環境制約に最適化するため」 です。
一般的な共有サーバーでPythonを動かそうとすると、以下のような壁にぶつかることがよくあります。
- 仮想環境(venv)の構築やパッケージ(pip)のインストール・管理が煩雑になる。
- Cronで定期実行させる際、Pythonの実行パスや環境変数の設定でトラブルが起きやすい。
一方で PHP であれば、Xサーバーをはじめとするほとんどのレンタルサーバーで標準かつ強力にサポートされています。
- 複雑な環境構築が不要で、ファイルを配置するだけで動く。
- 外部ライブラリに依存せず、標準関数(
curlなど)だけでGemini APIとの通信やJSON処理が完結する。 - Cronでの定期実行も非常に安定している。
このように、「サーバー環境に逆らわず、最もシンプルかつ安定して稼働する構成」 を追求した結果、PHPでの実装がベストプラクティスであると判断しました。
1日1度の更新程度ならAPI接続も安定
このシステムを導入したことで、サイトのコンテンツが毎日自動で最新化し、サイトに訪れるたびにAIキャラクターが違う話をしてくれるため、訪問者に新しい体験を提供できれば良いなと思っています。
完全自動化の仕組みが完成したので、今後はこのAIキャラクターにさらにインタラクティブな機能(訪問者のアクションに合わせたリアクションなど)を追加し、より「生きた」キャラクターへと進化させていきたいと考えています。
今回は1日に1度の更新時にGemine2.5 FlashへAPI接続するかたちとなっています。この程度の頻度ですとAPIに課金せずとも、制限にかかってしまう心配も不要です。
レンタルサーバー環境でのAI活用に興味がある方の参考になれば幸いです!
ただし、AIによる自動生成記事は検索エンジンからの評価が著しく下がる傾向にあります。今回は訪問者向けの内部リンクで辿る、おまけコンテンツ的な位置づけでAI自動生成を活用していますが、ブログの投稿記事などに100%AI生成記事を利用することは避けた方が良いでしょう。



