| name | n8n-vibe-workflow |
| description | n8nの自動化ワークフローをJSON形式で生成します。ワークフロー作成、自動化、n8n、統合、インテグレーション、webhook、APIなどが言及された場合に使用します。 |
n8n Vibe Workflow
n8nの自動化ワークフローを自然言語の指示からJSON形式で生成するスキルです。
Quick start
n8nワークフローを作成する際の基本的な流れ。
- ユーザーの要件をヒアリング: どのような自動化を実現したいかを確認
- 必要なノードを特定: トリガー、アクション、条件分岐などを決定
- ノード間の接続関係を設計: データの流れを明確化
- JSON形式でワークフローを生成: n8nにインポート可能な形式で出力
- 動作確認用の説明を追加: セットアップ手順や注意点を記載
ワークフロー設計の原則
基本ルール
- トリガーノードは必ず1つ: ワークフローの起点を明確にする
- データの流れを明確にする: ノード間の接続を分かりやすく
- エラーハンドリングを含める: 失敗時の処理を必ず実装
- 認証情報は環境変数で管理: セキュリティを考慮した設計
ノード配置のベストプラクティス
- X座標は250から始め、150-200ピクセル間隔で配置
- Y座標は300を基準に、分岐がある場合は±100で調整
- 視覚的に分かりやすいレイアウトを心がける
サンプルワークフロー
例1: Webhook → Slack通知
シンプルなWebhook受信からSlack通知までの基本的なワークフロー。
{
"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のデータベースに追加するワークフロー。
{
"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: 条件分岐を含むワークフロー
データの内容に応じて処理を分岐させるワークフロー。
{
"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を生成します。
{
"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への自動化
ユーザーの要望:
GitHubに新しいIssueが作成されたら、Slackに通知し、Notionのタスクデータベースに追加するワークフローを作成して
生成されるワークフロー:
上記の「例2: GitHub Issue → Slack + Notion」のJSONが生成されます。
セットアップ手順:
- n8nにJSONをインポート
- GitHub認証情報を設定
- Slack認証情報を設定
- Notion認証情報を設定
- NotionのデータベースIDを設定
- ワークフローをアクティブ化
動作確認:
- GitHubリポジトリで新しいIssueを作成
- Slackに通知が届くことを確認
- Notionデータベースに新しいページが追加されることを確認
まとめ
このスキルを使用することで、n8nワークフローの作成が大幅に簡単になります。自然言語で要望を伝えるだけで、すぐに使えるワークフローJSONが生成されます。
生成されたワークフローは、そのままn8nにインポートして使用できますが、必要に応じてカスタマイズすることも可能です。
ワークフロー自動化を活用して、日々の業務を効率化しましょう!