0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

llm-task-router は他の記事生成ワークフローと何が違うのか

0
Posted at

LLMで記事や技術ドキュメントを継続的に作ろうとすると、最初の1本は速くても、運用フェーズで一貫性・長文での破綻・プラットフォームごとの作法差といった問題が顔を出します。

たとえば最初は「ChatGPTにこの記事を書いてと頼めば十分」でも、数本、数十本と回し始めると次のような課題が出てきます。

  • 記事ごとに文体や構成がぶれる
  • 長文になると前半と後半で整合性が崩れる
  • Qiita / Zenn / blog / note で微妙に求められる書き方が違う
  • レビューや改稿のやり方が毎回属人的になる
  • どのモデルをどこで使ったか、いくらかかったか追いにくい

この記事では、記事生成ワークフローの主要な選択肢である以下の5つを、共通の評価軸で比較します。

  1. 単発プロンプト
  2. 汎用LLMフレームワーク
  3. ノーコード / ローコードツール
  4. 自作スクリプト
  5. llm-task-router

結論を先に言えば、llm-task-router は万能な正解ではありません。記事生成という1用途に絞ることで、再現性・品質ガード・プラットフォーム特化を実現したCLIです。逆に、その絞り込みゆえに汎用用途には向きません。

本記事の llm-task-router に関する説明は、筆者がツールの設計意図を把握している前提で書いています。比較対象の記述は「一般的な傾向」として整理しており、個別製品・個別バージョンで挙動や使い勝手は変わりえます。

導入: LLMで記事を量産し始めると何が難しくなるか

単発プロンプトは、最初の1本を書くには非常に強力です。テーマを与えて「この記事を書いて」と頼めば、短時間でそれらしい下書きが得られます。

ただし、継続運用では別の難しさが出てきます。

  • 一貫性の維持
    毎回少しずつ構成や文体がずれる
  • 長文での破綻
    セクション間の重複や矛盾が起こる
  • プラットフォーム差分
    Qiita向けの技術文体と、note向けの読み物文体は同じではない
  • 品質評価の属人化
    どこまで直せば公開してよいかの基準が曖昧になる

特に Qiita / Zenn / blog / note では、求められる文体や記法が微妙に異なります。この差分を毎回プロンプトに埋め込んで調整していると、後工程での手戻りが増えやすくなります。

そこで重要になるのが、「どう書かせるか」だけでなく、どう運用するか です。この記事では、その運用方法の選択肢を整理します。

検証時の前提環境の例として、Node.js 20 以上を想定すると安全です。llm-task-router のような Node 製CLIは、実際の導入時に README や package の engines、対応OS、対応プロバイダ、検証バージョンを必ず確認してください。

比較対象の整理: 5つの選択肢をどう位置づけるか

まず、今回比較する5つの手段の立ち位置を明確にしておきます。

1. 単発プロンプト

ChatGPT / Claude などに対して、1回の指示で「この記事を書いて」と投げる方法です。

  • 最小構成
  • すぐ始められる
  • 試作や単発用途に強い

一方で、再現性や工程分割は弱くなりがちです。

2. 汎用LLMフレームワーク

LangChain / LlamaIndex などを使い、チェーンやエージェントをコードで組み上げる方法です。

  • 柔軟性が高い
  • 記事生成以外にも展開しやすい
  • 高度な制御が可能

ただし、1用途に対しては設計負荷が大きくなりやすいです。

3. ノーコード / ローコードツール

Dify / n8n / Zapier などでGUIベースのフローを組む方法です。

  • 視覚的にフローを作れる
  • SaaS連携と相性がよい
  • 非エンジニアとも共有しやすい

一方、複雑化すると見通しや差分管理に癖が出ます。

4. 自作スクリプト

各社SDKやAPIを直接叩き、自分でステップや入出力をつなぐ方法です。

  • 自分に必要な形へ最短で最適化できる
  • 外部依存を減らせる
  • 細部まで制御しやすい

その代わり、実装・保守の責任はすべて自分で持つ必要があります。

5. llm-task-router

llm-task-router は、汎用フレームワークではありません。記事生成という1用途に特化した、薄い ModelRouter + 多段ワークフローのCLI です。現状はMVPという立ち位置です。

特徴を端的に言うと次の通りです。

  • タスク単位でモデルを切り替える
  • brief → outline → draft → review → final を前提にしている
  • Qiita / Zenn / blog / note などの差分をプロファイルで切り替える
  • 評価・改稿・再開・成果物保存が記事生成向けに最初から入っている

評価軸: 何を基準に横並び比較するか

比較を公平にするため、先に評価軸を定義します。

  1. 導入・セットアップの手間
    どれだけ早く使い始められるか / 学習コストはどれくらいか
  2. モデル切替・フォールバック
    マルチプロバイダ対応 / タスク単位ルーティング / フォールバック
  3. 多段ステップ化
    brief → outline → draft → review → final のように工程を分けやすいか
  4. プラットフォーム特化
    Qiita / Zenn / blog / note など出力先ごとの作法を切り替えやすいか
  5. 品質担保
    LLM-as-judge 的な評価 / 改稿フロー / 出力ガード
  6. コストと運用
    コスト可視化 / 成果物追跡 / 再現性
  7. 拡張性・汎用性
    記事生成以外にも広げやすいか
  8. セキュリティ・データの扱い
    保存先 / 外部SaaS依存 / ログや入出力の扱い

まず全体像を表でまとめると、次のようになります。

評価軸 単発プロンプト 汎用LLMフレームワーク ノーコード / ローコード 自作スクリプト llm-task-router
導入・セットアップ
モデル切替・フォールバック
多段ステップ化
プラットフォーム特化
品質担保
コストと運用
拡張性・汎用性
セキュリティ・データの扱い ツール依存 実装依存 SaaS依存 実装依存 ローカル運用向き

凡例の目安:

  • ◎: 強みとして出やすい
  • ○: 十分可能
  • △: できるが弱い / 運用で補う必要がある

この表は厳密なベンチマーク結果ではなく、記事生成ワークフローを組む観点での定性評価です。特に汎用フレームワークやノーコードツールは、設計者の腕や採用する製品によって大きく変わります。

横並び比較①: 導入のしやすさと学習コスト

単発プロンプト

最も始めやすい方法です。

  • アカウントがあればすぐ使える
  • 新しい概念をほとんど覚えなくてよい
  • 試作や1本目に向く

ただし、再現性のある運用に進むと限界が見えやすくなります。毎回の指示文が実質的な「設計」になるため、運用知識がプロンプトに埋もれます。

汎用LLMフレームワーク

自由度は高いですが、学習コストは高めです。

  • チェーン
  • エージェント
  • ツール呼び出し
  • メモリ
  • 状態管理

こうした概念理解が必要になることが多く、記事生成だけが目的なら過剰投資になりやすいです。

ノーコード / ローコードツール

GUIで始めやすいのは大きな利点です。

  • フローが目で見える
  • 実行順が追いやすい
  • チーム共有しやすい

ただし、細かい制御や複雑化したときの見通しには独特の癖があります。GUIが楽なのは最初のうちだけで、途中から「画面上で複雑な配線を保守する」状態になることもあります。

自作スクリプト

最初から自分向けに作れますが、初期実装と保守の負担は重めです。

  • APIクライアント実装
  • リトライ
  • モデル切替
  • 生成結果保存
  • ログ
  • コスト集計

このあたりをすべて自分で積む必要があります。

llm-task-router

llm-task-router は、記事生成に必要な型が先にある点が有利です。

npm install -g @rex0220/llm-task-router
llm-task-router init

この2ステップで、記事生成用の設定雛形に入れます。

cp .env.example .env

その後 config/models.yaml などを編集すれば使い始められます。

記事生成専用の前提を受け入れる必要はありますが、「記事生成ワークフローをゼロから設計する」負担を減らせるのは大きいです。

自由度の高さは、必ずしも導入のしやすさと両立しません。llm-task-router は汎用性を捨てる代わりに、記事生成の初速を上げる方向に振っています。

横並び比較②: ルーティング、フォールバック、多段ステップ

次に、モデル切替・フォールバック・多段化です。実運用ではこの差がかなり効きます。

単発プロンプト

最も弱いのはここです。

  • モデル切替は手作業
  • フォールバックも手作業
  • ステップ分割も人間の運用ルール頼み

たとえば「要約は安いモデル、執筆は強いモデル、レビューは別モデル」と分けたくなっても、チャットUI中心では管理が散らばりやすいです。

汎用LLMフレームワーク

ここは非常に強いです。

  • タスク別モデル選択
  • 条件分岐
  • リトライ
  • フォールバック
  • 並列実行

などを柔軟に作れます。

ただし、それは「作れる」という話であって、「最初からある」という話ではありません。設計と実装の責任は利用者側に寄ります。

ノーコード / ローコードツール

GUIでも分岐や多段ステップは組めることが多いです。

  • 失敗時の別経路
  • 条件によるモデル切替
  • 複数ノードの接続

は実現可能です。

一方で、モデルごとの差分管理や細かなプロンプト管理は煩雑になりがちです。フローが増えるほど「GUI上での設定の差異」を追うのが難しくなることがあります。

自作スクリプト

必要なだけ自由に組めますが、作る量もそのまま増えます。

特に次のような要素まで考えると急に大変になります。

  • フォールバック
  • 実行再開
  • 履歴管理
  • ステップごとの成果物保存
  • エラー時の復旧

llm-task-router

llm-task-router の特徴は、タスク単位ルーティングが設定として前提化されている 点です。

providers:
  openai:
    api_key_env: OPENAI_API_KEY_ARTICLE
  anthropic:
    api_key_env: ANTHROPIC_API_KEY_ARTICLE

# コスト概算用の単価(USD / 1M tokens)。価格改定でドリフトするため要確認。
prices:
  openai:
    example-strong-model:
      input_usd_per_1m_tokens: 2.5
      output_usd_per_1m_tokens: 15
    example-fast-model:
      input_usd_per_1m_tokens: 0.75
      output_usd_per_1m_tokens: 4.5
  anthropic:
    example-judge-model:
      input_usd_per_1m_tokens: 5
      output_usd_per_1m_tokens: 25
    example-longform-model:
      input_usd_per_1m_tokens: 3
      output_usd_per_1m_tokens: 15

defaults:
  timeout_ms: 120000

tasks:
  article_brief:
    primary:
      provider: openai
      model: example-strong-model
    fallback:
      - provider: anthropic
        model: example-judge-model
    temperature: 0.4
    max_tokens: 4000

  outline:
    primary:
      provider: anthropic
      model: example-judge-model
    fallback:
      - provider: openai
        model: example-strong-model
    max_tokens: 8000

  draft_markdown:
    primary:
      provider: openai
      model: example-strong-model
    fallback:
      - provider: anthropic
        model: example-longform-model
    max_tokens: 12000

  technical_review:
    primary:
      provider: anthropic
      model: example-judge-model
    fallback:
      - provider: openai
        model: example-strong-model

  rewrite:
    primary:
      provider: openai
      model: example-strong-model
    fallback:
      - provider: anthropic
        model: example-longform-model
    max_tokens: 12000

  # final.md の評価(審査役)。本文(rewrite)とは別系統のプロバイダを主審査に置く。
  final_review:
    primary:
      provider: anthropic
      model: example-judge-model
    fallback:
      - provider: openai
        model: example-strong-model

この構造により、

  • article_brief = openai / example-strong-model
  • outline = anthropic / example-judge-model
  • draft_markdown = openai / example-strong-model
  • technical_review = anthropic / example-judge-model
  • rewrite = openai / example-strong-model

のように、役割(タスク)ごとにプロバイダ・モデルを変えられます。fallback は配列で複数指定でき、上から順に試されます。

つまり、「全工程を1モデルで済ませる」のではなく、工程ごとに適材適所を狙う設計 です。

上のモデル名と価格は構造説明のためのダミー例です。実在モデル名、提供可否、価格は執筆時点やプロバイダで変わるため、実運用では必ず公式ドキュメントを確認してください。価格は prices.<provider>.<model>.input_usd_per_1m_tokens / output_usd_per_1m_tokens(USD / 1M tokens)の形で持ちます。api_key_env を省略すると OPENAI_API_KEY / ANTHROPIC_API_KEY などの標準名にフォールバックします。

また、fallback は「別役割のモデルなら何でもよい」という意味ではありません。実務では次のような基準で選ぶのが無難です。

  • 同等以上の能力を持つ
  • 役割が近い
  • 出力形式を崩しにくい
  • コストだけでなく安定性も考慮する

たとえば article_brief の primary を openai 系に置き、fallback に別プロバイダ(anthropic 系)の同等以上のモデルを置くのは、「片方のプロバイダが詰まっても、同じ役割を別系統で代替できる」という設計意図です。逆に、final_review のような審査役の fallback に本文生成と同じ系統ばかり並べると、本文と審査の独立性が弱まるため、別系統を残すほうが無難です。

一方で、この多段フローは記事生成前提なので、記事以外の業務フローへは広げにくいです。ここは明確なトレードオフです。

横並び比較③: プラットフォーム特化と品質担保

記事生成では、単に文章が出るだけでは足りません。媒体ごとの作法と、公開前の品質担保が重要です。

単発プロンプト

Qiita向け、Zenn向けなどを毎回指示し直す必要があります。

  • 「Qiita向けに書いて」
  • 「コードブロックはこうして」
  • 「Zenn記法で」
  • 「note向けに柔らかく」

このように毎回プロンプトへ埋め込むと、差分管理が手作業になります。少しずつズレやすく、手戻りも出やすいです。

汎用フレームワーク / 自作スクリプト

もちろん、媒体差分を設計として表現できます。ですが、それをどうモデリングするかは自前です。

  • プラットフォームごとのテンプレート
  • スタイル設定
  • 評価基準
  • 出力整形ルール

これらを自力で設計・実装する必要があります。

ノーコード / ローコードツール

テンプレート化は可能です。ただし、本文の作法を細かく差し替えるには工夫が必要な場合があります。GUIベースだと、細かなテキスト管理がコードやファイル管理ほど扱いやすくないこともあります。

llm-task-router のプロファイル切替

llm-task-routerconfig/profiles/<name>.yaml によるプロファイル切替を持っています。

platform: Qiita
language: ja
criteria_file: config/criteria/default.md
style: |
  Qiita の作法に従う。本文は Markdown。
  - コードブロックは言語指定つきのフェンスを使う。
  - 補足や注意は `:::note info` / `:::note warn` の記法を使ってよい。
  - 記事先頭の front-matter は本文に含めない。

たとえばこの構造で、次の差分を外だしできます。

  • platform(プロンプトに織り込まれるプラットフォーム名のラベル)
  • language(想定言語・メモ用途)
  • style(draft / final / revise の本文生成に注入する作法。複数行で書ける)
  • criteria_file(評価で使う基準ファイルへのパス)

これにより、Qiita / Zenn / blog / note の作法切替を、毎回のプロンプトではなく設定として持てるのが強みです。

品質担保: evaluate と revise の分離

llm-task-router のもうひとつの特徴は、評価と改稿を分けている点です。

article:evaluatefinal_review タスクで final.md を採点し、以下の成果物を出力します。

  • final-review.json
  • final-review.md
  • revise-instruction.md

つまり、いきなり完全自動で書き換えるのではなく、まず改稿指示ドラフトを作る 設計です。

その後、人間が revise-instruction.md をレビューしてから改稿処理へ渡します。この流れは完全自動化よりも、品質事故の抑制を優先しています。

出力ガード

さらに draft / rewrite / revise には出力ガードがあります。

  • コードフェンス除去
  • ラップ文検出
  • max_tokens 打ち切り警告

ただし、これは万能な品質保証ではありません。あくまで警告中心のガードです。

「評価フローがある = 自動的に高品質になる」ではありません。llm-task-router は品質事故を減らす設計ではありますが、最終確認を不要にするものではありません。

横並び比較④: コスト、運用、再現性、セキュリティ

継続運用では、生成そのものよりも「後から追えるか」が重要になります。

単発プロンプト

  • コストが散らばりやすい
  • どの版を採用したか追いにくい
  • レビュー履歴が残りにくい

1本なら問題なくても、複数本を比較し始めると管理が曖昧になります。

汎用フレームワーク / 自作スクリプト

やろうと思えば細かく記録できます。ですが、そこも自前実装です。

  • 成果物保存
  • usage収集
  • 実行メタデータ
  • run単位の履歴管理

を自分で積む必要があります。

ノーコード / ローコードツール

実行履歴が見やすいことが多いのは利点です。一方で、外部SaaS上でのデータ取り扱いは確認が必要です。

  • どこに保存されるか
  • 入力データが外部に残るか
  • チーム共有時の権限はどうなるか

このあたりは導入前に確認すべきです。

llm-task-router の運用向け設計

llm-task-routerruns/<runId>/ に成果物を残します。たとえば次のようなファイルです。

  • brief.json
  • outline.json
  • draft.md
  • review.json
  • final.md
  • meta.json

これにより、「どの工程で何が出たか」を後から追いやすくなります。

さらに、途中再開やレビュー再実行のような操作が用意されている設計であれば、記事生成の再現性と運用に向いています。

コスト可視化

コストは usageprices からのローカル概算です。追加API呼び出しなしに推定コストを出せるのは、実務では地味に便利です。

一方で、これはあくまで概算です。実請求額とは次の理由でズレる可能性があります。

  • リトライ分がどう集計されるか
  • SDKやプロバイダ側の内部トークン計上
  • システムプロンプトやメタ情報の扱い
  • キャッシュ割引やバッチ割引
  • 価格改定の反映遅れ

そのため、予算感の把握には有効でも、請求額の厳密な監査値としては過信しないほうが安全です。

セキュリティ面

設計としては比較的保守的です。

  • CLIのみでHTTP APIを公開しない
  • 任意URL取得をしない
  • ログにキーを残さない
  • SDKの生レスポンスを丸ごと残さない
  • 入力全文を無制限にログしない

ただし、これらは「そういう設計を目指している」という話であり、実運用では自分でも確認したほうがよいです。最低限、次の観点はチェックしておくと安心です。

  • runs/ 配下に何が保存されるか
  • 標準出力やエラーログに機密値が出ないか
  • .env や API キーがコミット対象に入っていないか
  • verbose ログやデバッグモードの有無

クラウド連携やチーム共有機能が特別に強いわけではありません。ローカル中心の道具として見るのが自然です。

現時点での成熟度: MVPとしてどこまで見ればよいか

llm-task-router は現状MVPという位置づけです。ここは長所と同時に制約でもあります。

読者が判断しやすいように、見るべきポイントを先に挙げると次の通りです。

  • 検証したバージョン
  • 対応プロバイダ
  • どこまでが安定運用向けか
  • 既知の制限

たとえば本記事で触れている範囲は、概ね以下の機能群です。

  • CLIベースの実行
  • 記事生成向けの多段ステップ
  • タスク単位のモデルルーティング
  • プロファイルによる媒体差分切替
  • runs/ ベースの成果物保存
  • evaluate / revise の分離

一方で、主眼ではないものも明確です。

  • エージェント的な自律実行
  • 汎用データパイプライン
  • 複雑な外部SaaS連携
  • RAG中心の知識検索ワークフロー

MVPという表現だけだと曖昧に見えますが、要するに「記事生成ワークフローの中核を先に固めたCLI」であり、周辺機能を広く抱えるタイプではありません。

実際に導入判断する場合は、README や release note を見て、対応プロバイダ・設定項目・既知の制限・Node.js要件・対応OSを確認したうえで評価するのが安全です。比較記事だけで成熟度を断定しないほうがよいです。

llm-task-router固有の設計判断は何を意味しているか

個々の機能を並べるだけでは、このツールの立ち位置は見えません。重要なのは、何を優先し、何を捨てているか です。

1. タスク単位のモデル切替

これは「最強モデル1つですべて解決する」という発想ではありません。

  • briefは軽めでよい
  • draftは長文生成が得意なモデルを使いたい
  • reviewは別視点のモデルを使いたい
  • final_reviewは採点寄りにしたい

こうした役割分担を前提にしています。記事生成を工程として見ている設計です。

2. プロファイル差し替え

これは「1本の万能プロンプトで全媒体に対応する」設計ではありません。媒体ごとの作法を設定として外だしし、差分をプロファイルとして持つ考え方です。

つまり、プロンプト職人芸よりも、設定で差分を管理する運用 を選んでいます。

3. 自動改稿ではなく、改稿指示ドラフトを人がレビュー

ここはかなり思想が出ています。

  • 完全自動化で速度を取る
  • 人手レビューを残して事故を減らす

この二択で、llm-task-router は後者寄りです。改稿指示を人が見てから適用するので、回り道に見える一方、公開事故は減らしやすいです。

4. ローカルコスト概算と runs/ 管理

これは、記事生成を単発ではなく継続運用として見ている証拠です。

  • 何が出たか
  • どれを採用したか
  • いくらかかったか
  • どこでやり直したか

を追いやすくするための設計です。

5. あえて狙っていないこと

逆に言えば、これは次のような用途を主眼にしたツールではありません。

  • エージェント的な自律実行
  • 汎用データパイプライン
  • 複雑な外部SaaS連携
  • RAG中心の知識検索ワークフロー

つまり llm-task-router は、記事生成に必要な範囲に絞ったCLI です。

llm-task-routerが効く場面・効かない場面

どんなツールにも向き不向きがあります。ここを曖昧にすると導入判断を誤ります。

効く場面

以下のようなケースでは相性がよいです。

  • 同じ媒体向けの記事を継続的に作る
  • テーマは毎回違っても、工程はある程度共通
  • 下書き品質のばらつきを抑えたい
  • レビュー工程を整えたい
  • briefからfinalまでの分割を再利用したい
  • Qiita / Zenn / blog / note の媒体差分を管理したい

効かない場面

逆に、次のようなケースでは他の手段のほうが自然です。

  • 月に数本だけ単発で作れればよい
  • 細かな履歴や評価フローはいらない
  • 記事以外の用途にも広く使いたい
  • RAG、チャットボット、業務エージェントが主目的
  • 複雑な外部連携を組みたい
  • 何もかも自分で細部まで制御したい

この場合は、

  • 軽さ重視なら単発プロンプト
  • 広い汎用性なら汎用フレームワーク
  • SaaS連携と共有ならノーコードツール
  • フル制御なら自作スクリプト

のほうが合う可能性が高いです。

判断ポイント

結局のところ、llm-task-router を選ぶかどうかは、記事生成専用という制約を受け入れられるか にかかっています。その割り切りが合う人には刺さります。

実例として示すCLI操作の流れ

ここでは、llm-task-router の基本的な使い方を一連の流れで見ます。

ここで示すサブコマンドやオプション(article:create / article:resume / article:review / article:evaluate / article:revise / article:export--topic / --topic-file / --profile / --min-severity / --instruction-file / --out など)は現行のコマンド体系に沿っています。ただし標準出力や進捗表示は読みやすさのため一部簡略化しています。

正確な表示・オプション・生成ファイル名は、手元で llm-task-router --help や各サブコマンドの --help、および README で確認してください。バージョンによって変わる可能性があります。

1. 初期化

まずは初期化します。

llm-task-router init
cp .env.example .env

その後、config/models.yaml を編集して利用するモデルやタスクごとのルーティングを設定します。

2. 記事作成

トピック文字列を直接渡す場合のイメージです。

llm-task-router article:create --topic "AIが解釈しやすい中間言語を設計する"

トピックファイルを使う場合のイメージです。

llm-task-router article:create --topic-file topics/ai-ir.txt --profile zenn

実行後は、概ね次のような構成で runs/ 配下に成果物が残る想定です。

runs/
└── 2026-06-16-example/
    ├── brief.json
    ├── outline.json
    ├── draft.md
    ├── review.json
    ├── final.md
    └── meta.json

進捗は stderr に工程ごとに出ます(stdout には runId: / final: のパスだけが流れるので、スクリプトから機械処理しやすい設計です)。表示イメージは次のようなものです。

[1/5] brief (article_brief) ...
[1/5] brief - done via openai/example-strong-model (2310ms, ~$0.0123)
[2/5] outline (outline) ...
[2/5] outline - done via anthropic/example-judge-model (4120ms, ~$0.0456)
...
total: ~$0.1240 (estimate)

各行には実際に使われたプロバイダ/モデル、所要時間、推定コストが出ます。primaryと違うプロバイダが出ていれば fallback が効いたサインです。runId と最終成果物のパスは stdout 側に出ます。

3. 再開とレビュー再実行

途中で止まったrunを再開するイメージです。

llm-task-router article:resume --run 2026-06-16-example

レビューだけ再実行するイメージです。

llm-task-router article:review --run 2026-06-16-example

4. 評価

最終稿を評価するイメージです。

llm-task-router article:evaluate --run 2026-06-16-example --min-severity major

これにより、final-review.jsonfinal-review.mdrevise-instruction.md の成果物が生成されます(revise-instruction.md--min-severity で絞った指摘から ローカルで 組み立てられ、追加APIコールはありません)。

進捗は stderr、生成ファイルのパスは stdout に出ます。表示イメージ:

runId: 2026-06-16-example
review: runs/2026-06-16-example/final-review.json (approved: false, issues>=major: 1)
summary: runs/2026-06-16-example/final-review.md
instruction: runs/2026-06-16-example/revise-instruction.md

5. 改稿

評価結果を見て、改稿指示ファイルを使って改稿するイメージです。

llm-task-router article:revise \
  --run 2026-06-16-example \
  --instruction-file runs/2026-06-16-example/revise-instruction.md

6. エクスポート

最終成果物を外へ書き出すイメージです。

llm-task-router article:export \
  --run 2026-06-16-example \
  --out ../zenn-content/articles/my.md

このエクスポートは、明示的な外部書き出し口として扱われます。ローカルで成果物を管理しつつ、必要なときだけ外へ出す考え方です。

CLI中心の運用に慣れている人にとっては、この「run単位で残る」「途中から再開できる」「最後に明示的にexportする」という流れはかなり扱いやすいはずです。

上の標準出力や進捗表示は読みやすさのため一部簡略化しています。実際の表示やオプションはバージョンによって変わる可能性があるため、必ず --help / README で確認してください。

まとめ: 「全部入りの正解」ではなく、設計上の割り切りで選ぶ

ここまで見てきた通り、

  • 単発プロンプト
  • 汎用フレームワーク
  • ノーコードツール
  • 自作スクリプト
  • llm-task-router

には、それぞれ強みの出る場所があります。

単発プロンプトは最速です。
汎用フレームワークは最も広く戦えます。
ノーコードツールは共有と連携に強いです。
自作スクリプトは最終的な自由度が高いです。

その中で llm-task-router の価値は、汎用性の高さではありません。記事生成という1用途での再現性、品質ガード、プラットフォーム特化、運用しやすさ にあります。

一方で、記事生成専用でMVP段階という制約も明確です。RAGや業務エージェント、複雑な外部連携を含む広い用途には向きません。

最終的には、次の条件で選ぶのが妥当です。

  • どれくらいの頻度で生成するか
  • 対象媒体はいくつあるか
  • チームで運用するか、個人で運用するか
  • どこまで自動化したいか
  • どこまで人手レビューを残したいか

記事生成ワークフローには「全部入りの正解」はありません。
だからこそ、機能の多さではなく、どんな設計上の割り切りを受け入れるか で選ぶのが重要です。

llm-task-router は、その割り切りを「記事生成に特化する」方向へ強く切ったツールだと言えます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?