n8n

Railway.appにセルフホストした。 $5で運用できてインストールもクリックだけで終わるので一番コスパいいと思う。動きも特に遅い感じはしない。($5の利用料がもらえるクーポン JrnQBV です。ぜひ使ってください)
テンプレートからn8nを選んでインストールすると自動で動き始める。
変更した点
N8N_EDITOR_BASE_URLをベタ書きにする
これにhttps://がついてないので、OAuthなどが使えなかった。Googleなどの認証で
Access blocked: Authorization Error
You can't sign in to this app because it doesn't comply with Google's OAuth 2.0 policy for keeping apps secure.
とかが出て困った。
TIMEZONEの変数を増やした
サーバサイドでUTCで処理されてしまうので GENERIC_TIMEZONE
という変数をAsia/Tokyo
にした。 Workerの方の環境設定に加える。

デバッグ方法
code or functionノードを使う
return [
{
json: {
endDateTime,
condition: (endDateTime > 18),
typeName: (typeof endDateTime)
},
},
];

作ったチャットを公開するには、チャットのノードの「Make Chat Publicly Available」をONにする。認証しない、BASIC認証、n8nの認証が選べる。

フォームからアップロードしたバイナリを取得したい場合は、フィールド名を直接入力する

Slackのインテグレーションメモ
- Slackアプリを作る
- n8nでは2つの認証情報が必要(Basic Informationで得られるトークンと、アプリをSlackにインストールした後に見れるようになるOAuth Tokens)
- チャンネル一覧を表示させるには、channnel:readとgroup:readの権限が必要
- Event Subscriptionsの方で設定するRequest URLはn8nの方のSlackノードに表示されるWebhookのTest URLを使うが、これはコロコロ変わる(n8nをリロードすると変わる?)ので注意。URLを一度表示したら、[Test Step]の状態にするとVeiricationができる

Slackで[Automated with this n8n workflow]というようなフッターが自動で入る。オプションで削除できる。
[Include Link to Workflow]をfalseにすれば良い

AI Agentから変数をもらいたいときは、プロンプトで自然言語で指示すると $fromAI()
という変数で渡してくれる。

n8nでNotionノードから取得したデータを動的にドロップダウンの選択肢に設定する方法
目的
n8nのSlackノードなどで使用されるカスタムフォームにおいて、前のノード(ここではNotionノード)から取得した複数のデータを、動的にドロップダウンの選択肢として設定したい。
実際の設定例
以下のJSONをカスタムフォームの定義として使用することで、Notionノードから受け取ったデータを動的にドロップダウンの選択肢として表示できる。
{{
JSON.stringify([
{
"fieldLabel": "選択肢",
"fieldType": "dropdown",
"fieldOptions": {
"values": $items("Notion").map(item => ({
"option": item.json.name,
}))
},
"multiselect": true,
"requiredField": true
}
])
}}

Loop over itemsに値を渡すには
return [
{
json: {
url: 'https://medium.com/feed/n8n-io',
}
},
{
json: {
url: 'https://dev.to/feed/n8n',
}
}
];
のような形式で与える必要がある