Write a WordPress post with AI (starting from a few keywords)
工作流概述
这是一个包含37个节点的复杂工作流,主要用于自动化处理各种任务。
工作流源代码
{
"id": "mKGMYXJottl0PDtM",
"meta": {
"instanceId": "cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7"
},
"name": "Write a WordPress post with AI (starting from a few keywords)",
"tags": [],
"nodes": [
{
"id": "a4f19a81-6101-48c2-9560-9cf231bc240b",
"name": "Form",
"type": "n8n-nodes-base.formTrigger",
"position": [
-580,
320
],
"webhookId": "4b937814-e829-4df7-aaba-31192babf7e1",
"parameters": {
"path": "create-wordpress-post",
"formTitle": "Create a WordPress post with AI",
"formFields": {
"values": [
{
"fieldLabel": "Keywords (comma-separated)",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Number of chapters",
"fieldOptions": {
"values": [
{
"option": "1"
},
{
"option": "2"
},
{
"option": "3"
},
{
"option": "4"
},
{
"option": "5"
},
{
"option": "6"
},
{
"option": "7"
},
{
"option": "8"
},
{
"option": "9"
},
{
"option": "10"
}
]
},
"requiredField": true
},
{
"fieldType": "number",
"fieldLabel": "Max words count",
"requiredField": true
}
]
},
"responseMode": "responseNode",
"formDescription": "Fill this form with the required information to create a draft post on WordPress"
},
"typeVersion": 2
},
{
"id": "e4cf75f7-00e7-473a-a944-af635581715f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
209.98769233621147,
140
],
"parameters": {
"color": 4,
"width": 301.3874093724939,
"height": 371.765663140765,
"content": "## Data check"
},
"typeVersion": 1
},
{
"id": "e949a487-6701-4650-b9be-08146b4e93ad",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
225.20535922952297,
200
],
"parameters": {
"color": 7,
"width": 272.8190508599808,
"height": 80,
"content": "Checks that the data returned by OpenAI is correct"
},
"typeVersion": 1
},
{
"id": "662fe28b-c0b7-4aef-b99c-a8c4c641251c",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1580,
140
],
"parameters": {
"color": 5,
"width": 282.3398199598652,
"height": 371.7656631407652,
"content": "## Draft on WordPress"
},
"typeVersion": 1
},
{
"id": "85996d51-ab98-41f5-b525-d926f04f50a8",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1595,
200
],
"parameters": {
"color": 7,
"width": 254.77269221373095,
"height": 80,
"content": "The article is posted as a draft on WordPress"
},
"typeVersion": 1
},
{
"id": "46f67505-f2dc-4110-b1d4-a27d7814cb52",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1881,
140
],
"parameters": {
"color": 3,
"width": 557.7592769264069,
"height": 369.2595606183891,
"content": "## Featured image"
},
"typeVersion": 1
},
{
"id": "a1beeb4f-f171-4c6a-ac19-7086b09757ab",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
1900,
200
],
"parameters": {
"color": 7,
"width": 517.9195082760601,
"height": 80,
"content": "The image is generated with Dall-E, uploaded to WordPress, and then connected to the post as its featured image"
},
"typeVersion": 1
},
{
"id": "d1fd737b-7f14-4371-8720-7742f708e641",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-117.99507693448459,
200
],
"parameters": {
"color": 7,
"width": 287.370178643191,
"height": 80,
"content": "Starting from the given keywords, generates the article title, subtitle, chapters, and image prompt"
},
"typeVersion": 1
},
{
"id": "ccaaf851-613b-4d0c-8b3d-99a35ec9cdad",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-129.93405171072595,
142
],
"parameters": {
"color": 6,
"width": 319.697690939268,
"height": 370.512611879577,
"content": "## Article structure"
},
"typeVersion": 1
},
{
"id": "69bebd7b-8ad5-4b0d-a8df-1b2e6d4be96e",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
140
],
"parameters": {
"color": 7,
"width": 239.97343293577688,
"height": 370.512611879577,
"content": "## User form"
},
"typeVersion": 1
},
{
"id": "2037f81b-189c-4dc4-a4dc-179e4283544c",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-623,
200
],
"parameters": {
"color": 7,
"width": 199.7721486302032,
"height": 80,
"content": "The user triggers the post creation"
},
"typeVersion": 1
},
{
"id": "e8d7f711-185d-499b-ba58-de52ac6a4e58",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2461,
140
],
"parameters": {
"color": 7,
"width": 219.70753707029849,
"height": 370.512611879577,
"content": "## User feedback"
},
"typeVersion": 1
},
{
"id": "d89bebca-3607-4c66-a13d-07c32262e01a",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
2481,
200
],
"parameters": {
"color": 7,
"width": 183.38125554060056,
"height": 80,
"content": "Final confirmation to the user"
},
"typeVersion": 1
},
{
"id": "7df452e2-52f3-4efe-94a4-7d4eab0670c8",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
534.9876923362115,
530.9889231025903
],
"parameters": {
"color": 7,
"width": 281.2716777103785,
"height": 288.4116890365125,
"content": "
User is notified to try again since some data is missing"
},
"typeVersion": 1
},
{
"id": "f881bcd9-c7d2-4a1c-bc1a-beb515d52ade",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128.98646156983267,
532.991384635348
],
"parameters": {
"color": 7,
"width": 319.8306137081817,
"height": 275.3956890735875,
"content": "
Wikipedia is used to write the article"
},
"typeVersion": 1
},
{
"id": "1b788b37-b8b5-47f6-8198-547dac8c76d6",
"name": "Settings",
"type": "n8n-nodes-base.set",
"position": [
-320,
320
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "3a433b0f-9957-4b64-ad81-359ab5e521d5",
"name": "wordpress_url",
"type": "string",
"value": "https://you-wordpress-url-here.com/"
},
{
"id": "ec5430e3-92c5-46e4-8c2c-c87291680892",
"name": "keywords",
"type": "string",
"value": "={{ $json['Keywords (comma-separated)'] }}"
},
{
"id": "5defb0a2-d921-4909-b10d-da59e1768496",
"name": "chapters",
"type": "number",
"value": "={{ $json['Number of chapters'] }}"
},
{
"id": "230ebd0b-73c2-4265-9b3c-57af7fbc48c8",
"name": "words",
"type": "number",
"value": "={{ $json['Max words count'] }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "af29ed91-84b5-43f8-b1ce-1c8dc35c2c1b",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-377,
140
],
"parameters": {
"color": 2,
"width": 226.71615243495023,
"height": 370.512611879577,
"content": "## Settings"
},
"typeVersion": 1
},
{
"id": "a6fe2238-22ba-4c54-adef-663bd3955dcc",
"name": "Sticky Note15",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
200
],
"parameters": {
"color": 7,
"width": 179.37633247508526,
"height": 80,
"content": "Set the URL of your WordPress here"
},
"typeVersion": 1
},
{
"id": "358ac79f-be7d-44eb-a353-b2ad4ac8d582",
"name": "Check data consistency",
"type": "n8n-nodes-base.if",
"position": [
300,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9c8c53ea-6079-48da-9d6e-dd527167b123",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.message.content.title }}",
"rightValue": ""
},
{
"id": "a7fabfe1-3539-453a-93d9-8d6d395c3de4",
"operator": {
"type": "array",
"operation": "lengthGte",
"rightType": "number"
},
"leftValue": "={{ $json.message.content.chapters }}",
"rightValue": "={{ 1 }}"
},
{
"id": "a687081e-24e2-423c-a2da-b7c18baf0715",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.message.content.subtitle }}",
"rightValue": ""
},
{
"id": "0a435a69-3699-4b98-b46f-40954c7a7816",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.message.content.introduction }}",
"rightValue": ""
},
{
"id": "1a440144-21f3-42bd-9222-774bd564f3ef",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.message.content.conclusions }}",
"rightValue": ""
},
{
"id": "834ce92d-b1e9-48ef-ae63-1d0841c900b5",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.message.content.imagePrompt }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "479f474a-1687-4588-8485-d793afc6757d",
"name": "Split out chapters",
"type": "n8n-nodes-base.splitOut",
"position": [
600,
320
],
"parameters": {
"options": {},
"fieldToSplitOut": "message.content.chapters"
},
"typeVersion": 1
},
{
"id": "bde7b7db-45c6-4ab3-a705-358000cefbec",
"name": "Merge chapters title and text",
"type": "n8n-nodes-base.merge",
"position": [
1220,
460
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "mergeByPosition"
},
"typeVersion": 2.1
},
{
"id": "0079022b-eaa2-481b-8c78-f8623a63645b",
"name": "Final article text",
"type": "n8n-nodes-base.code",
"position": [
1400,
320
],
"parameters": {
"jsCode": "let article = \"\";
// Introduction
article += $('Create post title and structure').first().json.message.content.introduction;
article += \"<br><br>\";
for (const item of $input.all()) {
article += \"<strong>\" + item.json.title + \"</strong>\";
article += \"<br><br>\";
article += item.json.message.content;
article += \"<br><br>\";
}
// Conclusions
article += \"<strong>Conclusions</strong>\";
article += \"<br><br>\";
article += $('Create post title and structure').first().json.message.content.conclusions;
return [
{
\"article\": article
}
];"
},
"typeVersion": 1
},
{
"id": "d892f00a-90fd-4bbb-bac6-4684d7d0c638",
"name": "Post on Wordpress",
"type": "n8n-nodes-base.wordpress",
"position": [
1680,
320
],
"parameters": {
"title": "={{ $('Create post title and structure').all()[0].json.message.content.title }}",
"additionalFields": {
"status": "draft",
"content": "={{ $json.article }}"
}
},
"credentials": {
"wordpressApi": {
"id": "xxxxxxxxxxx",
"name": "WordPress Credentials"
}
},
"typeVersion": 1
},
{
"id": "a609d80d-f586-4e5f-a72d-01257f676574",
"name": "Upload media",
"type": "n8n-nodes-base.httpRequest",
"position": [
2120,
320
],
"parameters": {
"url": "https://wp-demo.mondo.surf/wp-json/wp/v2/media",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Disposition",
"value": "attachment; filename=\"example.jpg\""
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "wordpressApi"
},
"credentials": {
"wordpressApi": {
"id": "xxxxxxxxxxx",
"name": "WordPress Credentials"
}
},
"typeVersion": 4.1
},
{
"id": "bdb2ef52-0201-4fe1-a7a6-59e34e21bf5e",
"name": "Set image ID for the post",
"type": "n8n-nodes-base.httpRequest",
"position": [
2280,
320
],
"parameters": {
"url": "=https://wp-demo.mondo.surf/wp-json/wp/v2/posts/{{ $('Post on Wordpress').item.json.id }}",
"method": "POST",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "featured_media",
"value": "={{ $json.id }}"
}
]
},
"nodeCredentialType": "wordpressApi"
},
"credentials": {
"wordpressApi": {
"id": "xxxxxxxxxxx",
"name": "WordPress Credentials"
}
},
"typeVersion": 4.1
},
{
"id": "a721762f-168d-4c87-ab6d-0d31deecd9a5",
"name": "Respond: Success",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2520,
320
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={
\"formSubmittedText\": \"The article {{ $json.title.rendered }} was correctly created as a draft on WordPress!\"
}"
},
"typeVersion": 1
},
{
"id": "51b79bc2-035d-4db8-87bb-db6c889b164e",
"name": "Respond: Error",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
620,
580
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={
'formSubmittedText': 'There was a problem creating the article, please refresh the form and try again!'
}
"
},
"typeVersion": 1
},
{
"id": "d8748498-0800-4208-b993-f233d14da7b6",
"name": "Sticky Note16",
"type": "n8n-nodes-base.stickyNote",
"position": [
533.7711864406776,
140
],
"parameters": {
"color": 2,
"width": 225.47038972308582,
"height": 370.512611879577,
"content": "## Chapters split"
},
"typeVersion": 1
},
{
"id": "4115de31-d4e9-4d77-a055-3dead31c4dc5",
"name": "Sticky Note17",
"type": "n8n-nodes-base.stickyNote",
"position": [
550.7711864406779,
200
],
"parameters": {
"color": 7,
"width": 185.6051460344073,
"height": 80,
"content": "Splits out chapter contents from the previous node"
},
"typeVersion": 1
},
{
"id": "aff8edf6-4e1e-4522-86f7-f0ce88cd0cd4",
"name": "Sticky Note18",
"type": "n8n-nodes-base.stickyNote",
"position": [
792,
198
],
"parameters": {
"color": 7,
"width": 287.370178643191,
"height": 80,
"content": "Writes the text for each chapter"
},
"typeVersion": 1
},
{
"id": "e45715a8-b1ca-4499-a16a-854f8bd4f370",
"name": "Sticky Note19",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
140
],
"parameters": {
"color": 6,
"width": 333.40108076977657,
"height": 370.512611879577,
"content": "## Chapters text"
},
"typeVersion": 1
},
{
"id": "5c4cd7a1-7dc9-4159-9bd2-dbe5f8feb663",
"name": "Sticky Note21",
"type": "n8n-nodes-base.stickyNote",
"position": [
1138.423429009716,
140
],
"parameters": {
"color": 4,
"width": 420.4253447940705,
"height": 514.2177254645992,
"content": "## Content preparation"
},
"typeVersion": 1
},
{
"id": "7a6d3f7d-0436-4844-b09a-37e805b95a2f",
"name": "Sticky Note22",
"type": "n8n-nodes-base.stickyNote",
"position": [
1160,
200
],
"parameters": {
"color": 7,
"width": 368.1523541074699,
"height": 80,
"content": "Merges the content and prepare it before sending it to WordPress"
},
"typeVersion": 1
},
{
"id": "903b695d-015a-4956-9c63-45802dfb9fdb",
"name": "Generate featured image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1940,
320
],
"parameters": {
"prompt": "=Generate a photographic image to be used as the cover image for the article titled: {{ $('Create post title and structure').all()[0].json.message.content.title }}. This is the prompt for the image: {{ $('Create post title and structure').all()[0].json.message.content.imagePrompt }}, photography, realistic, sigma 85mm f/1.4",
"options": {
"size": "1792x1024",
"style": "natural",
"quality": "hd"
},
"resource": "image"
},
"credentials": {
"openAiApi": {
"id": "xxxxxxxxxxx",
"name": "OpenAI Credentials"
}
},
"typeVersion": 1
},
{
"id": "faa847cb-9702-4207-aa1e-6d9f62493527",
"name": "Wikipedia",
"type": "@n8n/n8n-nodes-langchain.toolWikipedia",
"position": [
-20,
620
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9d09c92e-11c0-4ea9-81d6-13bc9266741a",
"name": "Create post title and structure",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-100,
320
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4-1106-preview",
"cachedResultName": "GPT-4-1106-PREVIEW"
},
"options": {
"maxTokens": 2048
},
"messages": {
"values": [
{
"content": "=Write the title, the subtitle, the chapters details, the introduction, the conclusions, and an image prompt for a SEO-friendly article about these topics:
{{ $json.keywords }}.
Instructions:
- Place the article title in a JSON field called `title`
- Place the subtitle in a JSON field called `subtitle`
- Place the introduction in a JSON field called `introduction`
- In the introduction introduce the topic that is then explored in depth in the rest of the text
- The introduction should be around 60 words
- Place the conclusions in a JSON field called `conclusions`
- The conclusions should be around 60 words
- Use the conclusions to sum all said in the article and offer a conclusion to the reader
- The image prompt will be used to produce a photographic cover image for the article and should depict the topics discussed in the article
- Place the image prompt in a JSON field called `imagePrompt`
- There should be {{ $json.chapters.toString() }} chapters.
- For each chapter provide a title and an exaustive prompt that will be used to write the chapter text.
- Place the chapters in an array field called `chapters`
- For each chapter provide the fields `title` and `prompt`
- The chapters should follow a logical flow and not repeat the same concepts.
- The chapters should be one related to the other and not isolated blocks of text. The text should be fluent and folow a linear logic.
- Don't start the chapters with \"Chapter 1\", \"Chapter 2\", \"Chapter 3\"... just write the title of the chapter
- For the title and the capthers' titles don't use colons (`:`)
- For the text, use HTML for formatting, but limited to bold, italic and lists.
- Don't use markdown for formatting.
- Always search on Wikipedia for useful information or verify the accuracy of what you write.
- Never mention it if you don't find information on Wikipedia or the web
- Go deep in the topic you treat, don't just throw some superficial info"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "xxxxxxxxxxx",
"name": "OpenAI Credentials"
}
},
"typeVersion": 1
},
{
"id": "2ecd3a50-a34f-4ab9-ad31-e4e6608708fb",
"name": "Create chapters text",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
820,
320
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4-0125-preview",
"cachedResultName": "GPT-4-0125-PREVIEW"
},
"options": {
"maxTokens": 2048
},
"messages": {
"values": [
{
"content": "=Write a chapter for the article: {{ $('Create post title and structure').item.json.message.content.title }}, {{ $('Create post title and structure').item.json.message.content.subtitle }}, that talks about {{ $('Settings').item.json[\"keywords\"] }}
This is the prompt for the chapter titled {{ $json.title }}: {{ $json.prompt }}.
Guidelines:
- Just return the plain text for each chapter (no JSON structure).
- Don't use markdown for formatting.
- Use HTML for formatting, but limited to bold, italic and lists.
- Don't add internal titles or headings.
- The length of each chapther should be around {{ Math.round(($('Settings').item.json.words - 120)/ $('Settings').item.json.chapters) }} words long
- Go deep in the topic you treat, don't just throw some superficial info
{{ $itemIndex > 0 ? \"- The previous chapter talks about \" + $input.all()[$itemIndex-1].json.title : \"\" }}
{{ $itemIndex > 0 ? \"- The promt for the previous chapter is \" + $input.all()[$itemIndex-1].json.prompt : \"\" }}
{{ $itemIndex < $input.all().length ? \"- The following chapter will talk about \" + $input.all()[$itemIndex+1].json.title: \"\" }}
{{ $itemIndex < $input.all().length ? \"- The prompt for the following chapter is \" + $input.all()[$itemIndex+1].json.prompt : \"\" }}
- Consider the previous and following chapters what writing the text for this chapter. The text must be coherent with the previous and following chapters.
- This chapter should not repeat the concepts already exposed in the previous chapter.
- This chapter is a part of a larger article so don't include an introduction or conclusions. This chapter should merge with the rest of the article.
"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "xxxxxxxxxxx",
"name": "OpenAI Credentials"
}
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1",
"saveManualExecutions": true,
"saveDataSuccessExecution": "all"
},
"versionId": "64d94f1e-51c8-40f7-a6b3-80fc43d9e71a",
"connections": {
"Form": {
"main": [
[
{
"node": "Settings",
"type": "main",
"index": 0
}
]
]
},
"Settings": {
"main": [
[
{
"node": "Create post title and structure",
"type": "main",
"index": 0
}
]
]
},
"Wikipedia": {
"ai_tool": [
[
{
"node": "Create post title and structure",
"type": "ai_tool",
"index": 0
}
]
]
},
"Upload media": {
"main": [
[
{
"node": "Set image ID for the post",
"type": "main",
"index": 0
}
]
]
},
"Post on Wordpress": {
"main": [
[
{
"node": "Generate featured image",
"type": "main",
"index": 0
}
]
]
},
"Final article text": {
"main": [
[
{
"node": "Post on Wordpress",
"type": "main",
"index": 0
}
]
]
},
"Split out chapters": {
"main": [
[
{
"node": "Merge chapters title and text",
"type": "main",
"index": 1
},
{
"node": "Create chapters text",
"type": "main",
"index": 0
}
]
]
},
"Create chapters text": {
"main": [
[
{
"node": "Merge chapters title and text",
"type": "main",
"index": 0
}
]
]
},
"Check data consistency": {
"main": [
[
{
"node": "Split out chapters",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond: Error",
"type": "main",
"index": 0
}
]
]
},
"Generate featured image": {
"main": [
[
{
"node": "Upload media",
"type": "main",
"index": 0
}
]
]
},
"Set image ID for the post": {
"main": [
[
{
"node": "Respond: Success",
"type": "main",
"index": 0
}
]
]
},
"Merge chapters title and text": {
"main": [
[
{
"node": "Final article text",
"type": "main",
"index": 0
}
]
]
},
"Create post title and structure": {
"main": [
[
{
"node": "Check data consistency",
"type": "main",
"index": 0
}
]
]
}
}
}
功能特点
- 自动检测新邮件
- AI智能内容分析
- 自定义分类规则
- 批量处理能力
- 详细的处理日志
技术分析
节点类型及作用
- Formtrigger
- Stickynote
- Set
- If
- Splitout
复杂度评估
配置难度:
维护难度:
扩展性:
实施指南
前置条件
- 有效的Gmail账户
- n8n平台访问权限
- Google API凭证
- AI分类服务订阅
配置步骤
- 在n8n中导入工作流JSON文件
- 配置Gmail节点的认证信息
- 设置AI分类器的API密钥
- 自定义分类规则和标签映射
- 测试工作流执行
- 配置定时触发器(可选)
关键参数
| 参数名称 | 默认值 | 说明 |
|---|---|---|
| maxEmails | 50 | 单次处理的最大邮件数量 |
| confidenceThreshold | 0.8 | 分类置信度阈值 |
| autoLabel | true | 是否自动添加标签 |
最佳实践
优化建议
- 定期更新AI分类模型以提高准确性
- 根据邮件量调整处理批次大小
- 设置合理的分类置信度阈值
- 定期清理过期的分类规则
安全注意事项
- 妥善保管API密钥和认证信息
- 限制工作流的访问权限
- 定期审查处理日志
- 启用双因素认证保护Gmail账户
性能优化
- 使用增量处理减少重复工作
- 缓存频繁访问的数据
- 并行处理多个邮件分类任务
- 监控系统资源使用情况
故障排除
常见问题
邮件未被正确分类
检查AI分类器的置信度阈值设置,适当降低阈值或更新训练数据。
Gmail认证失败
确认Google API凭证有效且具有正确的权限范围,重新进行OAuth授权。
调试技巧
- 启用详细日志记录查看每个步骤的执行情况
- 使用测试邮件验证分类逻辑
- 检查网络连接和API服务状态
- 逐步执行工作流定位问题节点
错误处理
工作流包含以下错误处理机制:
- 网络超时自动重试(最多3次)
- API错误记录和告警
- 处理失败邮件的隔离机制
- 异常情况下的回滚操作