特殊追踪器共享
高级
这是一个Personal Productivity, AI Summarization领域的自动化工作流,包含 25 个节点。主要使用 Set, Merge, Switch, Webhook, Aggregate 等节点。 从LINE消息自动追踪支出,使用GPT-4和Google表格
前置要求
- •HTTP Webhook 端点(n8n 会自动生成)
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (25)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "lqR2ivTOUP1U8YWq",
"meta": {
"instanceId": "970c4d82a1fd6c0dde6e2533d614308b87f56f1529e0c7f88f1092ace0a59b83",
"templateCredsSetupCompleted": true
},
"name": "特殊追踪器共享",
"tags": [],
"nodes": [
{
"id": "a9abe724-ec70-4aa9-9579-39968d9f624c",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-3000,
40
],
"webhookId": "cb4a4272-92e8-4061-9d65-3abdbef3ce2e",
"parameters": {
"path": "your-webhook-path",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "559432eb-1739-49e7-9fae-9337ef843239",
"name": "消息",
"type": "n8n-nodes-base.set",
"position": [
-2540,
20
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "18602838-3e42-4804-b809-938dea492e38",
"name": "body.events[0].message.text",
"type": "string",
"value": "={{ $json.body.events[0].message.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1161ff82-4ceb-435a-a4ed-c2ca4f618627",
"name": "图片",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2540,
200
],
"parameters": {
"url": "=https://api-data.line.me/v2/bot/message/{{ $json.body.events[0].message.id }}/content ",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <Line Channel access token>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "afb32020-22d2-420c-9567-b3b81fda1075",
"name": "AI 代理",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2200,
20
],
"parameters": {
"text": "=Please analyze {{ $json.body.events[0].message.text }} or the image",
"options": {
"systemMessage": "=Check relevance: If the text is not an expense record or invoice, immediately stop all processing. If it is bookkeeping-related, extract the six data fields below.\nExtract these six pieces of information: \n1. Date (If the input only says “today”, use {{ $now.format('YYYY-MM-DD') }}) 2. Channel (Free text from the input) 3. Channel Type (Must be exactly one of: Convenience Store, Personal Care Store, Hypermarket / Supermarket, Traditional Market, Online Shopping, Pharmacy, Hardware Store, Restaurant / Food, Stall, Medical Clinic / Hospital, 3C / Electronics Mall, Airline / Passenger Transport, Software Top-Up, Gas / Transit Top-Up, Online Course, Telecom Company) 4. Expense Description (Free text from the input) 5. Amount 6. Category (Must be exactly one of: Household, Main Meals, Drinks & Desserts, Household Items, Beauty, Clothing & Accessories, Transport, Entertainment, Telecom, Medical, 3C, Software, Learning, Travel)\nOutput format: JSON :{\\\"Date\\\": \\\"...\\\", \\\"Channel\\\": \\\"...\\\", \\\"Channel Type\\\": \\\"...\\\", \\\"Expense Description\\\": \\\"...\\\", \\\"Amount\\\": \\\"...\\\", \\\"Category\\\": \\\"...\\\"}\"\n\n",
"passthroughBinaryImages": true
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "a4fe0a3b-40e0-4cf0-9d44-86abadca9fe4",
"name": "OpenAI 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2200,
340
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "2sWsHFXza8n6eI0h",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "516361f7-21a9-4d9a-9f44-2bab05b9bfcb",
"name": "回复到行",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
60
],
"parameters": {
"url": "https://api.line.me/v2/bot/message/reply",
"method": "POST",
"options": {},
"jsonBody": "={\n \"replyToken\": \"{{ $('Webhook').item.json.body.events[0].replyToken }}\",\n \"messages\": [\n {\n \"type\": \"text\",\n \"text\": \"✅ Expense recorded successfully: {{ $('Merge_all').item.json['for_duplication'] }}\"\n }\n ]\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <Line Channel access token>"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ab9fbffc-cd1e-4a2c-8f5e-23ee0f844c77",
"name": "获取表格中的行",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1540,
260
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 372483996,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_JK8t0LdX-RF3oBwDTJ30mpkkw8vs02xR0folLryebk/edit#gid=372483996",
"cachedResultName": "2025en"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1_JK8t0LdX-RF3oBwDTJ30mpkkw8vs02xR0folLryebk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_JK8t0LdX-RF3oBwDTJ30mpkkw8vs02xR0folLryebk/edit?usp=drivesdk",
"cachedResultName": "Spending Tracker"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "wAHxYOqSVXo0KyWi",
"name": "Google Sheets account 3"
}
},
"typeVersion": 4.6,
"alwaysOutputData": true
},
{
"id": "88bd5d9f-bcaa-4191-bcb6-1e3a0b138879",
"name": "全部合并",
"type": "n8n-nodes-base.merge",
"position": [
-700,
40
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2,
"alwaysOutputData": false
},
{
"id": "5d153710-d3a2-42dc-a090-c4faa3390210",
"name": "重复回复到行",
"type": "n8n-nodes-base.httpRequest",
"position": [
-200,
280
],
"parameters": {
"url": "https://api.line.me/v2/bot/message/reply",
"method": "POST",
"options": {},
"jsonBody": "={\n \"replyToken\": \"{{ $('Webhook').item.json.body.events[0].replyToken }}\",\n \"messages\": [\n {\n \"type\": \"text\",\n \"text\": \"⚠️ This entry has already been logged and will not be duplicated\"\n }\n ]\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <Line Channel access token>"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "570de74c-b410-40ff-b7ac-781625c912a7",
"name": "无消费回复到行",
"type": "n8n-nodes-base.httpRequest",
"position": [
-200,
-120
],
"parameters": {
"url": "https://api.line.me/v2/bot/message/reply",
"method": "POST",
"options": {},
"jsonBody": "={\n \"replyToken\": \"{{ $('Webhook').item.json.body.events[0].replyToken }}\",\n \"messages\": [\n {\n \"type\": \"text\",\n \"text\": \"Irrelevant details or images will not be logged.\"\n }\n ]\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <Line Channel access token>"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "05789d97-3ebb-4e9f-951d-ecd54c4da404",
"name": "多表:您可以连接多个表以实现有组织的数据结构",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-2000,
180
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": "{\n \"Date\": \"...\",\n \"Channel\": \"...\",\n \"Channel Type\": \"...\",\n \"Expense Description\": \"...\",\n \"Amount\": \"...\",\n \"Category\": \"...\"\n}"
},
"typeVersion": 1.3
},
{
"id": "cbadff1d-15f5-4282-a62f-b42c25b41661",
"name": "追加到表格1",
"type": "n8n-nodes-base.googleSheets",
"position": [
-200,
60
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json.output.Date }}",
"Amount": "={{ $json.output.Amount }}",
"Channel": "={{ $json.output.Channel }}",
"Category": "={{ $json.output.Category }}",
"Channel Type": "={{ $json.output['Channel Type'] }}",
"for_duplication": "={{ $json.for_duplication }}",
"Expense Description": "={{ $json.output['Expense Description'] }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Channel",
"type": "string",
"display": true,
"required": false,
"displayName": "Channel",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Channel Type",
"type": "string",
"display": true,
"required": false,
"displayName": "Channel Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Expense Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Expense Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Amount",
"type": "string",
"display": true,
"required": false,
"displayName": "Amount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Category",
"type": "string",
"display": true,
"required": false,
"displayName": "Category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "for_duplication",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "for_duplication",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"for_duplication"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 372483996,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_JK8t0LdX-RF3oBwDTJ30mpkkw8vs02xR0folLryebk/edit#gid=372483996",
"cachedResultName": "2025en"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1_JK8t0LdX-RF3oBwDTJ30mpkkw8vs02xR0folLryebk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_JK8t0LdX-RF3oBwDTJ30mpkkw8vs02xR0folLryebk/edit?usp=drivesdk",
"cachedResultName": "Spending Tracker"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "wAHxYOqSVXo0KyWi",
"name": "Google Sheets account 3"
}
},
"typeVersion": 4.6
},
{
"id": "aee3b5eb-ff29-4847-ab57-8cbb0cdba7a6",
"name": "聚合",
"type": "n8n-nodes-base.aggregate",
"position": [
-940,
260
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"renameField": true,
"outputFieldName": "dedupeList",
"fieldToAggregate": "for_duplication"
}
]
}
},
"typeVersion": 1
},
{
"id": "8da264bd-5b13-4912-ae8e-7ded8fc6af17",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2540,
-640
],
"parameters": {
"width": 720,
"height": 540,
"content": "## 英文提示"
},
"typeVersion": 1
},
{
"id": "4f8f3594-5aa1-4279-b25e-502658e8bedc",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2100,
440
],
"parameters": {
"width": 280,
"height": 440,
"content": "## 结构化输出 英文"
},
"typeVersion": 1
},
{
"id": "efb13bc2-bc7a-4f6a-8ec1-d783ac9c1d41",
"name": "去重",
"type": "n8n-nodes-base.set",
"position": [
-1700,
20
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2f544a6e-2a51-4979-b0fb-ef9c3dcf54c6",
"name": "for_duplication",
"type": "string",
"value": "={{ $json.output.Date }}-{{ $json.output['Channel Type'] }}-{{ $json.output.Amount }}-{{ $json.output.Category }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "f6f35e3c-0424-4e7c-be0f-33e191dca2b4",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1700,
-420
],
"parameters": {
"width": 320,
"height": 300,
"content": "## 去重 英文"
},
"typeVersion": 1
},
{
"id": "296b9ff9-4819-49a8-b813-37dc507db57d",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1760,
440
],
"parameters": {
"color": 4,
"width": 320,
"height": 480,
"content": "## Google 表格字段 英文"
},
"typeVersion": 1
},
{
"id": "8ff07d6b-6aa1-4a43-ab5a-231a4f668ca3",
"name": "用于去重",
"type": "n8n-nodes-base.set",
"position": [
-1240,
260
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9b7c37f4-beac-493d-8cec-81d59fe144f7",
"name": "for_duplication",
"type": "string",
"value": "={{ $json.for_duplication }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e1af076e-37f4-4cdf-8a9c-ca5f3cd2e743",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1380,
440
],
"parameters": {
"width": 320,
"height": 240,
"content": "## 用于去重 英文"
},
"typeVersion": 1
},
{
"id": "f62cb77b-74e1-4b90-9937-95af55e76497",
"name": "便签5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-940,
440
],
"parameters": {
"width": 220,
"height": 260,
"content": "## 聚合 英文"
},
"typeVersion": 1
},
{
"id": "e2f1f377-4d78-4853-8d4e-037c4db5a483",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-640
],
"parameters": {
"width": 540,
"height": 540,
"content": "## 切换 英文"
},
"typeVersion": 1
},
{
"id": "c9ea87a2-0f69-47a7-b409-1ea4ada2a666",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3240,
-400
],
"parameters": {
"color": 4,
"width": 400,
"height": 300,
"content": "## 需求 英文"
},
"typeVersion": 1
},
{
"id": "6a01a146-0b13-4ac5-8429-bf8452157587",
"name": "根据支出类型切换",
"type": "n8n-nodes-base.switch",
"position": [
-2780,
40
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "text",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "45419786-9466-49e9-bfe9-a46923cfe56e",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.events[0].message.type }}",
"rightValue": "text"
}
]
},
"renameOutput": true
},
{
"outputKey": "image",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "dba6e722-8432-481b-aa6d-9a3fdff4f022",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.events[0].message.type }}",
"rightValue": "image"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "12f21b25-8a50-4224-8f3d-cfcba20510b6",
"name": "响应切换",
"type": "n8n-nodes-base.switch",
"position": [
-460,
0
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "empty",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "8e802d98-e4ed-4e9b-a383-4e44229bce76",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.for_duplication }}",
"rightValue": "DN-DN-DN-DN"
}
]
},
"renameOutput": true
},
{
"outputKey": "empty",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "07afa184-938a-45fc-aa3f-69d9ea989058",
"operator": {
"type": "string",
"operation": "regex"
},
"leftValue": "={{ $json.for_duplication }}",
"rightValue": "^.*-DN-DN-DN$"
}
]
},
"renameOutput": true
},
{
"outputKey": "empty",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "01611be4-10af-43e2-99a4-00c96ea4f947",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.for_duplication }}",
"rightValue": "---"
}
]
},
"renameOutput": true
},
{
"outputKey": "add",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "55f50acc-423c-4cf9-844a-a4a0e0c48973",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$json.dedupeList.includes($json['for_duplication']) }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "duplicate",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "7cdabbfc-6a66-4f28-a2cf-781fe145faca",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ !$json.dedupeList.includes($json['for_duplication']) }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "none"
},
"looseTypeValidation": true
},
"typeVersion": 3.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "99a76ce1-eb41-4cb5-93a9-8bed26cf767d",
"connections": {
"image": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Switch based on Expense Type",
"type": "main",
"index": 0
}
]
]
},
"message": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "deduplication",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Merge_all",
"type": "main",
"index": 1
}
]
]
},
"Merge_all": {
"main": [
[
{
"node": "Response Switch",
"type": "main",
"index": 0
}
]
]
},
"deduplication": {
"main": [
[
{
"node": "Get row(s) in sheet",
"type": "main",
"index": 0
},
{
"node": "Merge_all",
"type": "main",
"index": 0
}
]
]
},
"Response Switch": {
"main": [
[
{
"node": "reply_to_line_no_spending",
"type": "main",
"index": 0
}
],
[
{
"node": "reply_to_line_no_spending",
"type": "main",
"index": 0
}
],
[
{
"node": "reply_to_line_no_spending",
"type": "main",
"index": 0
}
],
[
{
"node": "append_to_sheet1",
"type": "main",
"index": 0
}
],
[
{
"node": "reply_to_line_duplicated",
"type": "main",
"index": 0
}
]
]
},
"append_to_sheet1": {
"main": [
[
{
"node": "reply_to_line",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"for_deduplications": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet": {
"main": [
[
{
"node": "for_deduplications",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Switch based on Expense Type": {
"main": [
[
{
"node": "message",
"type": "main",
"index": 0
}
],
[
{
"node": "image",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 个人效率, AI 摘要总结
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
杂项
使用 Mistral AI、LinkedIn 和 Google Sheets 自动化职位搜索与简历定制
使用 Mistral AI、LinkedIn 和 Google Sheets 自动化职位搜索与简历定制
Set
Code
Html
+18
46 节点Jordan Hoyle
个人效率
基于 SerpAPI、Gemini AI 过滤器和邮件通知的自动化职位爬取
基于 SerpAPI、Gemini AI 过滤器和邮件通知的自动化职位爬取
Set
Wait
Merge
+13
35 节点Louis
个人效率
宠物店 4
🐶 宠物店预约 AI 代理
If
Set
Code
+41
187 节点Bruno Dias
人工智能
AI 客户支持分流与摘要系统
使用GPT-4o、Slack和CRM集成自动处理客户支持
If
Set
Code
+10
32 节点NodeAlchemy
工单管理
灵活新闻聚合器 - 多源集成、AI分析和可设置频道
多源新闻策展系统,集成Mistral AI分析、摘要和自定义频道
If
Set
Xml
+32
120 节点Hybroht
内容创作