自动化应用分析与ASO报告生成器
中级
这是一个Market Research, Multimodal AI领域的自动化工作流,包含 13 个节点。主要使用 Code, Telegram, GoogleDocs, FormTrigger, HttpRequest 等节点。 使用Gemini AI和Google Docs从Google Play应用生成ASO报告
前置要求
- •Telegram Bot Token
- •可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"name": "自动化应用分析与 ASO 报告生成器",
"tags": [],
"nodes": [
{
"id": "04d002d6-cae7-45ed-9e6d-983aa5126767",
"name": "表单提交时",
"type": "n8n-nodes-base.formTrigger",
"position": [
0,
0
],
"parameters": {
"options": {},
"formTitle": "ASO Report",
"formFields": {
"values": [
{
"fieldLabel": "Play Store URL",
"requiredField": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9d911180-cd81-43f5-a328-663bace8c221",
"name": "HTTP 请求",
"type": "n8n-nodes-base.httpRequest",
"position": [
440,
0
],
"parameters": {
"url": "=https://app.sensortower.com/api/android/apps/{{ $json.packageName }}?country=US",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "98bc7603-c7e0-4cae-b02b-84cf0279eefb",
"name": "基础LLM链",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
880,
0
],
"parameters": {
"text": "=Create an ASO Report based on the following data. \n\nThe report must include:\n📱 App Overview (Name, Publisher, Category, Installs, Rating, In-app purchases, Last update) \n⭐ User Ratings & Reviews (average rating, rating count, summary of featured reviews with sentiment highlights) \n📊 Competitor Analysis (App Name, Publisher, Rating, Installs) \n📈 Market Insights (downloads & revenue last month, top countries if available) \n💡 Recommendations (actionable suggestions to improve monetization, retention, competitiveness) \n\n---\n\n### Input Data:\n\nApp Name: {{ $json.appInfo.name }}\nApp ID: {{ $json.appInfo.app_id }}\nPublisher: {{ $json.appInfo.publisher }}\nCategory: {{ $json.appInfo.category }}\nInstalls: {{ $json.appInfo.installs }}\nRating: {{ $json.appInfo.rating }}\nRating Count: {{ $json.appInfo.rating_count }}\nIn-App Purchases: {{ $json.appInfo.in_app_purchases }}\nLast Update: {{ $json.appInfo.last_update }}\n\nFeatured Reviews:\n{{ $json.reviewsText }}\n\nCompetitors:\n{{ $json.competitorsText }}\n\nMarket Insights:\nDownloads Last Month: {{ $json.market.downloads }}\nRevenue Last Month: {{ $json.market.revenue }} {{ $json.market.currency }}\n",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=You are an ASO (App Store Optimization) Analyst. \nGenerate an executive report in plain text only.\nDo not use HTML or Markdown. \nFormat the report neatly using emojis as section headers and bullet points. \nAlways write in business English.\n"
}
]
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "5b71fe1e-1774-45e9-b8d8-05cb6c8aeb5e",
"name": "代码",
"type": "n8n-nodes-base.code",
"position": [
660,
0
],
"parameters": {
"jsCode": "// n8n Code Node: Parse + Format App Intelligence Data\n// Input: JSON from HTTP Request (SensorTower / similar API)\n// Output: Summary data ready for LLM (formatted text)\n\nconst data = items[0].json;\n\n// --- Get basic info ---\nconst appInfo = {\n name: data.name,\n app_id: data.app_id,\n publisher: data.publisher_name,\n rating: data.rating,\n rating_count: data.rating_count,\n installs: data.installs,\n category: data.categories?.map(c => c.name).join(\", \") || \"N/A\",\n in_app_purchases: data.top_in_app_purchases?.US || \"None\",\n last_update: data.current_version,\n};\n\n// --- Get 3 latest featured reviews ---\nconst reviews = (data.featured_reviews || [])\n .slice(0, 3)\n .map(r => ({\n user: r.username,\n date: r.date,\n rating: r.rating,\n content: r.content,\n tags: r.tags || []\n }));\n\n// Format reviews into clean string\nconst reviewsText = reviews.map(r => \n `- User: ${r.user}\\n Date: ${r.date}\\n Rating: ${r.rating}\\n Content: ${r.content}\\n Tags: ${r.tags.join(\", \")}`\n).join(\"\\n\\n\");\n\n// --- Get top 3 competitors ---\nconst competitors = (data.related_apps || [])\n .slice(0, 3)\n .map(app => ({\n name: app.name,\n publisher: app.publisher_name,\n rating: app.rating,\n installs: app.rating_count,\n }));\n\n// Format competitors into clean string\nconst competitorsText = competitors.map(c => \n `- Name: ${c.name}\\n Publisher: ${c.publisher}\\n Rating: ${c.rating}\\n Installs: ${c.installs}`\n).join(\"\\n\\n\");\n\n// --- Get market data (downloads & revenue last month) ---\nconst market = {\n downloads: data.worldwide_last_month_downloads?.value || 0,\n revenue: data.worldwide_last_month_revenue?.value || 0,\n currency: data.worldwide_last_month_revenue?.currency || \"USD\"\n};\n\n// --- Return final data for LLM ---\nreturn [\n {\n json: {\n appInfo,\n reviewsText,\n competitorsText,\n market\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "e6e2cec5-a1dc-4b0b-ba28-b910c88734e1",
"name": "OpenRouter聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
880,
220
],
"parameters": {
"model": "google/gemini-2.0-flash-exp:free",
"options": {}
},
"typeVersion": 1
},
{
"id": "6e7ed502-b385-4c67-9076-45f5885321ce",
"name": "创建文档",
"type": "n8n-nodes-base.googleDocs",
"position": [
1240,
0
],
"parameters": {
"title": "={{ $('Code').item.json.appInfo.name }}",
"folderId": "YOUR_GOOGLE_DRIVE_FOLDER_ID"
},
"typeVersion": 2
},
{
"id": "5042a450-3c0b-4e71-b89f-71ff8b1eba30",
"name": "更新文档",
"type": "n8n-nodes-base.googleDocs",
"position": [
1460,
0
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "={{ $('Basic LLM Chain').item.json.text }}",
"action": "insert"
}
]
},
"operation": "update",
"documentURL": "={{ $json.id }}"
},
"typeVersion": 2
},
{
"id": "e551c8e9-bbd4-446a-9e7c-932460f6a792",
"name": "发送文本消息",
"type": "n8n-nodes-base.telegram",
"position": [
1680,
0
],
"parameters": {
"text": "=📄 New document for app analysis: {{ $('Code').item.json.appInfo.name }}\n🔗 Document link: https://docs.google.com/document/d/{{ $json.documentId }}/edit?tab=t.0\n",
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"additionalFields": {
"appendAttribution": false
}
},
"typeVersion": 1.2
},
{
"id": "de8cfef6-6362-4375-b0fc-b1d70421df9a",
"name": "代码1",
"type": "n8n-nodes-base.code",
"position": [
220,
0
],
"parameters": {
"jsCode": "// Input from form trigger\nconst url = items[0].json[\"Play Store URL\"];\n\n// Find the 'id=' parameter in the URL\nlet packageName = null;\ntry {\n const urlObj = new URL(url);\n packageName = urlObj.searchParams.get(\"id\");\n} catch (e) {\n // fallback manual if not a valid URL\n const match = url.match(/id=([^&]+)/);\n packageName = match ? match[1] : null;\n}\n\nreturn [\n {\n json: {\n packageName\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "9b40b151-d7ab-4d27-b896-ffc51e5c3832",
"name": "便签 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-660,
-500
],
"parameters": {
"width": 580,
"height": 1160,
"content": "# 自动化应用分析与 ASO 报告生成器"
},
"typeVersion": 1
},
{
"id": "4f425ee1-d7e6-4b47-92ee-a80ffd58d341",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
-180
],
"parameters": {
"color": 2,
"width": 640,
"height": 340,
"content": "- 当用户提交包含应用 Play 商店 URL 的表单时,工作流启动"
},
"typeVersion": 1
},
{
"id": "97bab2dd-d3ff-435a-bdca-8a9859a92e13",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
-180
],
"parameters": {
"color": 4,
"width": 760,
"height": 540,
"content": "- 解析原始 JSON 并将其格式化为结构化文本,包括应用详情、精选评论、竞争对手数据和市场洞察。"
},
"typeVersion": 1
},
{
"id": "475755b2-50c1-4db7-8fca-1417cb5ce660",
"name": "便签 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1400,
-180
],
"parameters": {
"color": 5,
"width": 520,
"height": 540,
"content": "- 将 ASO 报告文本插入先前创建的 Google 文档中。"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"connections": {
"Code": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"Code1": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "Create a document",
"type": "main",
"index": 0
}
]
]
},
"Create a document": {
"main": [
[
{
"node": "Update a document",
"type": "main",
"index": 0
}
]
]
},
"Update a document": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Code1",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 市场调研, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
YouTube评论情感和关键词提取器
使用Gemini AI分析YouTube评论情感和关键词并通过Telegram报告
Set
Code
Telegram
+10
20 节点Budi SJ
市场调研
使用Vision API和LLM实现自动化发票收集与数据提取
使用Google Vision OCR、Gemini LLM和Google Sheets提取和结构化发票数据
Set
Code
Telegram
+8
17 节点Budi SJ
发票处理
基于 AI、社交媒体和 WhatsApp 链接的自动化本地商业线索生成器
使用 AI、社交媒体和 WhatsApp 链接自动生成本地商业线索
If
Code
Limit
+9
29 节点Budi SJ
潜在客户开发
通过Telegram的DOI URL自动导入研究论文到Zotero
从Telegram导入研究论文到Zotero,含AI摘要总结
If
Set
Code
+7
25 节点Budi SJ
AI 摘要总结
使用AI和RSS的多平台YouTube内容生成器
使用AI和RSS从YouTube生成多平台内容
If
Set
Code
+10
37 节点Budi SJ
内容创作
自动化视频生成器
使用 DeepSeek、TTS 和 Together.ai 从脚本生成 AI 视频
Set
Code
Wait
+15
81 节点Lakindu Siriwardana
内容创作
工作流信息
难度等级
中级
节点数量13
分类2
节点类型8
作者
Budi SJ
@budisjI’m a Product Designer who also works as an Automation Developer. With a background in product design and systems thinking, I build user-centered workflows. My focus is on helping teams and businesses work more productively through impactful automation systems.
外部链接
在 n8n.io 查看 →
分享此工作流