自动职位列表提取与发布模板
高级
这是一个HR, Multimodal AI领域的自动化工作流,包含 53 个节点。主要使用 If, Set, Code, Wait, Telegram 等节点。 自动职位列表提取与发布模板
前置要求
- •Telegram Bot Token
- •Google Drive API 凭证
- •可能需要目标 API 的认证凭证
- •OpenAI API Key
- •Supabase URL 和 API Key
使用的节点 (53)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "c2650793f644091dc80fb900fe63448ad1f4b774008de9608064d67294f8307c",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "27e265ef-0178-463c-894f-638b05f36ab6",
"name": "搜索文件",
"type": "n8n-nodes-base.googleDrive",
"position": [
-1568,
1328
],
"parameters": {
"filter": {
"folderId": {
"__rl": true,
"mode": "list",
"value": "1qarDrwjNIrrx2wk8RMzLpyIq_6r0DHLX",
"cachedResultUrl": "https://drive.google.com/drive/folders/1qarDrwjNIrrx2wk8RMzLpyIq_6r0DHLX",
"cachedResultName": "GPT"
}
},
"options": {},
"resource": "fileFolder",
"returnAll": true
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "nTWGelaHlbvHrG66",
"name": "Khaisa Studio"
}
},
"typeVersion": 3
},
{
"id": "40108440-f928-4550-b7f9-7777ccbee4e8",
"name": "获取数据",
"type": "n8n-nodes-base.googleDrive",
"position": [
-1344,
1328
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "nTWGelaHlbvHrG66",
"name": "Khaisa Studio"
}
},
"typeVersion": 3
},
{
"id": "b47daf1e-f98e-4039-a521-e18117df50cd",
"name": "Supabase 向量存储",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
-880,
1328
],
"parameters": {
"mode": "insert",
"options": {},
"tableName": {
"__rl": true,
"mode": "list",
"value": "documents",
"cachedResultName": "documents"
}
},
"credentials": {
"supabaseApi": {
"id": "rb73xq0erYUAZCau",
"name": "REcharge"
}
},
"typeVersion": 1.1
},
{
"id": "6e83958d-7e39-4459-8045-6db75f0d1d61",
"name": "OpenAI 嵌入",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-896,
1552
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "hdBomZukFu3cyDUS",
"name": "Sumopod"
}
},
"typeVersion": 1.2
},
{
"id": "0ce8cdb8-a132-47bc-ad1b-7bc4e3f0a1df",
"name": "默认数据加载器",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
-768,
1552
],
"parameters": {
"options": {},
"dataType": "binary"
},
"typeVersion": 1
},
{
"id": "21666edf-7e66-4953-bd0e-1fb5b5882428",
"name": "递归字符文本分割器",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
-656,
1680
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "4d4d3aab-982c-4a68-ba74-a13cd37b946c",
"name": "遍历项目",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-1120,
1328
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "1ba1fb98-be3f-4fca-b145-920b02609c8b",
"name": "Supabase 向量存储1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
416,
2000
],
"parameters": {
"mode": "retrieve-as-tool",
"options": {
"queryName": "match_documents"
},
"toolName": "document",
"tableName": {
"__rl": true,
"mode": "list",
"value": "documents",
"cachedResultName": "documents"
},
"toolDescription": "use thisto get information about the company"
},
"credentials": {
"supabaseApi": {
"id": "rb73xq0erYUAZCau",
"name": "REcharge"
}
},
"typeVersion": 1.1
},
{
"id": "9dabf5f6-2789-4cc3-ad1f-1ae0503f3f90",
"name": "OpenAI1 嵌入",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
512,
2208
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "hdBomZukFu3cyDUS",
"name": "Sumopod"
}
},
"typeVersion": 1.2
},
{
"id": "0318eb86-0df5-4552-9ed4-6d3e11b5d346",
"name": "Google Drive 触发器",
"type": "n8n-nodes-base.googleDriveTrigger",
"disabled": true,
"position": [
-1792,
1328
],
"parameters": {
"event": "fileUpdated",
"options": {
"fileType": "all"
},
"pollTimes": {
"item": [
{
"hour": 0
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1qarDrwjNIrrx2wk8RMzLpyIq_6r0DHLX",
"cachedResultUrl": "https://drive.google.com/drive/folders/1qarDrwjNIrrx2wk8RMzLpyIq_6r0DHLX",
"cachedResultName": "GPT"
}
},
"typeVersion": 1
},
{
"id": "efb7fdfc-6506-481a-9c2c-0ff690416fa1",
"name": "📥 通过Telegram的新工作链接",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-1824,
2048
],
"webhookId": "925f5476-09a3-46b9-9b53-0f43a2c84995",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "8053e182-b9aa-4273-a82b-cbc9cd2cb415",
"name": "🔧 准备URL用于提取",
"type": "n8n-nodes-base.set",
"position": [
-1600,
2032
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8d5bf5e7-0f91-4012-b180-4bef3f9c93cd",
"name": "text",
"type": "string",
"value": "={{ $json.text || $json.message.text }}"
},
{
"id": "1a3739bb-d9c2-449b-929b-a1fb58196458",
"name": "cleanUrl",
"type": "string",
"value": "={{ ($json.message.text && $json.message.text.includes('://')\n ? $json.message.text.split('/').slice(0,3).join('/')\n : 'Invalid URL'\n ).replace(/\\r?\\n$/, '') }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "2f11c954-c6cb-46b3-916d-ddb6df220b9f",
"name": "🧮 映射工作类型和类别ID",
"type": "n8n-nodes-base.code",
"position": [
816,
1728
],
"parameters": {
"jsCode": "// 1. Ambil array kategori dari input\nconst inputCategories = $('🧠 Extract Job Data with GPT').first().json.choices[0].message.content.categories;\n\n// 1b. Ambil job_type sebagai satu string\nconst inputType = $('🧠 Extract Job Data with GPT').first().json.choices[0].message.content.job_type;\n\n// 2. Array mapping antara `category` dan `id`\nconst categoryMap = [\n { id: 299, category: \"2d\" },\n { id: 298, category: \"3d\" },\n { id: 315, category: \"3DFX\" },\n { id: 284, category: \"Animación 2d\" },\n { id: 286, category: \"Animación 3d\" },\n { id: 617, category: \"Artista de color\" },\n { id: 312, category: \"Audio SFX\" },\n { id: 540, category: \"character artist\" },\n { id: 445, category: \"Character FX (CFX)\" },\n { id: 596, category: \"Cinematic Artist\" },\n { id: 462, category: \"Comic\" },\n { id: 294, category: \"Compositor 3d\" },\n { id: 487, category: \"Compositor Digital\" },\n { id: 463, category: \"Concept Art\" },\n { id: 300, category: \"Creativo\" },\n { id: 537, category: \"Crowd Artist\" },\n { id: 301, category: \"Desarrollo de Software\" },\n { id: 316, category: \"Desarrollo Visual\" },\n { id: 302, category: \"Dibujante\" },\n { id: 612, category: \"Dirección\" },\n { id: 292, category: \"Director de Arte\" },\n { id: 317, category: \"Diseño de personajes\" },\n { id: 291, category: \"Diseño Gráfico\" },\n { id: 310, category: \"Edición de video\" },\n { id: 533, category: \"Environment Artist\" },\n { id: 620, category: \"Escultura Digital\" },\n { id: 622, category: \"Filmmaker\" },\n { id: 304, category: \"Fotografía\" },\n { id: 314, category: \"Game Artist\" },\n { id: 486, category: \"Game Designer\" },\n { id: 506, category: \"Game developer\" },\n { id: 482, category: \"Game Producer\" },\n { id: 576, category: \"Gameplay Animator\" },\n { id: 290, category: \"Generalista 3d\" },\n { id: 452, category: \"Grooming Hair/Fur\" },\n { id: 303, category: \"Guionista\" },\n { id: 305, category: \"Iluminación\" },\n { id: 288, category: \"Ilustración\" },\n { id: 616, category: \"Inteligencia Artificial\" },\n { id: 311, category: \"Layout Artist\" },\n { id: 619, category: \"Look Development\" },\n { id: 464, category: \"Matte Painting\" },\n { id: 287, category: \"Modelador 3d\" },\n { id: 524, category: \"Motion Designer\" },\n { id: 289, category: \"Motion Graphics\" },\n { id: 588, category: \"Pixel Art\" },\n { id: 307, category: \"Postproducción\" },\n { id: 594, category: \"Previs\" },\n { id: 297, category: \"Producción\" },\n { id: 483, category: \"Programador\" },\n { id: 592, category: \"Realidad Virtual (VR)\" },\n { id: 448, category: \"Render Wrangler\" },\n { id: 313, category: \"Rigger\" },\n { id: 459, category: \"Shading & Texturing\" },\n { id: 295, category: \"Storyboard\" },\n { id: 296, category: \"Storytelling\" },\n { id: 595, category: \"Technical Artist\" },\n { id: 485, category: \"Technical Director (TD)\" },\n { id: 308, category: \"UI / UX\" },\n { id: 309, category: \"VFX\" },\n { id: 589, category: \"Videojuegos\" },\n { id: 593, category: \"Virtual Production\" },\n { id: 293, category: \"Visualización Arquitectónica\" },\n { id: 590, category: \"VR & AR\" }\n];\n\n// 2b. Array mapping antara `type` dan `id`\nconst typeMap = [\n { \"id\": 282, \"type\": \"Freelance / Remoto / Teletrabajo\" },\n { \"id\": 318, \"type\": \"Indiferente\" },\n { \"id\": 283, \"type\": \"Prácticas\" },\n { \"id\": 281, \"type\": \"Proyecto\" },\n { \"id\": 279, \"type\": \"Tiempo completo\" },\n { \"id\": 280, \"type\": \"Tiempo parcial\" }\n];\n\n// 3. Map kategori input → array ID\nconst fixCategory = Array.isArray(inputCategories)\n ? inputCategories\n .map(name => {\n const match = categoryMap.find(obj => obj.category === name);\n return match ? match.id : null;\n })\n .filter(id => id !== null)\n : [];\n\n// 4. Cari ID tipe berdasarkan inputType (string), balikan sebagai array\nconst foundType = typeMap.find(obj => obj.type === inputType);\nconst fixType = foundType ? [foundType.id] : [];\n\n// 5. Kembalikan kedua array dalam satu objek JSON\nreturn [\n {\n json: {\n fixCategory,\n fixType\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "122181aa-b26a-426a-875d-93bb2ff7b05f",
"name": "📥 下载公司Logo",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
1472,
1728
],
"parameters": {
"url": "={{ $json.processedIconUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "bb8acbf0-9f1b-4866-8771-3ae7c727d693",
"name": "☁️ 上传Logo到WordPress",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
1712,
1728
],
"parameters": {
"url": "https://yourwebsite.es/wp-json/wp/v2/media",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Disposition",
"value": "=attachment; filename=\"logo-{{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.company }}.jpeg\""
},
{
"name": "Content-Type",
"value": "image/jpeg"
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "wordpressApi"
},
"credentials": {
"wordpressApi": {
"id": "QMDWc5KoLU8O3P19",
"name": "WP - Mincara (beginicaranya)"
}
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "d7704688-f15b-4869-acd8-2067a36f5dfc",
"name": "📦 格式化最终工作发布数据",
"type": "n8n-nodes-base.set",
"position": [
1936,
1728
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "title",
"name": "title",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.title }}"
},
{
"id": "content",
"name": "content",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.html }}\n"
},
{
"id": "job_listing_type",
"name": "job_listing_type",
"type": "array",
"value": "=[{{ $('🧮 Map Job Type & Category IDs').item.json.fixType[0] }}]"
},
{
"id": "job_listing_category",
"name": "job_listing_category",
"type": "array",
"value": "={{ $('🧮 Map Job Type & Category IDs').item.json.fixCategory }}"
},
{
"id": "_job_location",
"name": "_job_location",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.location }}"
},
{
"id": "_company_name",
"name": "_company_name",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.company }}"
},
{
"id": "_company_logo",
"name": "_company_logo",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.logo || \"http://www.notodoanimacion.es/wp-content/uploads/2025/06/logo-Sony-Pictures-Animation-1.png\" }}"
},
{
"id": "_application",
"name": "_application",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.original_link || $('🔧 Prepare URL for Extraction').item.json.text }}"
},
{
"id": "7df4886d-0180-4279-9bff-f8f3ebc2961c",
"name": "companyLogo",
"type": "string",
"value": "={{ $json.guid.raw }}"
},
{
"id": "b9a766da-8bd6-4950-a243-8005c61c3ca9",
"name": "status",
"type": "string",
"value": "publish"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9885c9df-0835-466b-a6af-41806f868ecc",
"name": "✅ 所有字段都可用吗?",
"type": "n8n-nodes-base.if",
"onError": "continueErrorOutput",
"position": [
2160,
1712
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "8f4efbe7-3fc1-4be3-b4c6-f2b7b1f8f00a",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.title }}",
"rightValue": ""
},
{
"id": "8194f924-3ef7-4056-a909-3499d8c116b3",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.job_listing_category }}",
"rightValue": ""
},
{
"id": "373f2081-f7ac-4313-a472-6d10770dd17a",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.job_listing_type }}",
"rightValue": ""
},
{
"id": "74166a2f-57e8-4fed-8bcf-cd240779543a",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json._job_location }}",
"rightValue": ""
},
{
"id": "bdee50a8-cdff-4570-b88a-8cf560468fa2",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json._application }}",
"rightValue": ""
},
{
"id": "48ab4287-4b6c-4241-a50f-1ddb40456fb2",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.companyLogo }}",
"rightValue": ""
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "2d4d5a37-785c-488e-9698-95d4c4acc220",
"name": "如果不有效",
"type": "n8n-nodes-base.telegram",
"position": [
2384,
1408
],
"webhookId": "033439cf-08eb-4df7-be1a-3a617027ce35",
"parameters": {
"text": "=Failed - Missing required fields. Please check extraction process.\n\nTrying another approach...",
"chatId": "={{ $('📥 New Job Link via Telegram').first().json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "2b937eed-2ee2-42d6-897b-75d67e865bbb",
"name": "通知:处理工作中",
"type": "n8n-nodes-base.telegram",
"position": [
-928,
1952
],
"webhookId": "936a1870-5650-456a-b6bb-be70967ae64a",
"parameters": {
"text": "=hi, {{ $('📥 New Job Link via Telegram').item.json.message.chat.first_name }}\n\nprocessing job...",
"chatId": "={{ $('📥 New Job Link via Telegram').item.json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "53185894-2a97-45df-ad7f-2295ba60e55f",
"name": "通知:提取中",
"type": "n8n-nodes-base.telegram",
"position": [
-480,
1952
],
"webhookId": "1c4064cc-c0fb-4100-ad77-3ff236a1e15c",
"parameters": {
"text": "<i>Extracting web data... </i>",
"chatId": "={{ $('📥 New Job Link via Telegram').item.json.message.chat.id }}",
"messageId": "={{ $json.result.message_id }}",
"operation": "editMessageText",
"additionalFields": {
"parse_mode": "HTML"
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "b0c5d81e-1524-42f7-a951-e1615674ede6",
"name": "条件判断",
"type": "n8n-nodes-base.if",
"position": [
-32,
1872
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "31d50777-6c34-4a2a-b570-8bcd32073824",
"operator": {
"type": "boolean",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.title }}",
"rightValue": ""
},
{
"id": "9ae85f70-c7c3-4a1a-a2c8-64c3ad388c0b",
"operator": {
"type": "boolean",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.description }}",
"rightValue": ""
},
{
"id": "01c42779-16f4-452b-b328-b91f0f5b9a5b",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.url }}",
"rightValue": ""
},
{
"id": "7c6414cd-9d44-45bb-b999-30a0e1cd1993",
"operator": {
"type": "boolean",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.content }}",
"rightValue": ""
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "19eda755-411f-4c05-aaef-1f1bed9bc10a",
"name": "通知:成功提取",
"type": "n8n-nodes-base.telegram",
"position": [
192,
1776
],
"webhookId": "51bfc648-4499-4f61-9aa4-61e6b7b617dc",
"parameters": {
"text": "Jobs Extracted! Processing input with openAI...",
"chatId": "={{ $('notify: extracting').item.json.result.chat.id }}",
"messageId": "={{ $('notify: extracting').item.json.result.message_id }}",
"operation": "editMessageText",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "9b0a33d2-59be-40dd-80a4-60ba3c9cb10a",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1840,
1216
],
"parameters": {
"width": 1400,
"height": 620,
"content": "## RAG数据"
},
"typeVersion": 1
},
{
"id": "a9a62b30-7ab6-48da-9ea6-0d0f2026b03b",
"name": "📚 加载有效工作类型和类别",
"type": "n8n-nodes-base.set",
"position": [
-1376,
2048
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5b365fce-7a88-431b-aee7-4bf5a0171a1f",
"name": "category",
"type": "array",
"value": "=[\n { \"id\": 299, \"category\": \"2d\" },\n { \"id\": 298, \"category\": \"3d\" },\n { \"id\": 315, \"category\": \"3DFX\" },\n { \"id\": 284, \"category\": \"Animación 2d\" },\n { \"id\": 286, \"category\": \"Animación 3d\" },\n { \"id\": 617, \"category\": \"Artista de color\" },\n { \"id\": 312, \"category\": \"Audio SFX\" },\n { \"id\": 540, \"category\": \"character artist\" },\n { \"id\": 445, \"category\": \"Character FX (CFX)\" },\n { \"id\": 596, \"category\": \"Cinematic Artist\" },\n { \"id\": 462, \"category\": \"Comic\" },\n { \"id\": 294, \"category\": \"Compositor 3d\" },\n { \"id\": 487, \"category\": \"Compositor Digital\" },\n { \"id\": 463, \"category\": \"Concept Art\" },\n { \"id\": 300, \"category\": \"Creativo\" },\n { \"id\": 537, \"category\": \"Crowd Artist\" },\n { \"id\": 301, \"category\": \"Desarrollo de Software\" },\n { \"id\": 316, \"category\": \"Desarrollo Visual\" },\n { \"id\": 302, \"category\": \"Dibujante\" },\n { \"id\": 612, \"category\": \"Dirección\" },\n { \"id\": 292, \"category\": \"Director de Arte\" },\n { \"id\": 317, \"category\": \"Diseño de personajes\" },\n { \"id\": 291, \"category\": \"Diseño Gráfico\" },\n { \"id\": 310, \"category\": \"Edición de video\" },\n { \"id\": 533, \"category\": \"Environment Artist\" },\n { \"id\": 620, \"category\": \"Escultura Digital\" },\n { \"id\": 622, \"category\": \"Filmmaker\" },\n { \"id\": 304, \"category\": \"Fotografía\" },\n { \"id\": 314, \"category\": \"Game Artist\" },\n { \"id\": 486, \"category\": \"Game Designer\" },\n { \"id\": 506, \"category\": \"Game developer\" },\n { \"id\": 482, \"category\": \"Game Producer\" },\n { \"id\": 576, \"category\": \"Gameplay Animator\" },\n { \"id\": 290, \"category\": \"Generalista 3d\" },\n { \"id\": 452, \"category\": \"Grooming Hair/Fur\" },\n { \"id\": 303, \"category\": \"Guionista\" },\n { \"id\": 305, \"category\": \"Iluminación\" },\n { \"id\": 288, \"category\": \"Ilustración\" },\n { \"id\": 616, \"category\": \"Inteligencia Artificial\" },\n { \"id\": 311, \"category\": \"Layout Artist\" },\n { \"id\": 619, \"category\": \"Look Development\" },\n { \"id\": 464, \"category\": \"Matte Painting\" },\n { \"id\": 287, \"category\": \"Modelador 3d\" },\n { \"id\": 524, \"category\": \"Motion Designer\" },\n { \"id\": 289, \"category\": \"Motion Graphics\" },\n { \"id\": 588, \"category\": \"Pixel Art\" },\n { \"id\": 307, \"category\": \"Postproducción\" },\n { \"id\": 594, \"category\": \"Previs\" },\n { \"id\": 297, \"category\": \"Producción\" },\n { \"id\": 483, \"category\": \"Programador\" },\n { \"id\": 592, \"category\": \"Realidad Virtual (VR)\" },\n { \"id\": 448, \"category\": \"Render Wrangler\" },\n { \"id\": 313, \"category\": \"Rigger\" },\n { \"id\": 459, \"category\": \"Shading & Texturing\" },\n { \"id\": 295, \"category\": \"Storyboard\" },\n { \"id\": 296, \"category\": \"Storytelling\" },\n { \"id\": 595, \"category\": \"Technical Artist\" },\n { \"id\": 485, \"category\": \"Technical Director (TD)\" },\n { \"id\": 308, \"category\": \"UI / UX\" },\n { \"id\": 309, \"category\": \"VFX\" },\n { \"id\": 589, \"category\": \"Videojuegos\" },\n { \"id\": 593, \"category\": \"Virtual Production\" },\n { \"id\": 293, \"category\": \"Visualización Arquitectónica\" },\n { \"id\": 590, \"category\": \"VR & AR\" }\n]\n"
},
{
"id": "9c795618-08e9-4ae1-a1b2-f6e45d6d5bf0",
"name": "types",
"type": "array",
"value": "=[\n { \"id\": 282, \"type\": \"Freelance / Remoto / Teletrabajo\" },\n { \"id\": 318, \"type\": \"Indiferente\" },\n { \"id\": 283, \"type\": \"Prácticas\" },\n { \"id\": 281, \"type\": \"Proyecto\" },\n { \"id\": 279, \"type\": \"Tiempo completo\" },\n { \"id\": 280, \"type\": \"Tiempo parcial\" }\n]\n\n"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "c0295bdb-d2d3-4988-9b8f-09ea94f3b772",
"name": "通知:错误",
"type": "n8n-nodes-base.telegram",
"position": [
944,
1968
],
"webhookId": "936a1870-5650-456a-b6bb-be70967ae64a",
"parameters": {
"text": "=Something went wrong \n\n<b>error:</b> <code>{{ $json.error.message }}</code>",
"chatId": "={{ $('📥 New Job Link via Telegram').item.json.message.chat.id }}",
"messageId": "={{ $('notify: processing job').item.json.result.message_id }}",
"operation": "editMessageText",
"additionalFields": {
"parse_mode": "HTML"
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "d986c7c1-edcb-4b84-a7a5-321b6df8d562",
"name": "等待",
"type": "n8n-nodes-base.wait",
"position": [
-704,
1952
],
"webhookId": "56532de1-7341-4ea7-b315-e1716a1c7815",
"parameters": {
"amount": 1.25
},
"typeVersion": 1.1
},
{
"id": "ea1fbbb2-b0dc-4ab8-b0c9-6d993bb95d81",
"name": "有效URL?",
"type": "n8n-nodes-base.if",
"position": [
-1152,
2048
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "35deee67-0d08-46f8-a0e2-2f75cda4c08e",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $('🔧 Prepare URL for Extraction').item.json.cleanUrl }}",
"rightValue": "Invalid URL"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e8169ac9-8b39-487c-a190-353127378cb7",
"name": "通知:错误URL",
"type": "n8n-nodes-base.telegram",
"position": [
-928,
2144
],
"webhookId": "936a1870-5650-456a-b6bb-be70967ae64a",
"parameters": {
"text": "=<i> thats not a valid url, please re-check your input...</i>",
"chatId": "={{ $('📥 New Job Link via Telegram').item.json.message.chat.id }}",
"additionalFields": {
"parse_mode": "HTML",
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "e6a7aa5b-6d04-49d4-b920-3895e935baf6",
"name": "🧠 使用GPT提取工作数据",
"type": "@n8n/n8n-nodes-langchain.openAi",
"onError": "continueErrorOutput",
"position": [
416,
1776
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini-2025-04-14",
"cachedResultName": "GPT-4.1-MINI-2025-04-14"
},
"options": {},
"messages": {
"values": [
{
"content": "=Title: {{ $('Extract').item.json.title }}\nurl: {{ $('Extract').item.json.url }}\ncontent: {{ $('Extract').item.json.content }}\n\nmetadata\nauthor: {{ $('Extract').item.json.metadata.author }}\n\nicon: {{ $('Extract').item.json.external.icon['https://sp-tools-website.s3-eu-west-1.amazonaws.com/media/static/favicon.gif'] }}\n\n"
},
{
"role": "=system",
"content": "=You are a specialized article regenerator who works exclusively with information and rules stored in the \"document\" knowledge base.\n\nExtract rigorously the following fields from the provided job-offer HTML:\n\t•\ttitle\n\t•\tjob_type\n\t•\tcategories (array)\n\t•\tlocation (search in text of offer (body), or put \"sin definir\")\n\t•\tcompany\n\t•\tlogo\n\t•\toriginal_link ({{ $('🔧 Prepare URL for Extraction').item.json.message.text }})\n\t•\thtml (only the job description)\n\nPrimary Function\nRegenerate articles strictly following the formatting, style, and structure rules defined in the RAG dataset. Do not invent your own rules or formats.\n\nWork Protocol\n1. Mandatory Consultation\nALWAYS use the \"document\" tool to search for:\n- Article formatting and structure rules\n- Writing style guides\n- Examples of correct formatting\n- Relevant information on the requested topic\n\n2. Strict Compliance\n- Follow EXACTLY the formatting rules found in the dataset\n- Respect the style guides defined in the knowledge base\n- Apply the article structure specified in the RAG\n- Maintain the tone and style established in the guidelines\n\n3. Regeneration Process\n- Search for formatting rules in the knowledge base\n- Search for information on the requested topic\n- Apply the rules found to the content\n- Regenerate the article following those specifications exactly\n\nImportant\nDO NOT create your own formatting rules\nDO NOT improvise article structure\nEVERYTHING should be based on what you find in \"document\"\nIf you don't find specific rules, ask the user for more details\n\n**HTML (DESCRIPCIÓN)**\n\n1. Al principio, escribe un resumen de dos líneas de la oferta de empleo. Menciona la disciplina, el estudio que publica la oferta, y si es remoto o presencial, incluyendo la localización. Puedes añadir otros elementos relevantes si es necesario. **No añadas un título ni encabezado H2 para este párrafo** y justifica el texto de cada párrafo completo.\n\nIncluye solo un espacio: `<p> </p>`\n\n2. Después, añade este código:\n\n```html\n<p style=\"text-align: center; font-size: 14pt;\"><span style=\"font-weight: 400;\">Si quieres más </span><a href=\"https://www.yourwebsite.es/ofertas-de-empleo-para-artistas-digitales/\"><span style=\"font-weight: 400;\">ofertas de empleo de Animación, 3D, VFX y Arte digital</span></a><span style=\"font-weight: 400;\">👈 ENTRA AQUÍ</span></p>\n```\n\nIncluye solo un espacio: `<p> </p>`\n\n3. Escribe lo siguiente:\n\n```html\n<p>[divider style=\"normal\" top=\"20\" bottom=\"20\"]</p>\n<p> </p>\n<p style=\"text-align: center; font-size: 14pt;\">IMPORTANTE: <a href=\"https://www.documen.es/suscripcion\">Suscríbete a nuestra página</a> 👈 Te enviaremos nuestras ofertas de empleo, todas las semanas. ❤️</p>\n<p> </p>\n<p>[divider style=\"normal\" top=\"20\" bottom=\"20\"]</p>\n```\n\nIncluye un espacio: `<p> </p>`\n\n4. AHORA ESCRIBE TODO EL CONTENIDO EN HTML.\n\n**CONTENIDO:**\n\n· Escribe SIEMPRE EN TERCERA PERSONA.\n· No traduzcas términos técnicos como Assets, technical director, senior, rigging, VFX, CGI, Motion Graphics, pipeline, etc.\n· No traduzcas nombres de programas o herramientas, como After Effects, Photoshop, Shotgun, etc.\n· **¡No escribas ningún tipo de información adicional!**\n\n**FORMATO:**\n\n· Organiza el contenido utilizando encabezados H2 para cada sección, todos centrados.\n· Justifica el texto de cada párrafo completo.\n· **SEO**: Usa negrita para los términos importantes utilizando etiquetas `<strong>` para optimizar la lectura y el SEO, siguiendo estrictamente el orden HTML.\n· Utiliza listas con viñetas siempre que sea adecuado.\n· TODOS los enlaces deben abrir en una nueva ventana.\n· Usa negrita con etiquetas `<strong>` para los términos importantes y palabras clave para optimizar el SEO.\n· Después de cada título, añade `<p> </p>`\n\n5. Después del contenido, añade este código:\n\n```html\n<p style=\"text-align: center; font-size: 14pt;\"><span style=\"font-weight: 400;\">Si quieres más </span><a href=\"https://www.yourwebsite.es/ofertas-de-empleo-para-artistas-digitales/\"><span style=\"font-weight: 400;\">ofertas de empleo de Animación, 3D, VFX y Arte digital</span></a><span style=\"font-weight: 400;\">👈 ENTRA AQUÍ</span></p>\n```\n\n6. En la última línea, incluye SIEMPRE un eslogan aleatorio. Usa negrita con `<strong>` y alinea el texto al centro. Elige **UNA** de estas cuatro opciones:\n\n**Bienvenido a yourwebsite.es | Tu web sobre Animación, VFX y Arte Digital en habla Hispana.**\n**Bienvenidos Artistas Digitales a notodoanimacion.es | El portal de Animación, 3D, VFX y Videojuegos que trabaja para ti.**\n**Bienvenido a notodoanimacion.es | El portal sobre animación y arte digital en español, más visitado del mundo.**\n\n\n\n-----\n\n\nCategory Selection Rules:\n\t•\tONLY select categories from this EXACT options: {{ $('📚 Load Valid Job Types & Categories').item.json.category.map(item => item.category) }}\n\t•\tMaximum 3 categories allowed\n\t•\tMust be CASE SENSITIVE - match exactly as written in the array\n\t•\tSelect the 3 MOST RELEVANT categories that best match the extracted job\n\t•\tIf fewer than 3 categories are relevant, select only the appropriate ones\n\t•\tDO NOT CREATE or ADD any categories outside the provided array\n\t•\tDO NOT MODIFY the spelling, capitalization, or format of categories\n\nGuidelines:\n\t•\tDO NOT INVENT ANYTHING\n\t•\tWrite everything in Spanish (Castilian)\n\t•\tStructure the job description using H2 headings\n\t•\tUse strategic bolding for SEO and relevance\n\t•\tIf any field is missing, leave it empty (”” or [])\n\t•\tReturn only valid JSON\n\nCategory Selection Process:\n\t1.\tRead the job description carefully\n\t2.\tIdentify the main job functions and requirements\n\t3.\tMatch these against the provided category array\n\t4.\tSelect maximum 3 categories that are MOST APPROPRIATE\n\t5.\tEnsure exact spelling and case matching from the array\n\njob_type Selection Rules:\n • THIS Field is a MANDATORY\n •\tONLY select job_type from this EXACT options:{{ $('📚 Load Valid Job Types & Categories').item.json.types.map(item => item.type) }}\n • Maximum 1 Job type allowed\n • Must be CASE SENSITIVE—match exactly as written in the array\n • DO NOT CREATE or ADD any categories outside the provided array\n • DO NOT MODIFY the spelling, capitalization, or format of categories\n • IF there's no type directly stated, find on the body, find relevant details and pick the most appropriate\n\n"
}
]
},
"simplify": false,
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "hdBomZukFu3cyDUS",
"name": "Sumopod"
}
},
"retryOnFail": true,
"typeVersion": 1.8
},
{
"id": "00ca2cca-7747-4266-a733-2deb390c86ae",
"name": "创建URL",
"type": "n8n-nodes-base.code",
"position": [
1264,
1728
],
"parameters": {
"jsCode": "const extractData = $('Extract').first().json;\n\n// Ekstrak icon URL dengan error handling\nlet iconUrl = null;\n\ntry {\n // Periksa apakah external dan icon ada\n if (extractData?.external?.icon) {\n const iconObject = extractData.external.icon;\n \n // Ambil key pertama (URL) dari object icon\n const iconKeys = Object.keys(iconObject);\n \n if (iconKeys.length > 0) {\n iconUrl = iconKeys[0];\n }\n }\n} catch (error) {\n console.error('Error extracting icon URL:', error);\n}\n\n// Return hasil\nreturn [\n {\n json: {\n iconUrl: iconUrl || '', // Return empty string jika tidak ada icon\n // Atau bisa juga return original data + iconUrl\n ...extractData,\n processedIconUrl: iconUrl\n }\n }\n];"
},
"typeVersion": 2
},
{
"id": "dbade535-86ce-4c7e-a58e-db7f67ad9032",
"name": "通知:openai成功",
"type": "n8n-nodes-base.telegram",
"position": [
1040,
1728
],
"webhookId": "51bfc648-4499-4f61-9aa4-61e6b7b617dc",
"parameters": {
"text": "<i>OpenAI Process Success... one sec...</i>",
"chatId": "={{ $('notify: extracting').item.json.result.chat.id }}",
"messageId": "={{ $('notify: extracting').item.json.result.message_id }}",
"operation": "editMessageText",
"additionalFields": {
"parse_mode": "HTML"
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "166012da-838d-4b35-ae9a-4903b5879f20",
"name": "编辑字段",
"type": "n8n-nodes-base.set",
"position": [
2384,
2112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5a72ac2f-e722-4121-91ff-d758520f7fdb",
"name": "combine trim & false url",
"type": "string",
"value": "={{ $('🔧 Prepare URL for Extraction').item.json.cleanUrl }}{{ $json._company_logo }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "492ef5dd-2637-4059-b403-4ac742dcab75",
"name": "📥 下载公司Logo - 备用",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
2608,
2112
],
"parameters": {
"url": "={{ $json['combine trim & false url'] }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "25c6286c-dd0e-49f2-a544-d11d1121bf1c",
"name": "☁️ 上传Logo到WordPress - 备用",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
2832,
2112
],
"parameters": {
"url": "https://yourweb.es/wp-json/wp/v2/media",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Disposition",
"value": "=attachment; filename=\"logo-{{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.company }}.jpeg\""
},
{
"name": "Content-Type",
"value": "image/jpeg"
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "wordpressApi"
},
"credentials": {
"wordpressApi": {
"id": "QMDWc5KoLU8O3P19",
"name": "WP - Mincara (beginicaranya)"
}
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "c1a7c69b-fb9f-4026-8984-ffd64349b63f",
"name": "📦 格式化最终工作发布数据 - 备用",
"type": "n8n-nodes-base.set",
"position": [
3056,
2112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "title",
"name": "title",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.title }}"
},
{
"id": "content",
"name": "content",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.html }}\n"
},
{
"id": "job_listing_type",
"name": "job_listing_type",
"type": "array",
"value": "=[{{ $('🧮 Map Job Type & Category IDs').item.json.fixType[0] }}]"
},
{
"id": "job_listing_category",
"name": "job_listing_category",
"type": "array",
"value": "={{ $('🧮 Map Job Type & Category IDs').item.json.fixCategory }}"
},
{
"id": "_job_location",
"name": "_job_location",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.location }}"
},
{
"id": "_company_name",
"name": "_company_name",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.company }}"
},
{
"id": "_company_logo",
"name": "_company_logo",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.logo || \"http://www.notodoanimacion.es/wp-content/uploads/2025/06/logo-Sony-Pictures-Animation-1.png\" }}"
},
{
"id": "_application",
"name": "_application",
"type": "string",
"value": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.original_link || $('🔧 Prepare URL for Extraction').item.json.text }}"
},
{
"id": "7df4886d-0180-4279-9bff-f8f3ebc2961c",
"name": "companyLogo",
"type": "string",
"value": "={{ $json.guid.raw }}"
},
{
"id": "b9a766da-8bd6-4950-a243-8005c61c3ca9",
"name": "status",
"type": "string",
"value": "publish"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "da72df6d-de32-401e-94d2-2f29581114c4",
"name": "✅ 所有字段都可用吗? - 备用",
"type": "n8n-nodes-base.if",
"onError": "continueErrorOutput",
"position": [
3280,
2096
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "8f4efbe7-3fc1-4be3-b4c6-f2b7b1f8f00a",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.title }}",
"rightValue": ""
},
{
"id": "8194f924-3ef7-4056-a909-3499d8c116b3",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.job_listing_category }}",
"rightValue": ""
},
{
"id": "373f2081-f7ac-4313-a472-6d10770dd17a",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.job_listing_type }}",
"rightValue": ""
},
{
"id": "74166a2f-57e8-4fed-8bcf-cd240779543a",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json._job_location }}",
"rightValue": ""
},
{
"id": "bdee50a8-cdff-4570-b88a-8cf560468fa2",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json._application }}",
"rightValue": ""
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "5796ee20-2946-4897-a014-095c4ca8c41d",
"name": "",
"type": "n8n-nodes-base.if",
"position": [
3728,
2080
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "0e5d1113-a6fe-49bf-bf56-848c852875f6",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.id }}",
"rightValue": ""
},
{
"id": "d00af776-6323-4c62-84f1-30de39d256d0",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.link }}",
"rightValue": ""
},
{
"id": "0cd4f4d5-8c1c-4c98-8d7b-1995a56fcf3f",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.categories }}",
"rightValue": ""
},
{
"id": "2e8ab092-9500-44e9-a32f-99a00dbb7a28",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.date }}",
"rightValue": ""
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "b8067d7e-0647-4394-9662-734547fe6386",
"name": "📨 Notify Success - Alt",
"type": "n8n-nodes-base.telegram",
"position": [
3952,
2112
],
"webhookId": "4550abb4-5baa-427b-9495-9e6ea219652e",
"parameters": {
"text": "=Hello, {{ $('📥 New Job Link via Telegram').item.json.message.from.first_name }}\nJob successfully extracted and Posted! \nmissing value has fill with default image\n\nOriginal Url: {{ $('🔧 Prepare URL for Extraction').item.json.message.text.replace(/_/g, '\\\\_') }}\n\nTitle: {{ $('🚀 Publish to Yourweb - Alt').item.json.title.raw.replace(/_/g, '\\\\_') }}\nCategory: {{ $('🚀 Publish to Yourweb - Alt').item.json.job_listing_category }}\nJob Type: {{ $('🚀 Publish to Yourweb - Alt').item.json.job_listing_types }}\nLogo: {{ $('🚀 Publish to Yourweb - Alt').item.json.meta._company_logo.replace(/_/g, '\\\\_') }}\n\nPublished Post: {{ $json.guid.rendered.replace(/_/g, '\\\\_') }}",
"chatId": "={{ $('📥 New Job Link via Telegram').first().json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "bd6a58c8-af17-49e4-b9dc-6a575f07ebe2",
"name": "📨 Notify Failed - Alt",
"type": "n8n-nodes-base.telegram",
"position": [
3952,
2304
],
"webhookId": "4550abb4-5baa-427b-9495-9e6ea219652e",
"parameters": {
"text": "=Hello, {{ $('📥 New Job Link via Telegram').first().json.message.from.first_name }}\nJob Failed!\n\nPlease Check your workflow or contact khairul https://wa.me/6285155431253",
"chatId": "={{ $('📥 New Job Link via Telegram').first().json.message.chat.id }}",
"additionalFields": {
"appendAttribution": true
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "3305ba40-106a-4177-b851-17946afe6c64",
"name": "📊 Did Publish Succeed?2",
"type": "n8n-nodes-base.if",
"position": [
2608,
1648
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "0e5d1113-a6fe-49bf-bf56-848c852875f6",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.id }}",
"rightValue": ""
},
{
"id": "d00af776-6323-4c62-84f1-30de39d256d0",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.link }}",
"rightValue": ""
},
{
"id": "0cd4f4d5-8c1c-4c98-8d7b-1995a56fcf3f",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.categories }}",
"rightValue": ""
},
{
"id": "2e8ab092-9500-44e9-a32f-99a00dbb7a28",
"operator": {
"type": "boolean",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.date }}",
"rightValue": ""
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "669df126-b486-401a-9f14-3dd7e4c25d2d",
"name": "notify: failed extract",
"type": "n8n-nodes-base.telegram",
"position": [
192,
1968
],
"webhookId": "51bfc648-4499-4f61-9aa4-61e6b7b617dc",
"parameters": {
"text": "=Failed in extract using Jina... please inform developer",
"chatId": "={{ $('notify: extracting').item.json.result.chat.id }}",
"messageId": "={{ $('notify: extracting').item.json.result.message_id }}",
"operation": "editMessageText",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "94f124f9-287e-4ab9-8c85-3c923d862a4b",
"name": "Error",
"type": "n8n-nodes-base.telegram",
"position": [
2832,
1824
],
"webhookId": "4550abb4-5baa-427b-9495-9e6ea219652e",
"parameters": {
"text": "=Hello, {{ $('📥 New Job Link via Telegram').first().json.message.from.first_name }}\nJob Failed!\n\nPlease Check your workflow or contact khairul https://wa.me/6285155431253",
"chatId": "={{ $('📥 New Job Link via Telegram').first().json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "520bf6db-cfda-42fb-98c0-8293187b4bd7",
"name": "changing method",
"type": "n8n-nodes-base.telegram",
"position": [
2832,
1408
],
"webhookId": "033439cf-08eb-4df7-be1a-3a617027ce35",
"parameters": {
"text": "=Trying Second Attempt!\n<i>Filling empty field with default value...</i>",
"chatId": "={{ $('📥 New Job Link via Telegram').first().json.message.chat.id }}",
"messageId": "={{ $json.result.message_id }}",
"operation": "editMessageText",
"additionalFields": {
"parse_mode": "HTML"
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "b42a3aac-3457-477a-b4e0-789ae7f0c4f9",
"name": "等待1",
"type": "n8n-nodes-base.wait",
"position": [
3056,
1408
],
"webhookId": "20506072-3a7d-4db6-a558-736d917ca82c",
"parameters": {
"amount": 2
},
"typeVersion": 1.1
},
{
"id": "e7fd2055-f045-455f-a348-0ded7bceaa5a",
"name": "等待2",
"type": "n8n-nodes-base.wait",
"position": [
2608,
1408
],
"webhookId": "54770112-e93a-4b47-b63a-7e98fc2db80f",
"parameters": {
"amount": 2
},
"typeVersion": 1.1
},
{
"id": "ae89562c-fc6c-46b4-841c-a6d2d2b3d6d7",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
1232
],
"parameters": {
"color": 7,
"width": 660,
"height": 260,
"content": "## Monitoring - leave as it is"
},
"typeVersion": 1
},
{
"id": "fe6b5ed7-6a7f-4b1c-a876-ef79566e8b6f",
"name": "错误触发器",
"type": "n8n-nodes-base.errorTrigger",
"position": [
-336,
1328
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5c6f710e-2901-407b-920c-46d0d9f2a3b9",
"name": "Kirim ke Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
112,
1328
],
"webhookId": "13c616bf-a3ad-4035-998a-1dfe6021b89f",
"parameters": {
"text": "={{ $json.message }}",
"chatId": "your-chat-id",
"additionalFields": {
"parse_mode": "HTML"
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1
},
{
"id": "c732088d-cce6-4e26-b113-bd9249182737",
"name": "代码",
"type": "n8n-nodes-base.code",
"position": [
-112,
1328
],
"parameters": {
"jsCode": "// Perfect error access untuk N8N v1.99.1\nconst errorData = $input.first().json;\nconst execution = errorData.execution;\nconst workflow = errorData.workflow;\nconst error = execution.error;\n\nconst message = `🚨 <b>WORKFLOW ERROR</b>\\n\\n` +\n `📋 Workflow: <b>${workflow.name}</b>\\n` +\n `⚙️ Node: <code>${error.node.name}</code>\\n` +\n `❌ Error: <code>${error.message}</code>\\n` +\n `📝 Description: <i>${error.description}</i>\\n` +\n `🕐 Waktu: ${new Date(error.timestamp).toLocaleString('id-ID')}\\n` +\n `🔍 Execution: <a href=\"${execution.url}\">${execution.id}</a>\\n` +\n `⚠️ Level: ${error.level.toUpperCase()}`;\n\nreturn {\n message: message,\n parse_mode: 'HTML',\n chat_id: '<your-api-key-goes-here>'\n};"
},
"typeVersion": 2
},
{
"id": "6f7c3c18-e606-44c8-9fe7-1efa43f7bc81",
"name": "Publiched!",
"type": "n8n-nodes-base.telegram",
"position": [
2832,
1600
],
"webhookId": "4550abb4-5baa-427b-9495-9e6ea219652e",
"parameters": {
"text": "=Hello, {{ $('📥 New Job Link via Telegram').item.json.message.from.first_name }}\nJob successfully extracted and Posted! \n\nOriginal Url: {{ $('🔧 Prepare URL for Extraction').item.json.message.text.replace(/_/g, '\\\\_') }}\n\nTitle: {{ $('🚀 Publish to Your web').item.json.title.rendered }}\nCategory: {{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.categories }}\nJob Type: {{ $('🧠 Extract Job Data with GPT').item.json.choices[0].message.content.job_type }}\nLogo: {{ $('🚀 Publish to Your web').item.json.meta._company_logo }}\n\nPublished Post: {{ $json.guid.rendered.replace(/_/g, '\\\\_') }}",
"chatId": "={{ $('📥 New Job Link via Telegram').first().json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "7eWccxD2fpi1SvxQ",
"name": "Threadscreator - @testoadios"
}
},
"typeVersion": 1.2
},
{
"id": "62ca52b1-a939-43de-94bd-e2d41cc5aeb9",
"name": "🚀 Publish to Your web",
"type": "n8n-nodes-base.httpRequest",
"position": [
2384,
1648
],
"parameters": {
"url": "https://www.yourweb.es/wp-json/wp/v2/job-listings",
"method": "POST",
"options": {},
"jsonBody": "={\n \"title\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.title) }},\n \"content\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.content) }},\n \"status\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.status) }},\n \"job_listing_types\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.job_listing_type) }},\n \"job_listing_category\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.job_listing_category) }},\n \"meta\": {\n \"_job_location\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json._job_location) }},\n \"_company_name\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json._company_name) }},\n \"_company_logo\": {{ JSON.stringify($json.companyLogo) }},\n \"_application\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json._application) }}\n }\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "wordpressApi"
},
"credentials": {
"wordpressApi": {
"id": "QMDWc5KoLU8O3P19",
"name": "WP - Mincara (beginicaranya)"
}
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "5fb4a7bf-741a-40f9-a0b5-b9e10e34403d",
"name": "🚀 Publish to Yourweb - Alt",
"type": "n8n-nodes-base.httpRequest",
"position": [
3504,
2080
],
"parameters": {
"url": "https://www.yourweb.es/wp-json/wp/v2/job-listings",
"method": "POST",
"options": {},
"jsonBody": "={\n \"title\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.title) }},\n \"content\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.content) }},\n \"status\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.status) }},\n \"job_listing_types\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.job_listing_type) }},\n \"job_listing_category\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json.job_listing_category) }},\n \"meta\": {\n \"_job_location\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json._job_location) }},\n \"_company_name\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json._company_name) }},\n \"_company_logo\": {{ JSON.stringify($json._company_logo) }},\n \"_application\": {{ JSON.stringify($('📦 Format Final Job Post Data').item.json._application) }}\n }\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "wordpressApi"
},
"credentials": {
"wordpressApi": {
"id": "QMDWc5KoLU8O3P19",
"name": "WP - Mincara (beginicaranya)"
}
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "7cf031e8-56cb-4894-be0a-1eaf63c4d81a",
"name": "Extract",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-256,
1952
],
"parameters": {
"url": "https://api.firecrawl.dev/v1/scrape",
"method": "POST",
"options": {},
"jsonBody": "={\n \"url\": \"{{ $('🔧 Prepare URL for Extraction').item.json.text }}\",\n \"formats\": [\"markdown\"]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <your-api-key-goes-here>"
}
]
}
},
"typeVersion": 4.2
}
],
"pinData": {},
"connections": {
"If": {
"main": [
[
{
"node": "notify: success extract",
"type": "main",
"index": 0
}
],
[
{
"node": "notify: failed extract",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Kirim ke Telegram",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "notify: extracting",
"type": "main",
"index": 0
}
]
]
},
"Wait2": {
"main": [
[
{
"node": "changing method",
"type": "main",
"index": 0
}
]
]
},
"Extract": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
],
[
{
"node": "notify: error",
"type": "main",
"index": 0
}
]
]
},
"Get Data": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Create Url": {
"main": [
[
{
"node": "📥 Download Company Logo",
"type": "main",
"index": 0
}
]
]
},
"valid url?": {
"main": [
[
{
"node": "notify: processing job",
"type": "main",
"index": 0
}
],
[
{
"node": "notify: wrong url",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "📥 Download Company Logo - Alt",
"type": "main",
"index": 0
}
]
]
},
"Search File": {
"main": [
[
{
"node": "Get Data",
"type": "main",
"index": 0
}
]
]
},
"if not valid": {
"main": [
[
{
"node": "Wait2",
"type": "main",
"index": 0
}
]
]
},
"Error Trigger": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Supabase Vector Store",
"type": "main",
"index": 0
}
]
]
},
"changing method": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"notify: extracting": {
"main": [
[
{
"node": "Extract",
"type": "main",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Supabase Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Google Drive Trigger": {
"main": [
[
{
"node": "Search File",
"type": "main",
"index": 0
}
]
]
},
"Supabase Vector Store": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Supabase Vector Store1": {
"ai_tool": [
[
{
"node": "🧠 Extract Job Data with GPT",
"type": "ai_tool",
"index": 0
}
]
]
},
"notify: openai success": {
"main": [
[
{
"node": "Create Url",
"type": "main",
"index": 0
}
]
]
},
"notify: processing job": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"notify: success extract": {
"main": [
[
{
"node": "🧠 Extract Job Data with GPT",
"type": "main",
"index": 0
}
]
]
},
"🚀 Publish to Your web": {
"main": [
[
{
"node": "📊 Did Publish Succeed?2",
"type": "main",
"index": 0
}
]
]
},
"✅ All Fields Available?": {
"main": [
[
{
"node": "🚀 Publish to Your web",
"type": "main",
"index": 0
}
],
[
{
"node": "if not valid",
"type": "main",
"index": 0
},
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "Error",
"type": "main",
"index": 0
}
]
]
},
"📊 Did Publish Succeed?1": {
"main": [
[
{
"node": "📨 Notify Success - Alt",
"type": "main",
"index": 0
}
],
[
{
"node": "📨 Notify Failed - Alt",
"type": "main",
"index": 0
}
]
]
},
"📊 Did Publish Succeed?2": {
"main": [
[
{
"node": "Publiched!",
"type": "main",
"index": 0
}
],
[
{
"node": "Error",
"type": "main",
"index": 0
}
]
]
},
"📥 Download Company Logo": {
"main": [
[
{
"node": "☁️ Upload Logo to WordPress",
"type": "main",
"index": 0
}
]
]
},
"🚀 Publish to Yourweb - Alt": {
"main": [
[
{
"node": "📊 Did Publish Succeed?1",
"type": "main",
"index": 0
}
]
]
},
"📥 New Job Link via Telegram": {
"main": [
[
{
"node": "🔧 Prepare URL for Extraction",
"type": "main",
"index": 0
}
]
]
},
"🧠 Extract Job Data with GPT": {
"main": [
[
{
"node": "🧮 Map Job Type & Category IDs",
"type": "main",
"index": 0
}
],
[
{
"node": "notify: error",
"type": "main",
"index": 0
}
]
]
},
"☁️ Upload Logo to WordPress": {
"main": [
[
{
"node": "📦 Format Final Job Post Data",
"type": "main",
"index": 0
}
]
]
},
"✅ All Fields Available? - Alt": {
"main": [
[
{
"node": "🚀 Publish to Yourweb - Alt",
"type": "main",
"index": 0
}
],
[
{
"node": "📨 Notify Failed - Alt",
"type": "main",
"index": 0
}
],
[
{
"node": "📨 Notify Failed - Alt",
"type": "main",
"index": 0
}
]
]
},
"📦 Format Final Job Post Data": {
"main": [
[
{
"node": "✅ All Fields Available?",
"type": "main",
"index": 0
}
]
]
},
"🔧 Prepare URL for Extraction": {
"main": [
[
{
"node": "📚 Load Valid Job Types & Categories",
"type": "main",
"index": 0
}
]
]
},
"📥 Download Company Logo - Alt": {
"main": [
[
{
"node": "☁️ Upload Logo to WordPress - Alt",
"type": "main",
"index": 0
}
]
]
},
"🧮 Map Job Type & Category IDs": {
"main": [
[
{
"node": "notify: openai success",
"type": "main",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"☁️ Upload Logo to WordPress - Alt": {
"main": [
[
{
"node": "📦 Format Final Job Post Data - Alt",
"type": "main",
"index": 0
}
]
]
},
"📦 Format Final Job Post Data - Alt": {
"main": [
[
{
"node": "✅ All Fields Available? - Alt",
"type": "main",
"index": 0
}
]
]
},
"📚 Load Valid Job Types & Categories": {
"main": [
[
{
"node": "valid url?",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 人力资源, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用Rag自动重新发布工作
基于 RAG、Jina AI 和 OpenAI 到 WordPress 的自动化职位提取与发布
If
Set
Code
+18
56 节点Khairul Muhtadin
人力资源
使用Google Maps、GPT-4和WhatsApp自动化商业合作伙伴拓展
使用Google Maps、GPT-4和WhatsApp自动化商业合作伙伴拓展
If
Set
Code
+23
64 节点Khairul Muhtadin
AI 聊天机器人
上下文混合RAG AI文案
Google Drive到Supabase上下文向量数据库同步用于RAG应用
If
Set
Code
+25
76 节点Michael Taleb
AI RAG 检索增强
[模板] AI宠物店 v8
🐶 AI宠物店助手 - 集成GPT-4o、Google日历和WhatsApp/Instagram/Facebook
If
N8n
Set
+38
244 节点Amanda Benks
销售
AI 代理餐厅 [模板]
🤖 WhatsApp、Instagram 和 Messenger 的 AI 餐厅助手
If
N8n
Set
+37
239 节点Amanda Benks
其他
AI驱动的邮件分诊与自动回复系统,集成OpenAI代理和Gmail
AI驱动的邮件分诊与自动回复系统,集成OpenAI代理和Gmail
If
Set
Gmail
+20
68 节点Abdullahi Ahmed
内容创作