CMSにAI自動化の機能を増やしたら、タイムアウトと戦うことになった
AIZOMEのCMS管理画面に機能を追加し続けた結果、Amplifyの約30秒のプロキシタイムアウトに頻繁に引っかかるようになった経緯と、AWS AmplifyからVercelへ移行するまでの実践ログ。
30秒でわかる記事要約
- 記事運用に便利なCMS機能をAI駆動で次々と追加開発した
- サムネイル自動生成、SNS下書き、用語集、スケジュール管理などを実装
- 画像圧縮とフォント自己ホスト化でモバイル速度を58から96超へ改善
- Amplifyの30秒タイムアウトが機能追加のたびに障壁となった
- 実行時間を延ばせるVercelへ移行し運用ストレスを解消した
前回の記事からCMS管理画面の機能を中心に、思いつくものを片っ端から形にしていきました。 元々、WebメディアやSNSを運用していた経験もあるため、記事の作成、管理、SEOの面でWordPressにあったら便利だなと思っていた機能を、実際にメディア運用をしながら追加していきました。 また、X、noteなどの運用であったら便利そうだと思っていた機能も追加しています。
作った機能
ざっと挙げるとこれだけあります。
タイトル入り記事サムネイルの自動生成:タイトルから画像を生成し、AIZOMEのロゴと文字を焼き込むようにしています。以前はOpenAIの画像生成API(GPT Image)で画像生成だけを行なっていましたが、タイトルもサムネイルに含めたかったので、画像生成の後、タイトルを焼き込むようにしています。タイトルの改行については改善点はありますが、意味のある部分での区切りを持たせる仕組みも加えています。
X投稿・note記事の下書き生成機能:自社メディアの展開だけでは流入が限られるため、SNSも同時展開しています。Xの自動投稿機能はありましたが、Xの記事機能やnoteのようなブログ向けの投稿も記事本文から生成できるようにしています。
用語集:このメディアは経営者向けであり、開発者向けではありません。そのため、専門的な用語で躓くことがないように用語の説明を記事内からすぐに見られるようにしました。また、用語集自体もSEOの意味もあります。用語集は検索・50音インデックス、トップページの注目用語ランキングまで合わせて作成しました。
スケジュール管理:一連のリリースで私が最も力を入れたのはここです。メディア運用で面倒なのがスケジュール管理です。複数のライターがいるようなメディアでは、かなりのリソースが記事の作成・公開管理に割かれています。管理画面上で、いつ公開予定の記事があり、現在どのような状態か、完パケしているのか、などステータス管理できるようになっています。XやnoteといったSNSの投稿管理も合わせておこなうことができ、どの記事は投稿済みか否か、すぐに確認できるようになっています。
PageSpeed Insights対応:機能ではないですが、SEOを意識してPageSpeed Insightsのスコアを上げにいきました。サムネイル圧縮とフォント自己ホスト化で、モバイルのPerformanceスコアが58から96〜99まで上がりました。
PageSpeed対応を除けば、これらの機能は基本的にAI駆動です。機能が増えるほど、AIへの依頼も増えていきます。そして依頼が増えるほど、ある問題に何度も引っかかることになりました。
機能を増やすたびに、タイムアウトと戦った
前回の記事にあったようにホスティング先としてAWS AmplifyAWS AmplifyAWS Amplifyは、Webやモバイルアプリの開発・公開をコード量少なく実現できるAmazonのクラウドサービス群。認証やデータベース、ホスティングなどの機能をまとめて提供し、専門知識が浅くてもアプリを短期間で立ち上げられる。経営視点では、外注コストや開発期間を抑えて自社サービスやDXの試作を素早く始められる点が価値となる。詳しく見る →を採用しましたが、Amplify Hostingの約30秒のプロキシタイムアウトは、前回の記事の時点でも把握していた制約でした。ただ、機能が増えるにつれて、この壁に当たる頻度は明らかに上がり、いろいろな対応を追加していきました。
ニュースの自動収集で取得自体が固まり、RSS取得での記事取得ができなくなったため、ハードタイムアウトを追加
AI下書き生成がタイムアウトする不具合を修正し、応急的な復元手段を追加
用語集のAI生成を2段階、さらに3段階に分割し、さらにモデルを切り替えて生成時間を短縮
タイトルからの画像生成しているサムネイル生成が、1回のリクエストで収まらなくなり、タイムアウトが続出しため、2段階に分割
サムネイル生成がタイムアウトしても、裏側で完了しているかを自動確認するポーリングを追加
しかし、同じ理由の修正が何度も出てくるのは、根本原因が一つだからです。機能を追加するたびに「これも30秒に収まるか」を考え、収まらなければ分割するかポーリングで誤魔化す。本当に動いているのかもわからないUXに、さすがに限界を感じ始めていました。
限界を迎えた機能「URLからの記事下書き生成」
止めを刺したのは、一次情報のURLを入力すると、その情報や周辺情報を踏まえてAIが記事下書きを生成する機能でした。
一次情報を読み込んでから書くぶん、単純なキーワード生成より時間がかかります。追加した直後、「URL入力時のAI下書き生成が応答を受け取れない」という不具合が発生しました。分割やポーリングでその場をしのぐことはできても、機能を追加するたびに同じパターンの対症療法を書くのは、もう限界を迎えていました。
AmplifyからVercelへ移行した
VercelVercel(バーセル)Vercelは、Webサイトやアプリを簡単に公開・運用できるクラウド開発プラットフォーム。コードを更新すると自動で配信環境に反映され、インフラ管理の負担を減らせる。近年はAIアプリ開発向けの機能も拡充しており、少人数でも高速にサービスを立ち上げられる点が経営面で注目される。詳しく見る →は最初のホスティング選定でも候補に挙がっていましたが、無料プランが非商用限定だったため外していました。有料にはなりますが、Proプランを使うとこの制約も問題になりません。加えて、Vercelは最大実行時間を800秒まで設定できます。30秒でのタイムアウトという壁そのものが、根本からなくなります。
コストではなく拡張性でAWSを選んだはずが、実際に運用してみると足かせになったのはその拡張性ではなく、日常的に使う機能を安定して動かせるかどうかでした。最初の時点では見えきっていなかった部分でした。
検証してから切り替えた
いきなり本番を切り替えるのではなく、別のVercelプロジェクトを作ってプレビュー環境で先に検証しました。確認したのは、直前まで詰まっていたURLからの記事下書き生成が最後まで完了すること。そして、すべてが問題なく動くこと。どちらも確認できたところで、mainにマージしてDNSを切り替えました。詰まっていた機能が動くようになったところで、移行の判断が正しかったと確認できました。
メディアの運用という面ではだいぶストレスがないものとなってきました。今後、AI経営を広げていけるようなコンテンツの拡充、経営者がAI動向を追いやすくなるようなニュース記事の充実に取り組んでいきたいと思います。今回はここまでにしておきます。
関連用語
関連する記事
AIでどこまでメディアを作れるか──企画から実装までの実践ログ
AI経営を実証するメディアを、コンセプト設計から技術選定・実装まですべてAIと作った記録。ホスティング選定の判断、ニュース自動収集、人とAIの役割分担、つまずいた点まで公開します。