UIをどこに置くかは、運用が続くかどうかを決める。最初はWebの管理画面も考えた。でもSlackはすでに開いていて、通知が自然に届き、リアクション絵文字で返答できる。入力の摩擦が圧倒的に低い。Cruxnoteの編集部はSlackに置くことにした。
mission.mdを設定ファイルとしてGit管理する
AIに記事を書かせるシステムの多くは、プロンプトをコードに直書きする。変更するたびにデプロイが必要で、何が変わったかの履歴も残りにくい。
Cruxnoteでは別のアプローチを取った。メディアの方針をmission.mdという文書にまとめてGitで管理し、スクリプトはそれをそのまま読み込む。「取り上げるテーマの条件」「取り上げないテーマ」「記事のトーン・スタンス」が文書として書かれており、改訂はプルリクエストでレビューできる。
プロンプトをコードと同じように扱う、という発想だ。「あなたはテックライターです。わかりやすく書いてください」をコードに埋め込む代わりに、メディアの存在意義と編集方針を文書化してシステムに注入する。
リアクション一つで記事が来る体験
毎朝9時(UTC 0:00)、Slackに発議が届く。論点のタイトル、推奨記事タイプ、対立軸——そういう情報がメッセージとして来る。✅を押せば記事生成が始まり、数分後に完了通知が届く。
この体験は「ブログを書く」とも「AIに生成させる」とも違う。編集長として、AIが持ち込む論点を承認したり却下したりしている感覚に近い。良い論点が来たときの「これは面白い」という反応は、普通のブログ記事を書くときとは異なる質の楽しさがある。
TypeA完全自動との使い分け
速報記事(TypeA)だけは人間の承認なしで完全自動投稿する設計にした。OpenAIやAnthropicの公式ブログのRSSから新しいリリースを検出すると、自動で記事を生成して投稿する。速報は速度と鮮度が価値の源泉で、夜中や早朝に主要リリースがあっても動き続ける必要がある。
緊急停止はconfig.yamlの1行を書き換えるだけで済む。
typea_auto_post:
enabled: false # これだけで全自動投稿が止まる
次の起動からすぐに停止できる。この「1行ブレーカー」は安心感として機能している。
月額コストの内訳
月額は以下の構成になる。
- AWS(Lightsail WordPress + EC2 常駐プロセス + EBS): 約 $44
- Claude API(発議・記事生成、HaikuとSonnetの組み合わせ): 約 $9
- Claude Code サブスクリプション(Pro プラン): $100〜
Claude Codeを使わずAPIのみで運用する場合、月 $54 程度に抑えられる。EC2の常駐コスト(約 $34/月)が大きいが、これはOpenClawの常駐プロセスが必要なためだ。Lightsail($10/月)はWordPressのホスティングで、転送量3TBまで含まれる。
個人メディア運営のコスト感覚が変わった
「月 $54〜$154 で一人編集部が回る」という数字は、個人メディア運営のコスト感覚を変えると思っている。編集コストの大半は「書く時間」で、それをAIが担い、人間は判断だけに集中する。この構造は記事生成以外にも、定期レポートの自動化やドキュメントの更新候補提示にも応用できる枠組みだ。
スケールしない部分
カテゴリの追加・整理は現状SQLを直接実行している。記事へのフィードバック収集(どの記事が読まれたか、どこが弱かったか)も手作業だ。月に数本の投稿ペースなら問題ないが、週に10本を超えると運用負荷の質が変わってくるはずだ。Slackからカテゴリを操作できるコマンドや、フィードバックの自動収集は、次の拡張として構想している。
コメント