第36回: 自動化パイプラインを作る — 複数の処理をつなげる
この回で学ぶこと
パイプラインとは何か
cronとスキルを組み合わせた自動化フローの作り方
本格的なワークフローエンジン(Lobster)の紹介
パイプライン設計の考え方
前回のおさらい
Part 7ではスキルの世界を学んだ。ClawHubからのインストール(安全チェックリスト付き)、SKILL.mdによるカスタムスキルの自作、テストとデバッグの方法。ここからはPart 8で、これまでに学んだ全ての要素を組み合わせて実用的な自動化を構築する。
パイプラインとは
パイプラインとは、複数の処理を順番につなげて、最初から最後まで自動で流す仕組みのこと。工場のベルトコンベアと同じ考え方で、1つの工程が終わったら自動で次の工程に渡される。
例えば「ニュースを集める → 記事ネタを選ぶ → 下書きを作る → 通知する」という4つの工程を、秘書が自動で順番に実行してくれる。
コンテンツ自動化パイプラインの設計
今回作るパイプラインは、毎朝のコンテンツ制作を自動化するもの。4つのステップが順番に実行される。
Step 1 | トレンドニュースを10本収集する | web_search(Brave Search) |
Step 2 | 収集した中から記事ネタを3つ提案する | スキル |
Step 3 | 最も有望なネタ1つで下書きを作成する | スキル |
Step 4 | 完成した下書きをTelegramに通知する | チャネル |
簡易版: cronで作るパイプライン
パイプラインの作り方には「簡易版」と「本格版」がある。まずは簡易版から。
第30回で学んだcronを使い、--message にパイプラインの全手順を書く方法。
openclaw cron add \\\\
--name "コンテンツパイプライン" \\\\
--cron "0 8 * * *" \\\\
--tz "Asia/Tokyo" \\\\
--session isolated \\\\
--message "以下の手順を順番に実行してください。
1. web_searchでAI関連の最新トレンドニュースを10本収集する
2. 収集した10本の中から、記事ネタとして有望なものを3つ選び、それぞれタイトル案と1行の概要を作る
3. 3つの中から最も有望なネタ1つを選び、800字程度の下書きを作成する
4. 完成した下書きをTelegramに送信する。形式は:
- タイトル
- 冒頭3行
- 「確認してください」のメッセージ
5. 下書き全文をworkspace/drafts/今日の日付.mdに保存する" \\\\
--announce \\\\
--channel telegram
この方法の仕組み:
-cron "0 8 * * *": 毎朝8時ちょうどに実行(cron式。時刻が正確)-session isolated: メインの会話とは別の環境で実行(他の作業に影響しない)-message: 秘書への指示。ステップ1〜5を順番に書いている-announce --channel telegram: 結果をTelegramに通知
秘書は --message の指示を上から順番に実行していく。ステップ1の結果がステップ2の入力になり、ステップ2の結果がステップ3に渡る、という流れが自然に成立する。
簡易版の注意点(正直に言っておくべきこと):
秘書は指示を「上から順番に」実行しようとするが、これはAI(LLM)の判断に基づいている。プログラムのように「ステップ1が完了するまでステップ2は絶対に実行しない」という厳密な制御ではない
途中のステップでエラーが起きた場合、秘書が自分で判断して対処するが、必ずしも期待通りの対処をするとは限らない
Web検索 + コンテンツ生成を含むパイプラインは、1回の実行でトークン(APIの利用量)を多く消費する。モデルや設定によるが、1回あたり数十円〜数百円かかる場合がある
本格版: Lobsterで作るパイプライン
もっと確実にステップを順番に実行したい場合は、Lobster(ロブスター) というOpenClaw公式のワークフローエンジンがある。
Lobsterは「ステップ1の出力をステップ2に渡す」「ステップ2が終わるまでステップ3を開始しない」「途中で人間の確認を挟む」といった厳密な制御ができる。
簡易版(cron)とLobsterの違い:
簡易版(cron + メッセージ): 秘書に「この順番でやって」とお願いする方式。簡単に設定できるが、順番通りに実行される保証はAIの判断任せ
本格版(Lobster): 専用のワークフロー定義ファイルに手順を書く方式。順番が厳密に守られ、途中で人間の承認を挟んだり、失敗時の再試行もできる
Lobsterの設定はYAML(設定ファイルの形式)で書く:
name: content-pipeline
steps:
- id: collect
message: "AI関連の最新トレンドニュースを10本収集して、タイトルとURLの一覧を返してください"
- id: select
stdin: $collect.stdout
message: "以下のニュース一覧から、記事ネタとして有望なものを3つ選んでください"
- id: draft
stdin: $select.stdout
message: "以下のネタの中で最も有望な1つを選び、800字程度の下書きを作成してください"
approval: required
- id: notify
stdin: $draft.stdout
message: "以下の下書きをTelegramに通知してください(タイトル + 冒頭3行 + 確認依頼)"
ポイント:
stdin: $collect.stdout: 前のステップ(collect)の出力を、次のステップの入力として受け取る。これにより、データが確実に次のステップに渡されるapproval: required: このステップの実行前に人間の確認を待つ。「勝手に下書きを公開してしまう」のを防げる各ステップは前のステップが完了してから実行される(厳密な順序制御)
今の段階では簡易版(cron)で十分: Lobsterは強力だが、設定がやや複雑。まずは簡易版で自動化を体験し、「もっと確実に制御したい」と感じたらLobsterに移行すればよい。
パイプライン設計の考え方
コンテンツ制作以外にも、同じパターンで様々なパイプラインが作れる。
パターン: 収集 → 加工 → 出力 → 通知
メール処理パイプライン: 受信メールを要約 → 優先度をつける → 返信の下書きを作成 → Telegramに通知
競合調査パイプライン: 競合のSNSをチェック → 重要な投稿を抽出 → 分析レポートを作成 → Discordに通知
学習パイプライン: 英語ニュースを収集 → 日本語に翻訳 → 重要単語リストを作成 → MEMORY.mdに保存
どのパイプラインも基本は同じ: 「何を集めるか」→「どう加工するか」→「どこに出すか」の3要素を決める。
Heartbeatとcron、どちらでパイプラインを動かすか
ここまでの講座で学んだHeartbeatとcronの使い分けを、パイプラインにも当てはめる:
Heartbeat向き: 「新着メールが来たら処理する」「異常を検知したら対処する」→ イベント駆動型(何かが起きたらパイプラインを動かす)
cron向き: 「毎朝8時にニュースを集めて下書きを作る」「毎週月曜にレポートを生成する」→ スケジュール型(決まった時間にパイプラインを動かす)
今回のコンテンツパイプラインは「毎朝8時」というスケジュール型なので、cronが適切。
ゴール状態
パイプラインの概念(複数の処理を順番につなげる)を理解している
簡易版パイプライン(cron + メッセージ)を設定できる
本格版パイプライン(Lobster)の存在と特徴を知っている
パイプライン設計の3要素(収集・加工・出力)を使って自分のパイプラインを設計できる