Notion からコンテンツを作成して Linear チケットを生成
上級
これはEngineering, Product分野の自動化ワークフローで、24個のノードを含みます。主にIf, Set, Code, Filter, Linearなどのノードを使用。 Notion のコンテンツから Linear チケットを作成
前提条件
- •Notion API Key
- •ターゲットAPIの認証情報が必要な場合あり
- •OpenAI API Key
- •HTTP Webhookエンドポイント(n8nが自動生成)
使用ノード (24)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7"
},
"nodes": [
{
"id": "7d11aa76-c7bf-4aa3-9f94-fb2231f5055b",
"name": "アイテムをループ処理",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-1460,
2080
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "bea6febe-077f-4b90-887c-9c82954ef5d9",
"name": "Linear チーム詳細を取得",
"type": "n8n-nodes-base.graphql",
"position": [
-1220,
1760
],
"parameters": {
"query": "=query GetTeamsAndProjects {\n teams(filter: {name: {contains: \"{{ $json['Linear team name'] }}\"}}) {\n nodes {\n id\n name\n members {\n nodes {\n id\n name\n email\n }\n }\n projects {\n nodes {\n id\n name\n description\n }\n }\n }\n }\n}\n",
"endpoint": "https://api.linear.app/graphql",
"requestMethod": "GET",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "zYILrk4RKFqdP66s",
"name": "[Omar] Notion credentials for GraphQL API"
}
},
"executeOnce": true,
"typeVersion": 1,
"continueOnFail": true
},
{
"id": "27a2111b-716b-4150-af92-ab90d7e83642",
"name": "課題コンテンツを取得",
"type": "n8n-nodes-base.notion",
"position": [
-1220,
2340
],
"parameters": {
"blockId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Set assignee and title').item.json.id }}"
},
"resource": "block",
"operation": "getAll",
"returnAll": true,
"simplifyOutput": false,
"fetchNestedBlocks": true
},
"credentials": {
"notionApi": {
"id": "80",
"name": "Notion david-internal"
}
},
"typeVersion": 2.1,
"alwaysOutputData": true
},
{
"id": "96bde9b1-b84e-445a-b90c-6dd4031076aa",
"name": "集約",
"type": "n8n-nodes-base.aggregate",
"position": [
-560,
2340
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "markdown"
}
]
}
},
"typeVersion": 1
},
{
"id": "45c63a2d-d457-4882-ac99-4b8e4a63ae43",
"name": "課題データを準備",
"type": "n8n-nodes-base.set",
"position": [
-1220,
2620
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e1b44489-ee32-4da4-816e-f56d640a9731",
"name": "title",
"type": "string",
"value": "={{ $if($('Set assignee and title').item.json.title.length <= 70, $('Set assignee and title').item.json.title, $('Shorten title').item.json.message.content) }}"
},
{
"id": "f3fab4f6-8ea3-4b93-91ea-ec08c2d9eded",
"name": "description",
"type": "string",
"value": "=_Issue created automatically from a [Notion block]({{ $('Set page URL').last().json.page_url + '?pvs=4#' + $('Loop Over Items').item.json.id.replaceAll('-', '') }})_ {{ $if($('Set assignee and title').item.json.assignee_fragment && !$('Set assignee and title').item.json.assignee, \"\\nAssignee '\" + $('Set assignee and title').item.json.assignee_fragment + \"' not found\", '') }}\n\n{{ $json.markdown?.join('\\n') }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "ce619c7d-8363-48ec-86c8-a1f16097eb3e",
"name": "Linear 課題を作成",
"type": "n8n-nodes-base.linear",
"position": [
-1000,
2620
],
"parameters": {
"title": "={{ $json.title }}",
"teamId": "={{ $('Set team ID').item.json.team_id }}",
"additionalFields": {
"assigneeId": "={{ $('Set assignee and title').item.json.assignee.id }}",
"description": "={{ $json.description }}"
}
},
"credentials": {
"linearApi": {
"id": "218",
"name": "Linear account (David)"
}
},
"typeVersion": 1
},
{
"id": "cc365fa1-a2cc-430c-8cb4-5d708b7a66b9",
"name": "担当者とタイトルを設定",
"type": "n8n-nodes-base.code",
"position": [
-1220,
2080
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "// Set the title and the assignee based on the first line of the item\n\nlet firstLine = $json[$json.type].text.reduce((s, o) => {\n return s + o.text.content\n}, \"\")\nconsole.log('firstLin', firstLine)\nconst regex = /^(\\[[^\\]]*\\]\\s)?(.+)$/;\nconst match = firstLine.match(regex);\nconsole.log('match', match)\n\nif (match) {\n // If the first part is not present, match[1] will be undefined\n item.json.assignee_fragment = match[1]?.slice(1, -2) || null;\n item.json.title = match[2];\n} else {\n item.json.title = firstLine;\n item.json.assignee_fragment = null;\n}\n\n// Set the new title in Notion format\n// $url will be set later, once we have it\nconst prefix_link = [\n {\"text\":{\"content\":\"[\"}},\n {\"text\":{\"content\":\"In Linear\", \"link\":{\"url\": \"$url\"} }},\n {\"text\":{\"content\":\"] \"}}\n]\nitem.json.new_content = {\n \"rich_text\": [...prefix_link, ...item.json.to_do.text]\n}\n\n// Find a matching assignee\nconst members = $('Fetch Linear team details').item.json.data.teams.nodes[0].members.nodes\nconsole.log('people', members)\nconsole.log('fragment', item.json.assignee_fragment)\nconst matching_people = members.filter(p => \n p.name.toLowerCase().startsWith(item.json.assignee_fragment?.toLowerCase())\n)\nconsole.log('mpeople', matching_people)\nif (matching_people.length > 0) {\n item.json.assignee = matching_people[0]\n}\n\nitem.pairedItem = 0\n\nreturn item"
},
"typeVersion": 2
},
{
"id": "15d9c526-95f3-4209-9a9f-a0ba4c09a67e",
"name": "チームは不足していますか?",
"type": "n8n-nodes-base.if",
"position": [
-1000,
1760
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "047fbe62-ebab-44ab-89b1-232f5f15874d",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.data.teams?.nodes?.length < 1 }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "491a1176-18a7-442a-8f64-a8c946ac25dc",
"name": "ページ URL を設定",
"type": "n8n-nodes-base.set",
"position": [
-1000,
2340
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "0b0ced59-14c9-43e9-a5ee-f4b1862fccd6",
"name": "page_url",
"type": "string",
"value": "={{ $('n8n Form Trigger').item.json['Notion block URL'].substr(0, $('n8n Form Trigger').item.json['Notion block URL'].indexOf('?')) || $('n8n Form Trigger').item.json['Notion block URL'] }}"
},
{
"id": "3df2b2e6-38ca-4fb6-b00c-e3a6ceb3f9b3",
"name": "root_content",
"type": "object",
"value": "={{ $('Set assignee and title').item.json[$('Set assignee and title').item.json.type] }}"
},
{
"id": "41a18b43-49fd-45a5-850d-55b9f08f9b93",
"name": "root_id",
"type": "string",
"value": "={{ $('Set assignee and title').item.json.id }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.3
},
{
"id": "bd107990-b009-4b81-8fee-a80c9ab09b4c",
"name": "チーム ID を設定",
"type": "n8n-nodes-base.set",
"position": [
-740,
1760
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b22a4a67-67b5-415a-ab38-4d7f781e8b7e",
"name": "team_id",
"type": "string",
"value": "={{ $json.data.teams.nodes[0].id }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "010105b6-38a2-4859-9e5d-b9624addeacc",
"name": "Notion ブロックへのリンクを追加",
"type": "n8n-nodes-base.httpRequest",
"position": [
-560,
2620
],
"parameters": {
"url": "=https://api.notion.com/v1/blocks/{{ $('Loop Over Items').item.json.id }}",
"method": "PATCH",
"options": {},
"jsonBody": "={\n \"to_do\":\n {{ JSON.stringify($('Set assignee and title').item.json.new_content).replace('$url', $json.data.issue.url) }}\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Notion-Version",
"value": "2022-06-28"
}
]
},
"nodeCredentialType": "notionApi"
},
"credentials": {
"notionApi": {
"id": "80",
"name": "Notion david-internal"
}
},
"typeVersion": 4.1
},
{
"id": "bb88f7df-deef-4c9d-b8af-3e59bf0e0b7d",
"name": "課題 URL を取得",
"type": "n8n-nodes-base.graphql",
"position": [
-780,
2620
],
"parameters": {
"query": "=query IssueDetails {\n issue(id: \"{{ $json.id }}\") {\n url\n }\n}",
"endpoint": "https://api.linear.app/graphql",
"requestMethod": "GET",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "zYILrk4RKFqdP66s",
"name": "[Omar] Notion credentials for GraphQL API"
}
},
"executeOnce": true,
"typeVersion": 1,
"continueOnFail": true
},
{
"id": "00736596-08ee-4ff6-b907-bd454dd406d9",
"name": "タイトルを短縮",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-1000,
2080
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4",
"cachedResultName": "GPT-4"
},
"options": {},
"messages": {
"values": [
{
"content": "=Make the following text more concise, so that it's max 150 chars long. If it's already less than 70 chars long, just return the original text. Do not return anything else other than the text.\n\nTEXT:\n{{ $json.title }}"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "VQtv7frm7eLiEDnd",
"name": "OpenAi account 7"
}
},
"typeVersion": 1
},
{
"id": "729928a2-8a5e-4b25-82be-ba1916b9953f",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1260,
2020
],
"parameters": {
"color": 7,
"width": 877.8549621677266,
"height": 214.7985362687051,
"content": "### Figure out issue assignee and title (shortening if necessary)"
},
"typeVersion": 1
},
{
"id": "86d3b72f-f235-4b37-877f-c8ab1f39ba30",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1260,
2280
],
"parameters": {
"color": 7,
"width": 877.8549621677266,
"height": 216.9904777194533,
"content": "### Compose issue description"
},
"typeVersion": 1
},
{
"id": "01c06352-76fa-4d63-b37b-2a0239d81302",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1260,
2560
],
"parameters": {
"color": 7,
"width": 877.8549621677266,
"height": 216.9904777194533,
"content": "### Create issue and add link to it in Notion"
},
"typeVersion": 1
},
{
"id": "1f152f08-0c5a-4806-bd85-7e9a5e386fe4",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1260,
1500
],
"parameters": {
"color": 7,
"width": 1164.99929221574,
"height": 442.760447146518,
"content": "### Get the issues to create from Notion (and load Linear team details)"
},
"typeVersion": 1
},
{
"id": "839d1815-419d-4acb-8668-94f1cbe45f1f",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1780,
1700
],
"parameters": {
"height": 278.9250421966361,
"content": "# Try me out\n1. In the form trigger node, enter the names of your Linear team(s) to display on the form \n2. Make sure your Notion page is formatted according to the [spec](https://www.notion.so/n8n/Template-for-design-review-automatic-Linear-import-8848dd09892341969faedd1313eea586?pvs=4) and shared with your Notion integration\n2. Click the 'test workflow' button below"
},
"typeVersion": 1
},
{
"id": "f9bc6e67-a9f0-4c9b-a9b3-fdea1fd9de3e",
"name": "未インポート、未チェックの to_do ブロックのみ",
"type": "n8n-nodes-base.filter",
"position": [
-220,
1760
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d7e85c09-8548-4fc8-a8a9-636e4529e9d9",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.type }}",
"rightValue": "to_do"
},
{
"id": "13fb565d-8951-4c89-9684-85c357459794",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$json.to_do.text.reduce((s, o) => s + o.plain_text, \"\").startsWith('[In Linear]') }}",
"rightValue": ""
},
{
"id": "0a9c8e94-11ec-4317-8de5-f22862555b78",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.to_do.checked }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "186a4272-4550-441e-9ef2-66de2dac5b8a",
"name": "n8n フォームトリガー",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1460,
1760
],
"webhookId": "5a631d63-f899-4967-acad-69924674e96a",
"parameters": {
"path": "5a631d63-f899-4967-acad-69924674e96a",
"formTitle": "Import Linear issues from Notion",
"formFields": {
"values": [
{
"fieldLabel": "Notion page URL",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Linear team name",
"fieldOptions": {
"values": [
{
"option": "AI"
},
{
"option": "Adore"
},
{
"option": "Payday"
},
{
"option": "NODES"
}
]
},
"requiredField": true
}
]
},
"responseMode": "responseNode",
"formDescription": "More information on Notion formatting required here: https://www.notion.so/n8n/8848dd09892341969faedd1313eea586"
},
"typeVersion": 2
},
{
"id": "0fed5dbe-54e9-4bc3-8ab3-6175347ecce7",
"name": "課題を取得",
"type": "n8n-nodes-base.notion",
"onError": "continueErrorOutput",
"position": [
-500,
1760
],
"parameters": {
"blockId": {
"__rl": true,
"mode": "url",
"value": "={{ $('n8n Form Trigger').item.json['Notion page URL'] }}"
},
"resource": "block",
"operation": "getAll",
"returnAll": true,
"simplifyOutput": false
},
"credentials": {
"notionApi": {
"id": "80",
"name": "Notion david-internal"
}
},
"typeVersion": 2.1
},
{
"id": "7cc756ad-55f3-4596-989a-df90d4c829c7",
"name": "コンテンツを Markdown に変換",
"type": "n8n-nodes-base.code",
"position": [
-780,
2340
],
"parameters": {
"jsCode": "function extractMarkdown(obj) {\n console.log('obj', obj.text)\n return obj.text.reduce((s, o) => {\n if(o.text?.link) {\n return s + '[' + o.text.content + '](' + o.text.link?.url + ')'\n }\n return s + o.text.content\n }, \"\")\n}\n\n\nconst indent = \" \"; // Four spaces\nlet parent_ids = [$input.all()[0].json.root_id]\n\nfor(item of $input.all()){\n\n // Generate the markdown\n\n if(item.json.type) {\n \n const type = item.json.type\n \n if(type == 'bulleted_list_item' || type == 'toggle') {\n item.json.markdown = '* ' + extractMarkdown(item.json[type])\n } else if(type == 'numbered_list_item') {\n item.json.markdown = '1. ' + extractMarkdown(item.json[type])\n } else if(type == 'to_do') {\n item.json.markdown = '+ [ ] ' + extractMarkdown(item.json[type])\n } else if(type == 'image') {\n item.json.markdown = ''\n } else if(type == 'video') {\n item.json.markdown = '[🎬 Video]('+$input.all()[0].json.page_url + '?pvs=4#' + item.json.id.replaceAll('-', '') +')'\n } else {\n item.json.markdown = extractMarkdown(item.json[type])\n }\n \n // Figure out how much to indent it\n // If parent ID is in list, remove everything after that ID\n // If parent ID is not in list, add it\n // If parent is the same, do nothing\n const parent_id_index = parent_ids.indexOf(item.json.parent_id);\n \n // Check if the value is found\n if (parent_id_index !== -1) {\n // Remove all elements after the first occurrence\n parent_ids.splice(parent_id_index + 1);\n } else {\n parent_ids.push(item.json.parent_id)\n }\n \n // Indent the markdown\n //if (type != \"image\") {\n item.json.markdown = indent.repeat(parent_ids.length - 1) + item.json.markdown\n //}\n }\n}\n\n// On returning, add in the root block content at the beginning\nreturn [\n ...[\n {\n \"json\": {\n \"markdown\":\nextractMarkdown($input.all()[0].json.root_content)\n },\n \"pairedItem\": 0\n }\n ],\n ...$input.all()\n]"
},
"typeVersion": 2
},
{
"id": "2bbd43a2-aebe-4ee5-8682-d76791214168",
"name": "エラーで応答",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-220,
1580
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "{\n \"formSubmittedText\": \"Couldn't fetch page content from Notion. Is it shared with your Notion integration?\"\n}"
},
"typeVersion": 1
},
{
"id": "c39912c4-d33f-4d79-9d5c-e71bd0f2517d",
"name": "エラーで応答1",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-740,
1580
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"formSubmittedText\": \"Couldn't find the team called '\" + {{ $('n8n Form Trigger').item.json['Linear team name'] }} + \"'\"\n} "
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"96bde9b1-b84e-445a-b90c-6dd4031076aa": {
"main": [
[
{
"node": "45c63a2d-d457-4882-ac99-4b8e4a63ae43",
"type": "main",
"index": 0
}
]
]
},
"0fed5dbe-54e9-4bc3-8ab3-6175347ecce7": {
"main": [
[
{
"node": "f9bc6e67-a9f0-4c9b-a9b3-fdea1fd9de3e",
"type": "main",
"index": 0
}
],
[
{
"node": "2bbd43a2-aebe-4ee5-8682-d76791214168",
"type": "main",
"index": 0
}
]
]
},
"bd107990-b009-4b81-8fee-a80c9ab09b4c": {
"main": [
[
{
"node": "0fed5dbe-54e9-4bc3-8ab3-6175347ecce7",
"type": "main",
"index": 0
}
]
]
},
"491a1176-18a7-442a-8f64-a8c946ac25dc": {
"main": [
[
{
"node": "7cc756ad-55f3-4596-989a-df90d4c829c7",
"type": "main",
"index": 0
}
]
]
},
"bb88f7df-deef-4c9d-b8af-3e59bf0e0b7d": {
"main": [
[
{
"node": "010105b6-38a2-4859-9e5d-b9624addeacc",
"type": "main",
"index": 0
}
]
]
},
"00736596-08ee-4ff6-b907-bd454dd406d9": {
"main": [
[
{
"node": "27a2111b-716b-4150-af92-ab90d7e83642",
"type": "main",
"index": 0
}
]
]
},
"15d9c526-95f3-4209-9a9f-a0ba4c09a67e": {
"main": [
[
{
"node": "c39912c4-d33f-4d79-9d5c-e71bd0f2517d",
"type": "main",
"index": 0
}
],
[
{
"node": "bd107990-b009-4b81-8fee-a80c9ab09b4c",
"type": "main",
"index": 0
}
]
]
},
"7d11aa76-c7bf-4aa3-9f94-fb2231f5055b": {
"main": [
null,
[
{
"node": "cc365fa1-a2cc-430c-8cb4-5d708b7a66b9",
"type": "main",
"index": 0
}
]
]
},
"186a4272-4550-441e-9ef2-66de2dac5b8a": {
"main": [
[
{
"node": "bea6febe-077f-4b90-887c-9c82954ef5d9",
"type": "main",
"index": 0
}
]
]
},
"27a2111b-716b-4150-af92-ab90d7e83642": {
"main": [
[
{
"node": "491a1176-18a7-442a-8f64-a8c946ac25dc",
"type": "main",
"index": 0
}
]
]
},
"45c63a2d-d457-4882-ac99-4b8e4a63ae43": {
"main": [
[
{
"node": "ce619c7d-8363-48ec-86c8-a1f16097eb3e",
"type": "main",
"index": 0
}
]
]
},
"ce619c7d-8363-48ec-86c8-a1f16097eb3e": {
"main": [
[
{
"node": "bb88f7df-deef-4c9d-b8af-3e59bf0e0b7d",
"type": "main",
"index": 0
}
]
]
},
"cc365fa1-a2cc-430c-8cb4-5d708b7a66b9": {
"main": [
[
{
"node": "00736596-08ee-4ff6-b907-bd454dd406d9",
"type": "main",
"index": 0
}
]
]
},
"010105b6-38a2-4859-9e5d-b9624addeacc": {
"main": [
[
{
"node": "7d11aa76-c7bf-4aa3-9f94-fb2231f5055b",
"type": "main",
"index": 0
}
]
]
},
"bea6febe-077f-4b90-887c-9c82954ef5d9": {
"main": [
[
{
"node": "15d9c526-95f3-4209-9a9f-a0ba4c09a67e",
"type": "main",
"index": 0
}
]
]
},
"7cc756ad-55f3-4596-989a-df90d4c829c7": {
"main": [
[
{
"node": "96bde9b1-b84e-445a-b90c-6dd4031076aa",
"type": "main",
"index": 0
}
]
]
},
"f9bc6e67-a9f0-4c9b-a9b3-fdea1fd9de3e": {
"main": [
[
{
"node": "7d11aa76-c7bf-4aa3-9f94-fb2231f5055b",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - エンジニアリング, プロダクト
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
APIアーキテクチャ抽出ツール
APIアーキテクチャ抽出器
If
Set
Code
+
If
Set
Code
88 ノードPolina Medvedieva
エンジニアリング
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
WordPress コンテンツジェネレータ v3
WordPress コンテンツジェネレーター v3
If
Set
Code
+
If
Set
Code
102 ノードAlex Kim
人工知能
ディープラーニングエージェント
ディープリサーチアジェント - 研究の自動化とNotionレポートジェネレーター
Set
Code
Filter
+
Set
Code
Filter
43 ノードAziz B
市場調査
評価指標の例: 文字列の類似性
評価指標サンプル:文字列類似度
Set
Code
Webhook
+
Set
Code
Webhook
12 ノードDavid Roberts
エンジニアリング
n8n、Apify、OpenAI o3 を使用したセルフホスト型 AI ディープリサーチエージェント
n8n、Apify、OpenAI o3を使用したセルフホスト型AI深度リサーチエージェント
If
Set
Code
+
If
Set
Code
87 ノードJimleuk
人工知能