はじめに
こちらのドキュメントを参考にします。
n8n のコミュニティノードリポジトリに自作ノードを公開するための手順は以下の通りです:
- パッケージ名
n8n-nodes-
または@<scope>/n8n-nodes-
で始める。例:n8n-nodes-weather
。 - キーワード
n8n-community-node-package
を package.json の keywords に含める。 - package.json の設定
n8n
属性の中に自作ノードと認証情報を追加する(starter node の例を参照)。 - 動作確認
Linter でチェックし、ローカルでテストして問題がないか確認する。 - 公開
npm レジストリにパッケージを登録・公開する(詳細は npm の公式ドキュメント参照)。
👉 要するに、命名規則・package.json 設定・テスト・npm 公開が必須です。
手順
スターターノードをテンプレートレポジトリとして用意されています。このスターターリポジトリを基に、自分用のノードを開発し、npm に公開するのが公式の推奨プロセスです。
ここではデモ用に、https://github.com/s3lab-tech/n8n-nodes-sample レポジトリを作成しました。
開発中パッケージをビルドする
distディレクトリへ出力される
% cd /home/myhome/dev
% git clone https://github.com/s3lab-tech/n8n-nodes-sample
% cd n8n-nodes-sample
package.json内のプロジェクト名をn8n-nodes-sampleに変更する
% npm install
% npm run build
開発中パッケージをグローバルにリンクする
% npm link
% npm ls --link -g
/Users/myhome/.nvm/versions/node/v20.19.1/lib
└── n8n-nodes-sample@0.1.0 -> ./../../../../../dev/n8n-nodes-sample
docker-compose.ymlを作成する
ホスト上の開発パッケージのdistディレクトリをdockerコンテナ内のディレクトリにマップする
services:
n8n:
container_name: n8n
image: docker.n8n.io/n8nio/n8n
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_DATABASE=n8ndevdb
- DB_POSTGRESDB_HOST=host.docker.internal
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=dbuser
- DB_POSTGRESDB_SCHEMA=n8ndev
- DB_POSTGRESDB_PASSWORD=dbuserpass
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
volumes:
- ./docker/n8n-data:/home/node/.n8n
- /Users/myhome/dev/n8n-nodes-sample/dist:/home/node/.n8n/custom/node_modules/n8n-nodes-sample
working_dir: /home/node/.n8n
volumes:
n8n_data:
コンテナを起動する
% docker-compose up -d
ワークフローを作成する
sampleリポジトリのExampleNode, httpBinがノードとして追加できることを確認する

これで、ローカル環境で、Community nodeを開発する準備ができました。