ひとり法人の業務をn8nで自動化し、Claude Codeから操作・管理する仕組みを構築した。ワークフローをGitで管理し、自作CLIでデプロイからデバッグまで完結させている。この記事では、その全体像とやりかたをまとめる。
3つの層で構成される。
Claude Code(操作層) がユーザーとの接点。スキルとして /n8n-shirase(ワークフロー設計支援)、/n8ncli(API操作)、n8n-mcp(ノード情報取得・検証)などを組み合わせて、自然言語でワークフロー管理を行える。
n8ncli(CLIツール層) はTypeScriptで書いた自作のCLIツール。n8nのPublic APIをラップして、ワークフローの一覧取得、デプロイ、実行テスト、履歴確認、バリデーションをコマンドラインから実行できる。
n8n.rector.co.jp(実行基盤層) が本番のn8nサーバー。30以上のアクティブなワークフローが常時稼働し、メール分析からSNS投稿、議事録生成、タスクリマインドまでを自動処理している。
この3層の横に、shirase/ ディレクトリがある。全ワークフローのJSONバックアップ38件をGitリポジトリで管理しており、n8ncliとの間で双方向に同期できる。
ワークフローは12のカテゴリに分類される。命名規則は {2桁番号}-{カテゴリ名}-{機能名} で統一している。
| 番号 | カテゴリ | WF数 | 処理内容 |
|---|---|---|---|
| 01 | 1 | 未読メールをAIで分析し、返信要否を判定。重要メールはSlack DM通知 | |
| 02 | Schedule | 2 | Google Calendar予定を自動分類し色分け。未確定予定をSlack報告 |
| 03 | SNS | 7 | 記事からツイート生成、AIモデレーション、X自動投稿 |
| 04 | Research | 2 | ニュース収集・論文調査 |
| 05 | Event | 3 | 登壇イベントのカウントダウン告知を自動生成・投稿 |
| 06 | Meeting | 5 | TLDV連携で会議録音→議事録を自動作成。会議前に前回議事録を通知 |
| 07 | Client | 1 | 取引先企業のニュースを定期監視 |
| 08 | Insight | 4 | 議事録から知見を自動抽出し、ツイートやブログ記事へ展開 |
| 09 | Admin | 2 | 給与明細の振込額変動チェック、郵便物の到着通知 |
| 10 | Remind | 2 | Notion広木確認表の未完了タスクを12時・17時にリマインド |
| 13 | Inquiry | 2 | HPからの問い合わせをWebhookで受信し、AIが返信文を生成 |
| 90 | System | 6 | 汎用AIエージェント、エラーハンドラ、MCPサーバーなどの基盤 |
全てのワークフローに共通する構造がある。トリガー → データ取得 → AI処理 → アクション という流れだ。AIモデルは用途に応じてClaude(テキスト生成・複雑な判断)とGPT(高速な分類・構造化出力)を使い分けている。
ワークフローの出力は3つのチャネルに集約される。
- Slack :
#remind(タスク)、#schedule(予定)、#tweet(投稿通知)、#error(エラー)、DM(重要メール) - Gmail : 問い合わせへのAI返信
- X (Twitter) : 記事紹介・イベント告知・インサイトのツイート自動投稿
一部のワークフローはREST APIとしても公開している。
| エンドポイント | 内容 |
|---|---|
POST /webhook/03-sns-article-api |
記事一覧をJSON取得(カテゴリ・ツイート対象フィルタ) |
POST /webhook/05-event-api |
イベント予定をJSON取得(upcoming_onlyフィルタ) |
認証は X-Webhook-Token ヘッダー。Claude Codeのスキル(/n8n-shiraseなど)からこのAPIを叩いて、ワークフローが管理しているNotionデータにアクセスできる。
n8nのPublic APIにはワークフローを直接実行するエンドポイントがない。GUIでの操作は手軽だが、複数ワークフローの一括管理やCI/CD的な運用には向いていない。そこでTypeScriptでCLIツールを作った。
# 一覧取得(アクティブのみ・テーブル表示)
n8ncli wf ls --active true --table
# 詳細取得
n8ncli wf get <ID>
# バックアップファイルからインポート(新規作成)
n8ncli wf import shirase/10-Remind-Todo.json
# 既存ワークフローを更新(ファイル内IDを自動読み取り)
n8ncli wf update shirase/10-Remind-Todo.json
# n8nサーバーから最新を取得してローカルに同期
n8ncli wf sync shirase/10-Remind-Todo.json
# 有効化 / 無効化
n8ncli wf activate <ID>
n8ncli wf deactivate <ID>ポイントは ファイル内IDベースの操作 だ。shirase/ のJSONファイルにはtop-levelに id フィールドが含まれているため、wf update も wf sync もIDを引数で渡す必要がない。ファイルパスだけで操作が完結する。
# Webhook経由でワークフローを実行
n8ncli wf run <workflowId>
# 入力データを渡して実行
n8ncli wf run <workflowId> -d '{"category": "Qiita"}'前提として、ワークフローにWebhookトリガーノードが必要。定期実行トリガーしかないワークフローをテストするには、一時的にWebhookノードを追加するか、過去の実行をリトライする。
# 実行履歴(ワークフロー指定、エラーのみ)
n8ncli exec ls -w <workflowId> -s error
# 実行詳細(データ含む)
n8ncli exec get <executionId> -d
# 失敗した実行を最新版ワークフローで再実行
n8ncli exec retry <executionId> --load-workflowexec retry --load-workflow は便利で、JSONを修正してデプロイした後に、過去の失敗データを使って最新ロジックで再実行できる。入力データを手作業で用意しなくてよい。
# 単一ファイル検証
n8ncli validate shirase/10-Remind-Todo.json
# shirase/ 全ファイルを一括検証
n8ncli validate shirase/
# CI向け(警告もエラー扱い)
n8ncli validate shirase/ --strictバリデーションは3層構造。
- Zodスキーマ: JSON構造の妥当性(必須フィールド、型チェック)
- セマンティックルール: コネクションの整合性、ノード名の一意性
- ノード固有ルール: resource/operationの妥当性、式構文チェック
npm run test:shirase でビルドと全ファイル検証をまとめて実行できる。
# 認証情報の一覧
n8ncli cred ls
# タグ管理
n8ncli tags ls
# 変数・設定確認
n8ncli var ls
n8ncli config日常の運用は6ステップのサイクルで回る。
shirase/ ディレクトリのJSONファイルを直接編集する。Claude Codeが /n8n-shirase スキルのパターン知識に基づいてノード構成を提案し、JSONを生成する。
n8ncli validate shirase/10-Remind-Todo.jsonデプロイ前に必ずローカルで検証する。3層バリデーションが構造エラーから式構文の問題まで検出する。
n8ncli wf update shirase/10-Remind-Todo.json
n8ncli wf activate <ID>ファイル内IDで自動的に対象ワークフローを特定し、更新する。
n8ncli wf run <ID> -d '{"test": true}'Webhook経由で実際にワークフローを動かし、期待通りの動作を確認する。
n8ncli exec ls -w <ID>
n8ncli exec get <executionId> -d実行履歴を確認し、エラーがあれば詳細データを取得して原因を特定する。全ワークフロー共通で 90-System-ErrorHandler が Slack #error にエラーを通知するため、異常にはすぐ気づける。
n8ncli wf sync shirase/10-Remind-Todo.json
git add shirase/10-Remind-Todo.json && git commit -m "update 10-Remind-Todo"n8nサーバーの最新状態をローカルに同期し、Gitにコミットする。これで変更履歴が残り、いつでも過去の状態に戻せる。
Claude Codeからn8nを操作するために、複数のスキルとMCPツールを組み合わせている。
| スキル | 役割 | 使いどころ |
|---|---|---|
/n8n-shirase |
親スキル。パターン知識・設計指針を提供 | 新規ワークフロー設計、構成相談 |
/n8ncli |
n8n API操作 | 一覧、デプロイ、履歴確認、検証 |
/noti |
Notion操作 | ワークフローが参照するDB(Tweet Bank等)の確認・編集 |
/slakky |
Slack操作 | 通知チャンネルの確認、メッセージ投稿 |
/gog-google-workspace |
Gmail・Calendar操作 | メール検索、予定確認 |
n8nのノード情報にプログラマティックにアクセスするためのMCPサーバーも接続している。
search_nodes: ノード検索(「slack」でSlack関連ノード一覧)get_node: ノードの設定スキーマ取得(プロパティ一覧、型情報)validate_node: 個別ノード設定の妥当性チェックvalidate_workflow: ワークフロー全体の構造検証search_templates/get_template: n8n公式テンプレートの検索・参照
ワークフローを新規作成するとき、Claude Codeが「Notionノードにどんなプロパティがあるか」をMCPで調べ、パターン知識と組み合わせて正しいJSONを生成する流れになる。
MCPツールの使い方を最適化するための補助スキルも用意している。
| スキル | 内容 |
|---|---|
n8n-node-configuration |
ノード設定の段階的な取得ガイド |
n8n-code-javascript |
Codeノード内のJavaScript記法($input, $json等) |
n8n-expression-syntax |
n8n式構文({{ }} 内の書き方)の検証 |
n8n-workflow-patterns |
実証済みのワークフロー構造パターン |
n8n-validation-expert |
バリデーションエラーの解釈と修正ガイド |
実際のワークフローは、いくつかの定型パターンの組み合わせでできている。新規作成時はこれらのパターンをベースにする。
Schedule Trigger → 外部サービス(Gmail/Notion) → Code(整形) → LLM Chain(分析) → Filter(分岐) → Slack通知
01-Mail-Check、10-Remind-Todo が代表例。定期的にデータを取得し、AIが内容を判定して、条件に合うものだけSlackに通知する。
Schedule Trigger → Notion(記事取得) → HTTP Request(本文取得) → LLM Chain(生成) → Notion(保存)
03-SNS-Article が代表例。Notionの記事一覧からツイート生成し、Tweet Bankに保存する。後続の03-SNS-Moderationがモデレーションして投稿する、2段構えの構成。
Google Calendar Trigger → LLM Chain(分類) → Google Calendar(colorId更新)
02-Schedule-Classify が代表例。予定が作成・更新されるたびに、AIがカテゴリを判定して色を自動設定する。
Execute Workflow Trigger → 処理ロジック → Return
90-System-FnResearch(Web検索)、90-System-FnSlack(Slack送信)など。他のワークフローから呼び出される部品。90-System-AgentShiraseは、これらをツールとして使えるAIエージェントとして機能する。
n8nの認証情報はサーバー上に暗号化されて保存される。n8ncli cred ls で一覧を確認できる。
| サービス | 用途 |
|---|---|
| Gmail (仕事用 / 個人用) | メール取得・ラベル操作 |
| Slack | チャンネル投稿・DM |
| Notion | データベース読み書き |
| Google Calendar | 予定取得・色設定 |
| Anthropic (Claude) | AI分析・テキスト生成 |
| OpenAI (GPT) | メール判定・構造化出力 |
| X (Twitter) | ツイート投稿 |
| TLDV | 会議録音サービス連携 |
ワークフローJSONには認証情報の id と name が含まれるが、シークレット自体はサーバー側にある。JSONをGitに入れても認証キーは漏れない。
- 要件を整理する: トリガー種類、入力ソース、AI処理内容、出力先を決める
- パターンを選ぶ: 上記の4パターンから最も近いものをベースにする
- JSONを組み立てる:
/n8n-shiraseスキルがパターン知識とノードテンプレートから生成する。n8n-mcpでノード設定を検証しながら進める - ローカル検証:
n8ncli validate shirase/XX-NewWorkflow.json - インポート:
n8ncli wf import shirase/XX-NewWorkflow.json - ID付与:
n8ncli wf export <新ID> shirase/XX-NewWorkflow.jsonでIDを書き戻す - 有効化:
n8ncli wf activate <ID> - テスト:
n8ncli wf run <ID>で動作確認 - Gitに保存:
git add && git commit
この仕組みの要点は3つ。
ワークフローをコードとして管理する。n8nのGUIで作ったワークフローをJSONとしてエクスポートし、Gitで変更履歴を追跡する。「いつ何を変えたか」が残るし、壊れたら git revert と wf import で戻せる。
CLIで操作を完結させる。n8ncliがn8n APIをラップし、一覧表示からデプロイ、テスト実行、障害対応までコマンドラインで行える。ブラウザでn8nのGUIを開かなくても、Claude Codeの会話の中でワークフロー管理ができる。
パターンを蓄積して再利用する。30以上のワークフローを運用する中で見えてきた構成パターンを、スキルの知識として整理した。新しいワークフローは既存パターンの組み合わせで作れるから、毎回ゼロから設計する必要がない。