n8n 워크플로우 노드 리네이머 by UpFastAI
중급
이것은Engineering, AI Summarization분야의자동화 워크플로우로, 12개의 노드를 포함합니다.주로 N8n, Set, Code, ManualTrigger, ChainLlm 등의 노드를 사용하며. AI(Gemini/Claude)를 사용하여 가독성을 높이기 위해 워크플로 노드 자동 이름 변경
사전 요구사항
- •Google Gemini API Key
사용된 노드 (12)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "",
"meta": {
"instanceId": ""
},
"name": "n8n Workflow Node Renamer by UpFastAI",
"tags": [],
"nodes": [
{
"id": "0cb0ac30-661f-4b18-a915-9205e26816c6",
"name": "워크플로우 수동 시작",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-848,
400
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3a1a361d-6109-4628-b348-1b6a31d4ee91",
"name": "AI 이름 제안 생성",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-144,
400
],
"parameters": {
"text": "=# **Role:**\nYou are an experienced n8n workflow expert with a focus on **clear and efficient node naming**.\n\n# **Task:**\nI will upload an n8n workflow (in JSON format). Analyze the contained nodes and for each node, propose a **concise and meaningful new title** that makes its function immediately understandable.\n\nTo determine the node's function accurately, pay close attention to its `type` (e.g., `n8n-nodes-base.code`) and its specific `parameters`. Consider the node's position within the workflow and its connections to other nodes to ensure the new name reflects the node's specific role in the overall process.\n\n# **Constraints:**\n* New titles must be unique within the workflow.\n* New titles must be short, user-friendly, and a maximum of five words.\n* Emojis are forbidden.\n\n# **CRITICAL OUTPUT FORMAT:**\nYour entire output must be a single JSON array. Each object in the array represents a single node and must contain two string pairs. This format is specifically designed to be used for a \"find and replace\" operation on the raw JSON file.\n\n1. The key for the original name must be `\"originalName\"`. Its value must be a string containing the *entire original name property*, for example: `\"\\\"name\\\": \\\"Google Sheets1\\\"\"`.\n2. The key for the new name must be `\"newName\"`. Its value must be a string containing the *entire new name property*, for example: `\"\\\"name\\\": \\\"Read New Customer Data\\\"\"`.\n\n## **Example JSON Output:**\n```json\n[\n {\n \"originalName\": \"\\\"name\\\": \\\"Set1\\\"\",\n \"newName\": \"\\\"name\\\": \\\"Prepare Welcome Email Content\\\"\"\n },\n {\n \"originalName\": \"\\\"name\\\": \\\"Send Email1\\\"\",\n \"newName\": \"\\\"name\\\": \\\"Send Welcome Email to Customer\\\"\"\n }\n]\n```\n\n# **Goal:**\nTo produce a clean JSON output that provides a direct mapping from the old name property to the new name property. This allows a developer to easily perform a find-and-replace operation on the workflow's JSON file to update all node titles efficiently.\n\n# **uploaded n8n workflow**\n{{ JSON.stringify($('Get Current Workflow JSON').first().json, null, 2) }}",
"batching": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "c0461ef0-bbe8-48d1-8a3d-3756a49ac6ff",
"name": "JSON 응답 구조 파싱",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-48,
624
],
"parameters": {
"autoFix": true,
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"originalName\": {\n \"type\": \"string\",\n \"description\": \"The entire original name property as a string, e.g., '\\\"name\\\": \\\"Old Name\\\"'\"\n },\n \"newName\": {\n \"type\": \"string\",\n \"description\": \"The entire new name property as a string, e.g., '\\\"name\\\": \\\"New Name\\\"'\"\n }\n },\n \"required\": [\n \"originalName\",\n \"newName\"\n ]\n }\n}"
},
"typeVersion": 1.3
},
{
"id": "349ddcbd-96a8-4a39-b77b-7d86cd9c6158",
"name": "이름 적용 및 참조 업데이트",
"type": "n8n-nodes-base.code",
"position": [
320,
400
],
"parameters": {
"jsCode": "const originalWorkflow = $('Get Current Workflow JSON').first().json;\nconst nameMappings = $('AI Generate Name Suggestions').first().json.output;\nconst suffix = $('Set Renamed Workflow Suffix').first().json.workflowNameSuffix;\n\nconst nameMap = {};\nfor (const mapping of nameMappings) {\n try {\n const oldName = mapping.originalName.match(/\"name\":\\s*\"(.*?)\"/)[1];\n const newName = mapping.newName.match(/\"name\":\\s*\"(.*?)\"/)[1];\n nameMap[oldName] = newName;\n } catch (e) {\n console.warn(\"Konnte ein Mapping nicht parsen:\", mapping);\n }\n}\n\nlet updatedWorkflow = JSON.parse(JSON.stringify(originalWorkflow));\n\nfor (const node of updatedWorkflow.nodes) {\n if (nameMap[node.name]) {\n node.name = nameMap[node.name];\n }\n}\n\nconst newConnections = {};\nfor (const oldStartNodeName in updatedWorkflow.connections) {\n const newStartNodeName = nameMap[oldStartNodeName] || oldStartNodeName;\n const connectionTypes = updatedWorkflow.connections[oldStartNodeName];\n newConnections[newStartNodeName] = {};\n for (const connectionType in connectionTypes) {\n const targets = connectionTypes[connectionType];\n const updatedTargets = targets.map(targetGroup =>\n targetGroup.map(target => ({ ...target, node: nameMap[target.node] || target.node }))\n );\n newConnections[newStartNodeName][connectionType] = updatedTargets;\n }\n}\nupdatedWorkflow.connections = newConnections;\n\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction updateAllReferences(obj) {\n for (const key in obj) {\n if (typeof obj[key] === 'string') {\n let value = obj[key];\n if (value.includes('$(') || value.includes('$items(')) {\n for (const oldName in nameMap) {\n const newName = nameMap[oldName];\n const escapedOldName = escapeRegExp(oldName);\n const patterns = [\n { regex: new RegExp(`\\\\$\\\\('${escapedOldName}'\\\\)`, 'g'), replacement: `$('${newName}')` },\n { regex: new RegExp(`\\\\$\\\\(\"${escapedOldName}\"\\\\)`, 'g'), replacement: `\\$(\"${newName}\")` },\n { regex: new RegExp(`\\\\$items\\\\('${escapedOldName}'\\\\)`, 'g'), replacement: `$items('${newName}')` },\n { regex: new RegExp(`\\\\$items\\\\(\"${escapedOldName}\"\\\\)`, 'g'), replacement: `$items(\"${newName}\")` }\n ];\n for (const pattern of patterns) {\n value = value.replace(pattern.regex, pattern.replacement);\n }\n }\n obj[key] = value;\n }\n } else if (typeof obj[key] === 'object' && obj[key] !== null) {\n updateAllReferences(obj[key]);\n }\n }\n}\nupdateAllReferences(updatedWorkflow.nodes);\n\nconst finalWorkflowForApi = {\n name: originalWorkflow.name + suffix,\n nodes: updatedWorkflow.nodes,\n connections: updatedWorkflow.connections,\n settings: {\n executionOrder: originalWorkflow.settings.executionOrder,\n timezone: originalWorkflow.settings.timezone,\n errorWorkflow: originalWorkflow.settings.errorWorkflow,\n },\n tags: originalWorkflow.tags || []\n};\n\nreturn [{\n json: finalWorkflowForApi\n}];"
},
"typeVersion": 2
},
{
"id": "b84867d7-c1a5-4c97-bd5e-85696ac4820d",
"name": "새 워크플로우 복사본 생성",
"type": "n8n-nodes-base.n8n",
"position": [
544,
400
],
"parameters": {
"operation": "create",
"requestOptions": {},
"workflowObject": "={{ JSON.stringify($json) }}"
},
"credentials": {
"n8nApi": {
"id": "",
"name": ""
}
},
"typeVersion": 1
},
{
"id": "ae69490d-cf1b-452c-af59-8e7bc452a09b",
"name": "현재 워크플로우 JSON 가져오기",
"type": "n8n-nodes-base.n8n",
"position": [
-400,
400
],
"parameters": {
"operation": "get",
"workflowId": {
"__rl": true,
"mode": "list",
"value": "W9Zl6OSnvKpmCbPr",
"cachedResultName": "Prompting Redaktionsplan (#W9Zl6OSnvKpmCbPr)"
},
"requestOptions": {}
},
"credentials": {
"n8nApi": {
"id": "",
"name": ""
}
},
"typeVersion": 1
},
{
"id": "acf05fbc-83b0-4f27-a73f-ca01c81b3a9a",
"name": "이전 워크플로우 비활성화",
"type": "n8n-nodes-base.n8n",
"onError": "continueRegularOutput",
"position": [
768,
400
],
"parameters": {
"operation": "deactivate",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Get Current Workflow JSON').item.json.id }}"
},
"requestOptions": {}
},
"credentials": {
"n8nApi": {
"id": "",
"name": ""
}
},
"typeVersion": 1
},
{
"id": "ef0a3ddf-f793-47a9-b6c0-e7105745d88d",
"name": "재명명된 워크플로우 활성화",
"type": "n8n-nodes-base.n8n",
"position": [
992,
400
],
"parameters": {
"operation": "activate",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create New Workflow Copy').item.json.id }}"
},
"requestOptions": {}
},
"credentials": {
"n8nApi": {
"id": "",
"name": ""
}
},
"typeVersion": 1
},
{
"id": "0a965b42-0ac1-4e2e-831e-3db86bb963b2",
"name": "Gemini AI 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
32,
832
],
"parameters": {
"options": {},
"modelName": "models/gemini-flash-latest"
},
"credentials": {
"googlePalmApi": {
"id": "",
"name": ""
}
},
"typeVersion": 1
},
{
"id": "e209ba84-7749-4541-9749-a78a53cdd751",
"name": "Claude Sonnet AI 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
-176,
624
],
"parameters": {
"model": "anthropic/claude-sonnet-4.5",
"options": {
"temperature": 0
}
},
"credentials": {
"openRouterApi": {
"id": "",
"name": ""
}
},
"typeVersion": 1
},
{
"id": "21e21244-747b-4eed-8b77-c42e7060af45",
"name": "워크플로우 설명 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-848,
0
],
"parameters": {
"width": 672,
"height": 320,
"content": "## **n8n Workflow Node Renamer**\n\nThis n8n workflow automates the process of renaming nodes for clarity. It uses AI to analyze each node's function and assigns a concise, descriptive name, significantly improving the readability and maintainability of your workflows.\n\n### **How to use it:**\n1. (Optional) Customize the name suffix in the \"Set Renamed Workflow Suffix\" node.\n2. Enter the ID of the workflow you want to rename in the \"Get Current Workflow JSON\" node.\n3. Ensure your AI model credentials are correctly set up.\n4. Run the workflow manually.\n\nPowered by **UpFastAI - Automating Intelligence**"
},
"typeVersion": 1
},
{
"id": "b0e9ed90-cc78-4cd3-b7a4-1505102b8476",
"name": "재명명된 워크플로우 접미사 설정",
"type": "n8n-nodes-base.set",
"position": [
-624,
400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2fe31286-e0ce-4bd5-bdf5-7903a51da3ad",
"name": "workflowNameSuffix",
"type": "string",
"value": " - new node names"
}
]
}
},
"typeVersion": 3.4
}
],
"active": false,
"pinData": {},
"settings": {
"timezone": "",
"errorWorkflow": "",
"executionOrder": "v1"
},
"versionId": "f0208b1f-9b7b-4d32-8bbd-cd80d6de32aa",
"connections": {
"0a965b42-0ac1-4e2e-831e-3db86bb963b2": {
"ai_languageModel": [
[
{
"node": "c0461ef0-bbe8-48d1-8a3d-3756a49ac6ff",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"e209ba84-7749-4541-9749-a78a53cdd751": {
"ai_languageModel": [
[
{
"node": "3a1a361d-6109-4628-b348-1b6a31d4ee91",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"acf05fbc-83b0-4f27-a73f-ca01c81b3a9a": {
"main": [
[
{
"node": "ef0a3ddf-f793-47a9-b6c0-e7105745d88d",
"type": "main",
"index": 0
}
]
]
},
"0cb0ac30-661f-4b18-a915-9205e26816c6": {
"main": [
[
{
"node": "b0e9ed90-cc78-4cd3-b7a4-1505102b8476",
"type": "main",
"index": 0
}
]
]
},
"b84867d7-c1a5-4c97-bd5e-85696ac4820d": {
"main": [
[
{
"node": "acf05fbc-83b0-4f27-a73f-ca01c81b3a9a",
"type": "main",
"index": 0
}
]
]
},
"ae69490d-cf1b-452c-af59-8e7bc452a09b": {
"main": [
[
{
"node": "3a1a361d-6109-4628-b348-1b6a31d4ee91",
"type": "main",
"index": 0
}
]
]
},
"b0e9ed90-cc78-4cd3-b7a4-1505102b8476": {
"main": [
[
{
"node": "ae69490d-cf1b-452c-af59-8e7bc452a09b",
"type": "main",
"index": 0
}
]
]
},
"3a1a361d-6109-4628-b348-1b6a31d4ee91": {
"main": [
[
{
"node": "349ddcbd-96a8-4a39-b77b-7d86cd9c6158",
"type": "main",
"index": 0
}
]
]
},
"c0461ef0-bbe8-48d1-8a3d-3756a49ac6ff": {
"ai_outputParser": [
[
{
"node": "3a1a361d-6109-4628-b348-1b6a31d4ee91",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"349ddcbd-96a8-4a39-b77b-7d86cd9c6158": {
"main": [
[
{
"node": "b84867d7-c1a5-4c97-bd5e-85696ac4820d",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 엔지니어링, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
LLM 테스트 자동화: GPT-4 평가 및 Google Sheets 추적
LLM 테스트 자동화: GPT-4 평가 및 Google Sheets 추적
Set
Limit
Merge
+
Set
Limit
Merge
17 노드Adam Janes
엔지니어링
01 AI 미디어 바이어를 사용한 Facebook 광고 성과 분석 및 Google Sheets로 인사이트 전송
Gemini AI를 사용한 Facebook 광고 분석 및 Google Sheets로 인사이트 전송
If
Set
Code
+
If
Set
Code
34 노드JJ Tham
시장 조사
커뮤니티 문제 모니터링 및 OpenRouter AI, Reddit, 포럼 크롤링
OpenRouter AI, Reddit, 포럼을 사용하여 커뮤니티 문제를 모니터링합니다.
Set
Code
Html
+
Set
Code
Html
29 노드Julian Kaiser
시장 조사
Bright Data와 Google Gemini를 사용하여 Google Maps 기업 추출 및 리드 풍부화
Bright Data와 Google Gemini를 사용한 Google Maps 기업 추출 및 리드 풍부 도구
Set
Code
Wait
+
Set
Code
Wait
29 노드Ranjan Dailata
리드 생성
AI, Apify 및 Telegram 통합을 사용한 도구 평가 자동화
Telegram, Apify, AI 및 Google Sheets를 사용한 웹사이트 도구 분석 자동화
If
Set
Code
+
If
Set
Code
20 노드Mirza Ajmal
AI 요약
Gemini에서 Google Sheets로 자동화된 학술 논문 메타데이터 및 변수 추출
자동화된 학술 논문 메타데이터 및 변수 추출, Gemini에서 Google Sheets로
Set
Code
Wait
+
Set
Code
Wait
39 노드OwenLee
문서 추출
워크플로우 정보
난이도
중급
노드 수12
카테고리2
노드 유형9
저자
Dr. Christoph Schorsch
@upfastaiAI Automations Manager with nature scientific background and experience in haeding departments in R&D.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유