Claude Code Plugins

Community-maintained marketplace

Feedback

n8n-vibe-workflow

@Ma-san229/yuz
0
0

n8nの自動化ワークフローをJSON形式で生成します。ワークフロー作成、自動化、n8n、統合、インテグレーション、webhook、APIなどが言及された場合に使用します。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name n8n-vibe-workflow
description n8nの自動化ワークフローをJSON形式で生成します。ワークフロー作成、自動化、n8n、統合、インテグレーション、webhook、APIなどが言及された場合に使用します。

n8n Vibe Workflow

n8nの自動化ワークフローを自然言語の指示からJSON形式で生成するスキルです。

Quick start

n8nワークフローを作成する際の基本的な流れ。

  1. ユーザーの要件をヒアリング: どのような自動化を実現したいかを確認
  2. 必要なノードを特定: トリガー、アクション、条件分岐などを決定
  3. ノード間の接続関係を設計: データの流れを明確化
  4. JSON形式でワークフローを生成: n8nにインポート可能な形式で出力
  5. 動作確認用の説明を追加: セットアップ手順や注意点を記載

ワークフロー設計の原則

基本ルール

  • トリガーノードは必ず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が生成されます。

セットアップ手順:

  1. n8nにJSONをインポート
  2. GitHub認証情報を設定
  3. Slack認証情報を設定
  4. Notion認証情報を設定
  5. NotionのデータベースIDを設定
  6. ワークフローをアクティブ化

動作確認:

  1. GitHubリポジトリで新しいIssueを作成
  2. Slackに通知が届くことを確認
  3. Notionデータベースに新しいページが追加されることを確認

まとめ

このスキルを使用することで、n8nワークフローの作成が大幅に簡単になります。自然言語で要望を伝えるだけで、すぐに使えるワークフローJSONが生成されます。

生成されたワークフローは、そのままn8nにインポートして使用できますが、必要に応じてカスタマイズすることも可能です。

ワークフロー自動化を活用して、日々の業務を効率化しましょう!