結論から書きます

当社(株式会社TOE)は自社AIメディアの日次更新を自動化しています。工程は3つ。ニュースを集める、英語記事を訳す、AIに要約・本文を書かせる。

実測の結果はこうでした。集める・訳すは動いている。要約だけが止まっていた。 しかもエラーで落ちたのではなく、「スキップ」という形で、黙って止まっていました。

  • ニュース収集は毎日600件。データファイル(news.json)を直近4日(7/20〜7/23)確認すると、いずれの日も600件。
  • 翻訳は、自動翻訳の結果が621件蓄積(translations.json)。
  • 記事数も伸びていて、日次統計では7/20の150本から7/23の171本まで増加。

ところが、同じ統計の「本文(body)」列は、4日間すべて0。記事の枠は増えているのに、本文・要約は1本も生成されていなかったのです。


用語を3つだけ

  • 日次処理 … メディアを毎日更新するため、決まった時刻に自動で走る一連の処理です。収集→翻訳→要約の順に流れます。
  • claude CLI … コマンドラインからAI(Claude)を呼び出すツールです。当社の日次処理では「要約・本文生成」を担っています。
  • スキップ … エラーで全体が止まるのではなく、その工程だけ飛ばして先へ進む動きです。全体は「完走」に見えるのが厄介です。

工程別に見た「動いている/止まっている」

工程 担い手 状態 実測の根拠
ニュース収集 自動収集スクリプト 動いている 直近4日いずれも600件(news.json)
翻訳 自動翻訳 動いている 621件が蓄積(translations.json)
要約・本文生成 claude CLI 止まっていた 日次統計のbody列が4日間すべて0

記事数だけ見れば150→160→160→171と増えています。件数だけ眺めていたら「順調」としか見えません。数字が増えているのに、中身が欠けていく。 これがいちばん怖い形です。


原因は、ログにはっきり残っていた

日次処理のログ(cron.log)を開くと、答えは1行で書いてありました。

⚠️ claude CLI が使えない(未ログイン/PATH)。要約はスキップされる

AI要約を担うツールがログイン切れかPATH不通で呼び出せず、日次処理はエラーで止まる代わりに要約工程だけを飛ばして進み続けていたのです。収集も翻訳もCLIに依存しないので無傷で回り続ける。結果、「集まる・訳される・でも本文は0」が、警報ひとつ鳴らずに続いていました。

正直に書きます。これは根の深いバグではありません。 CLIの再ログイン等で直せる類いの不具合で、対応したばかりです(「完全に解決した」とはまだ言いません。数日まわして確認してからです)。

本質は不具合の深さではなく、気づきにくさのほうです。当社は以前、cron自動化41本の全数調査で「発火しないジョブ」を数え、見張り役で止まったジョブを叩き起こす仕組みを入れました。しかし今回の穴は、その両方をすり抜けます。ジョブは発火し、完走もしている。 欠けているのは、完走の中の1工程だけだからです。


この件で思い知ったこと

  • 「完走した」と「全工程が動いた」は別物です。スキップは完走に化けます。
  • 件数の増加は健全さの証明になりません。 記事数は増えていたのに、本文は0でした。数えるべきは総数ではなく、工程ごとの出力でした。
  • 警告はログに出ていました。 誰も読んでいなかっただけです。人が読まないログの警告は、無いのと同じ。「スキップ発生」を毎日数えて通知に上げることを、次の宿題にします。

関連する記録


まとめ

  • 日次処理を実測。収集は毎日600件、翻訳は621件蓄積と、前工程は無人で回っていた。
  • しかし日次統計の本文(body)列は4日間すべて0。AIによる要約・本文生成だけが止まっていた。
  • 原因はログに明記。claude CLIが未ログイン/PATH不通で使えず、要約工程がスキップされ続けていた。
  • エラーではなく「スキップ」なのでジョブは完走扱い。記事数も増えており、外から見ても気づけない。
  • 不具合自体は浅く、対応したばかり。根が深いのはバグではなく気づきにくさのほう。
  • 教訓:「完走」を信用せず、工程ごとの出力を数える。 ログの⚠️は、人が読む場所まで運ばなければ無いのと同じ。