メインコンテンツまでスキップ

n8n

Basic以上のプラン

Webhookには有料プランが必要です。上限と詳細はWebhook自動化をご覧ください。

n8nはセルフホストまたはクラウドで使える自動化プラットフォームです。TellDoneをWebhookノードでn8nに接続します。n8nインスタンスにはインターネットからアクセス可能なHTTPS URLが必要です。

セットアップ

n8nで

  1. ワークフローにWebhookノードを追加
  2. HTTP MethodをPOSTに設定
  3. パスを設定(例: telldone)
  4. (任意)Header Authを有効化: Name = Authorization、Value = シークレットトークン
  5. Production URL(テストURLではない)をコピー

TellDoneで

  1. 設定 > 連携 > Webhook自動化へ進む
  2. 新しい自動化をタップしてn8nの本番URLを貼り付け
  3. n8nでHeader Authを有効にした場合は、TellDoneの認証ヘッダーとして同じトークンを入力
  4. 送信するデータタイプを選択
  5. 保存をタップしてからテストをタップし、サンプルのペイロードを送信

n8nの実行ログを確認してください。"test": trueを含むペイロードが見えるはずです。

イベントタイプによるルーティング

Webhookノードの後にSwitchノードを追加してデータをイベントタイプでルーティング:

  • ルーティングフィールド: 入力データのevent
  • ルール1: note.createdに等しい - ノートアクションにルーティング
  • ルール2: task.createdに等しい - タスクアクションにルーティング
  • ルール3: calendar_event.createdに等しい - カレンダーアクションにルーティング
  • ルール4: report.createdに等しい - レポートアクションにルーティング

各Switch出力を適切なアクションノード(Todoist、Google Calendar、Slackなど)に接続してください。

便利な式

アクションノードを設定するときに、これらのn8n式でTellDoneデータにアクセスしてください:

説明
{{ $json.data.title }}ノート、タスク、イベントのタイトル
{{ $json.data.tags.join(', ') }}カンマ区切り文字列としてのタグ
{{ $json.data.priority }}優先度レベル
{{ $json.data.due_date }}期限(タスク)
{{ $json.data.summary }}AI生成の要約(ノート)
{{ $json.event }}イベントタイプ

各データタイプの全フィールドリストはWebhook自動化 - 送信内容をご覧ください。

テストイベントのフィルタリング

Webhookノードの直後にIFノードを追加:

  • 条件: {{ $json.test }}真ではない
  • True パス: ワークフローの残り
  • False パス: No Operation(テストイベントを破棄)

ワークフローの例

  • Webhook - Switch - Todoist: 優先度と期限付きでタスクを作成
  • Webhook - Switch - Google Calendar: 時刻、場所、参加者付きでイベントを作成
  • Webhook - Switch - Slack: 日次レポートをチャンネルに投稿
  • Webhook - Switch - Google Sheets: すべてのノートをスプレッドシート行として記録
  • Webhook - Switch - Notion: タグと要約付きでノートを保存

Webhook署名の検証(任意)

n8nでのrawボディの制限

n8nのCodeノードは解析済みのJSONオブジェクトのみを公開し、リクエストのrawボディは公開しません。署名の検証にはTellDoneが署名した正確なrawバイトが必要です。実際には、多くのn8nユーザーはHMAC検証の代わりにデフォルトのAuthorization: <signing_secret>ヘッダーを認証に使っています。

本番利用では、HMAC-SHA256署名を確認することでWebhookデータが本当にTellDoneから来たことを検証できます。Webhookノードの直後にCodeノードを追加してください:

const crypto = require('crypto');

const secret = 'whsec_your_signing_secret_here';
const signature = $input.first().headers['x-lp-signature'];
const timestamp = $input.first().headers['x-lp-timestamp'];
const body = JSON.stringify($input.first().json);

const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + body)
.digest('hex');

if (signature !== expected) {
throw new Error('Invalid webhook signature');
}

// Reject timestamps older than 5 minutes
const age = Math.floor(Date.now() / 1000) - parseInt(timestamp);
if (age > 300) {
throw new Error('Webhook timestamp too old');
}

return $input.all();

whsec_your_signing_secret_hereを、TellDoneで自動化を作成したときにコピーした署名シークレットに置き換えてください。

切断

n8nへのデータ送信を停止するには:

  • n8nでワークフローを無効化する、または
  • TellDoneの設定 > 連携 > Webhook自動化で自動化を無効化または削除

関連項目

  • Webhook自動化 - ペイロード形式、配信上限、セキュリティ
  • Zapier - クラウド自動化代替
  • Make - クラウド自動化代替