LLMJSONMake.comRemotion自動化

Make.com → Remotion パイプラインにおける JSON 解析エラーの確実な解決法

LLM 出力の不安定な JSON を確実にパースして自動化パイプラインの稼働率を 100% に近づける、正規表現と 2 段階フォールバックの実装。

完全自動化された YouTube Shorts 生成パイプラインにおいて、最大のボトルネックとなるのが「プロンプト出力結果からの構造化データ(JSON)抽出エラー」です。ここでは、AI Hack Lab で実践している堅牢なフォールバック設計を解説します。

課題:LLM は時折「余計な言葉」を喋る

Make.com の Webhook 経由で Gemini や GPT-4 に「JSON のみを返せ」と指示しても、Markdown のコードブロック ( ```json ) や、前置きのテキストが付与されるケースが多発します。

{
  "theme": "Japan Trivia",
  "voice_lines": ["おはよう!", "こんにちは!"]
}

あるいは、API タイムアウトによって JSON 自体が途中で欠落し、パースに失敗することもあります。

解決策:正規表現と 2 段階のフォールバック

Remotion 側でレンダリング(特に TTS の並列処理)を開始する前に、Node.js のランナーでデータのクリーニングを必須ステップとして挟みます。

// 1. JSON の波括弧を抽出する(余計な文字列を切り落とす)
const jsonStart = rawData.indexOf('{');
const jsonEnd   = rawData.lastIndexOf('}');

if (jsonStart !== -1 && jsonEnd !== -1) {
  rawData = rawData.substring(jsonStart, jsonEnd + 1);
}

// 2. パース失敗時は LLM へ再帰的にパースを投げる(またはデフォルト値)
let scriptData;
try {
  scriptData = JSON.parse(rawData);
} catch (err) {
  console.warn("Validation failed. Initiating fallback Gemini parser...");
  scriptData = await generateContent(rawData); // Gemini に不正なテキストを渡し、きれいな JSON を作らせる
}

この「自分でパースできなければもう一度 AI に直させる」という力技アプローチにより、動画のレンダリング自体がクラッシュする事態(稼働率ゼロ)をほぼ完全に防ぐことができます。

結論

LLM のアウトプットを信用せず、常に「純粋な JSON 文字列の中央部分だけを切り抜く関数」を通すこと。これが自動生産システムの堅牢性を担保する一番の近道です。


関連記事