n8n Vibe Workflow
n8nの自動化ワークフローを自然言語の指示からJSON形式で生成するスキルです。
Quick start
n8nワークフローを作成する際の基本的な流れ。
- •ユーザーの要件をヒアリング: どのような自動化を実現したいかを確認
- •必要なノードを特定: トリガー、アクション、条件分岐などを決定
- •ノード間の接続関係を設計: データの流れを明確化
- •JSON形式でワークフローを生成: n8nにインポート可能な形式で出力
- •動作確認用の説明を追加: セットアップ手順や注意点を記載
ワークフロー設計の原則
基本ルール
- •トリガーノードは必ず1つ: ワークフローの起点を明確にする
- •データの流れを明確にする: ノード間の接続を分かりやすく
- •エラーハンドリングを含める: 失敗時の処理を必ず実装
- •認証情報は環境変数で管理: セキュリティを考慮した設計
ノード配置のベストプラクティス
- •X座標は250から始め、150-200ピクセル間隔で配置
- •Y座標は300を基準に、分岐がある場合は±100で調整
- •視覚的に分かりやすいレイアウトを心がける
サンプルワークフロー
例1: Webhook → Slack通知
シンプルなWebhook受信からSlack通知までの基本的なワークフロー。
json
{
"name": "Webhook to Slack",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "webhook",
"responseMode": "onReceived",
"options": {}
},
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300],
"webhookId": "auto-generated"
},
{
"parameters": {
"channel": "#general",
"text": "={{$json[\"message\"]}}",
"attachments": []
},
"name": "Slack",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [450, 300],
"credentials": {
"slackApi": {
"id": "1",
"name": "Slack account"
}
}
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"versionId": "auto-generated",
"id": "auto-generated",
"tags": []
}
例2: GitHub Issue → Slack + Notion
GitHub Issueが作成されたら、Slackに通知し、Notionのデータベースに追加するワークフロー。
json
{
"name": "GitHub Issue to Slack and Notion",
"nodes": [
{
"parameters": {
"events": ["issue"],
"repository": "owner/repo"
},
"name": "GitHub Trigger",
"type": "n8n-nodes-base.githubTrigger",
"typeVersion": 1,
"position": [250, 300],
"webhookId": "auto-generated",
"credentials": {
"githubApi": {
"id": "1",
"name": "GitHub account"
}
}
},
{
"parameters": {
"channel": "#github-notifications",
"text": "=新しいIssueが作成されました: {{$json[\"issue\"][\"title\"]}}",
"attachments": [
{
"fields": {
"item": [
{
"short": true,
"title": "作成者",
"value": "={{$json[\"issue\"][\"user\"][\"login\"]}}"
},
{
"short": true,
"title": "リポジトリ",
"value": "={{$json[\"repository\"][\"full_name\"]}}"
}
]
},
"color": "#36a64f"
}
]
},
"name": "Slack Notification",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [450, 200],
"credentials": {
"slackApi": {
"id": "1",
"name": "Slack account"
}
}
},
{
"parameters": {
"resource": "databasePage",
"operation": "create",
"databaseId": "your-database-id",
"title": "={{$json[\"issue\"][\"title\"]}}",
"properties": {
"customProperty": {
"value": [
{
"key": "Status",
"type": "select",
"selectValue": "New"
},
{
"key": "URL",
"type": "url",
"urlValue": "={{$json[\"issue\"][\"html_url\"]}}"
},
{
"key": "Assignee",
"type": "rich_text",
"richTextValue": "={{$json[\"issue\"][\"user\"][\"login\"]}}"
}
]
}
}
},
"name": "Notion",
"type": "n8n-nodes-base.notion",
"typeVersion": 1,
"position": [450, 400],
"credentials": {
"notionApi": {
"id": "1",
"name": "Notion account"
}
}
}
],
"connections": {
"GitHub Trigger": {
"main": [
[
{
"node": "Slack Notification",
"type": "main",
"index": 0
},
{
"node": "Notion",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"versionId": "auto-generated",
"id": "auto-generated",
"tags": []
}
例3: 条件分岐を含むワークフロー
データの内容に応じて処理を分岐させるワークフロー。
json
{
"name": "Conditional Workflow",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "data-webhook",
"responseMode": "onReceived"
},
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300],
"webhookId": "auto-generated"
},
{
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$json[\"priority\"]}}",
"operation": "equal",
"value2": "high"
}
]
}
},
"name": "IF",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [450, 300]
},
{
"parameters": {
"channel": "#urgent",
"text": "=🚨 高優先度: {{$json[\"message\"]}}"
},
"name": "Slack High Priority",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [650, 200],
"credentials": {
"slackApi": {
"id": "1",
"name": "Slack account"
}
}
},
{
"parameters": {
"channel": "#general",
"text": "={{$json[\"message\"]}}"
},
"name": "Slack Normal",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [650, 400],
"credentials": {
"slackApi": {
"id": "1",
"name": "Slack account"
}
}
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "IF",
"type": "main",
"index": 0
}
]
]
},
"IF": {
"main": [
[
{
"node": "Slack High Priority",
"type": "main",
"index": 0
}
],
[
{
"node": "Slack Normal",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"versionId": "auto-generated",
"id": "auto-generated",
"tags": []
}
ノードタイプ一覧
トリガーノード
ワークフローを開始するノード。
- •Webhook: HTTP リクエストを受信
- •Cron: スケジュール実行
- •Manual Trigger: 手動実行
- •GitHub Trigger: GitHub イベント
- •Gmail Trigger: メール受信
- •Slack Trigger: Slack イベント
アクションノード
データを処理・送信するノード。
- •HTTP Request: API リクエスト送信
- •Slack: Slack メッセージ送信
- •Gmail: メール送信
- •Notion: Notion データベース操作
- •Google Sheets: スプレッドシート操作
- •Discord: Discord メッセージ送信
- •Telegram: Telegram メッセージ送信
ロジックノード
データの流れを制御するノード。
- •IF: 条件分岐
- •Switch: 複数条件分岐
- •Merge: データの結合
- •Set: データの設定・変換
- •Code: JavaScript/Python コード実行
- •Function: カスタム関数実行
データ変換ノード
データを加工するノード。
- •Edit Fields: フィールド編集
- •Filter: データフィルタリング
- •Sort: データソート
- •Aggregate: データ集計
- •Split In Batches: バッチ分割
ワークフロー生成のガイドライン
ステップ1: 要件の明確化
ユーザーの要望から以下を特定します。
- •トリガー: 何をきっかけに実行するか
- •アクション: どのような処理を行うか
- •条件: 分岐条件はあるか
- •出力: 最終的にどこにデータを送るか
ステップ2: ノードの選定
要件に基づいて適切なノードを選択します。
- •トリガーノードを1つ選択
- •必要なアクションノードを列挙
- •条件分岐が必要な場合はIFやSwitchを追加
- •データ変換が必要な場合はSetやFunctionを追加
ステップ3: 接続関係の設計
ノード間のデータフローを設計します。
- •トリガーから最初のアクションへの接続
- •条件分岐の場合は、trueとfalseの両方の経路を定義
- •並列処理の場合は、複数の接続を定義
ステップ4: JSON生成
以下の構造でJSONを生成します。
json
{
"name": "ワークフロー名",
"nodes": [
// ノード定義の配列
],
"connections": {
// 接続定義
},
"active": false,
"settings": {},
"versionId": "auto-generated",
"id": "auto-generated",
"tags": []
}
ステップ5: 説明の追加
生成したワークフローについて、以下を説明します。
- •ワークフローの目的
- •各ノードの役割
- •セットアップ手順(認証情報の設定など)
- •動作確認方法
- •カスタマイズのヒント
ベストプラクティス
命名規則
- •ワークフロー名: 目的が分かる具体的な名前
- •ノード名: 処理内容が分かる名前(例: "Slack Notification", "Filter High Priority")
- •変数名: キャメルケースまたはスネークケース
エラーハンドリング
- •重要な処理には必ずエラーハンドリングを追加
- •エラー時の通知先を設定
- •リトライ処理を適切に設定
パフォーマンス
- •不要なノードは削除
- •大量データ処理時はバッチ処理を検討
- •API レート制限に注意
セキュリティ
- •認証情報は環境変数で管理
- •Webhook URLは推測されにくいパスを使用
- •機密情報をログに出力しない
トラブルシューティング
よくある問題と解決策
問題1: ワークフローが実行されない
- •トリガーノードの設定を確認
- •認証情報が正しく設定されているか確認
- •ワークフローがアクティブになっているか確認
問題2: データが正しく渡されない
- •ノード間の接続を確認
- •データの構造を確認(
{{$json}}で確認) - •式の構文エラーをチェック
問題3: エラーが発生する
- •エラーメッセージを確認
- •API の認証情報を確認
- •レート制限に達していないか確認
参考リソース
使用例
例: GitHubからSlackとNotionへの自動化
ユーザーの要望:
code
GitHubに新しいIssueが作成されたら、Slackに通知し、Notionのタスクデータベースに追加するワークフローを作成して
生成されるワークフロー:
上記の「例2: GitHub Issue → Slack + Notion」のJSONが生成されます。
セットアップ手順:
- •n8nにJSONをインポート
- •GitHub認証情報を設定
- •Slack認証情報を設定
- •Notion認証情報を設定
- •NotionのデータベースIDを設定
- •ワークフローをアクティブ化
動作確認:
- •GitHubリポジトリで新しいIssueを作成
- •Slackに通知が届くことを確認
- •Notionデータベースに新しいページが追加されることを確認
まとめ
このスキルを使用することで、n8nワークフローの作成が大幅に簡単になります。自然言語で要望を伝えるだけで、すぐに使えるワークフローJSONが生成されます。
生成されたワークフローは、そのままn8nにインポートして使用できますが、必要に応じてカスタマイズすることも可能です。
ワークフロー自動化を活用して、日々の業務を効率化しましょう!