Google Play Store und SerpApi App-Rankings und Bewertungen-Monitoring
Fortgeschritten
Dies ist ein Market Research, Multimodal AI-Bereich Automatisierungsworkflow mit 15 Nodes. Hauptsächlich werden Code, Wait, SerpApi, GoogleSheets, SplitInBatches und andere Nodes verwendet. Google Play Store und SerpApi App-Rankings und Bewertungen Monitoring System
Voraussetzungen
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (15)
Kategorie
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
"meta": {
"instanceId": "886f6aad18962318bf6e0e61dcc99fe4272655356eb72558c67fde0caf721bc9",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "663b52e3-3baa-40b9-b236-7a2b9bac0f1f",
"name": "Ranking & Bewertungs-Log aktualisieren",
"type": "n8n-nodes-base.googleSheets",
"position": [
820,
40
],
"parameters": {
"columns": {
"value": {
"rank": "={{ $json.rank }}",
"rating": "={{ $json.rating }}",
"keyword": "={{ $('Search Google Play').item.json.search_parameters.q }}",
"searched_at": "={{ $now.toISO() }}",
"app_title_to_match": "={{ $('Loop Over Keywords').item.json.app_title_to_match }}"
},
"schema": [
{
"id": "searched_at",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "searched_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "app_title_to_match",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "app_title_to_match",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "keyword",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "keyword",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "rank",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "rank",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "rating",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "rating",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"useAppend": true
},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "url",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
}
},
"credentials": {},
"typeVersion": 4.5
},
{
"id": "c2840876-46bb-4355-9e89-b90743a5ed4c",
"name": "Warten",
"type": "n8n-nodes-base.wait",
"position": [
1260,
115
],
"webhookId": "71256d52-4b36-45a3-9e45-f55f28df091a",
"parameters": {
"amount": 4
},
"typeVersion": 1.1
},
{
"id": "cd4f9a3b-2ef8-4d7d-b016-887a81eda107",
"name": "Zeitplan-Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-280,
115
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 10
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d8f9a1e2-8686-4aef-9ab4-49e694ff494a",
"name": "Notiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
-180
],
"parameters": {
"color": 7,
"width": 200,
"height": 460,
"content": "## Schedule\n\nConfigured to run at 10 AM UTC every day. Adjust as needed or trigger it manually."
},
"typeVersion": 1
},
{
"id": "f6ce04bc-263c-44c6-b650-1b6947c1a1e4",
"name": "Notiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-100,
-180
],
"parameters": {
"color": 7,
"width": 400,
"height": 460,
"content": "## Get Keywords and Titles to Match\n\nReads your Google Sheet to fetch your keywords and app titles to match.\n\nThen loops over each row."
},
"typeVersion": 1
},
{
"id": "2c3c0cbb-ff02-488d-b81b-cfac44bcea2a",
"name": "Notiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
540,
-180
],
"parameters": {
"color": 7,
"width": 220,
"height": 460,
"content": "## Parse Rank & Rating\n\nCode to find and parse target app's rank and rating. Assigns \"N/A\" if an app title is not found in the results."
},
"typeVersion": 1
},
{
"id": "52f66150-7693-4a10-9751-f753a97de6d1",
"name": "Notiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-180
],
"parameters": {
"color": 7,
"width": 200,
"height": 460,
"content": "## Search Google Play\n\nSearches keyword in SerpApi's Google Play Store API."
},
"typeVersion": 1
},
{
"id": "f4ea5441-9de0-42a2-9dea-aa545c23f18e",
"name": "Keywords und zugehörige Titel abrufen",
"type": "n8n-nodes-base.googleSheets",
"position": [
-60,
115
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "url",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
}
},
"credentials": {},
"typeVersion": 4.5
},
{
"id": "68f1519c-061d-4a95-8d45-f79ff7082ec6",
"name": "Keywords durchlaufen",
"type": "n8n-nodes-base.splitInBatches",
"position": [
160,
120
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "7c9a95f8-5e5e-44e3-a6ec-9eeb014ec3c7",
"name": "Google Play durchsuchen",
"type": "n8n-nodes-serpapi.serpApi",
"position": [
380,
40
],
"parameters": {
"q": "={{ $json.keyword }}",
"operation": "google_play",
"requestOptions": {},
"additionalFields": {}
},
"credentials": {},
"typeVersion": 1
},
{
"id": "ab545189-47c1-4074-ba76-020667b0101c",
"name": "Ranking & Bewertung für Ziel-App parsen",
"type": "n8n-nodes-base.code",
"position": [
600,
40
],
"parameters": {
"jsCode": "index = $input.first().json.organic_results[0].items.findIndex(obj => obj.title.includes($('Loop Over Keywords').first().json.app_title_to_match));\n\nif (index >= 0) {\n rank = index + 1;\n rating = $input.first().json.organic_results[0].items[index].rating\n} else {\n rank = \"N/A\"\n rating = \"N/A\"\n}\n\nreturn {\n rank: rank,\n rating: rating\n};"
},
"typeVersion": 2
},
{
"id": "f92cd971-38f9-4878-896b-a0781fee0f60",
"name": "Notiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
-460
],
"parameters": {
"width": 440,
"height": 740,
"content": "## Update Google Sheet\n\nLogs results to results log and updates last run overview sheet.\n\nAdd your own Google Sheet here.\n\nIf the mappings get wiped when you add your Google Sheet, here they are:\n\nsearched_at: `{{ $now.toISO() }}`\napp_title_to_match: `{{ $('Loop Over Keywords').item.json.app_title_to_match }}`\nkeyword: `{{ $('Search Google Play').item.json.search_parameters.q }}`\nrank: `{{ $json.rank }}`\nrating: `{{ $json.rating }}`\n\nThe update last run node should match on `title_keyword_pair`. Enter this expression to match on:\n\n`{{ $('Loop Over Keywords').item.json.title_keyword_pair }}`"
},
"typeVersion": 1
},
{
"id": "3ed6ab74-e07f-4b8c-a57b-6f918204bba9",
"name": "Notiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
-180
],
"parameters": {
"color": 7,
"width": 200,
"height": 460,
"content": "## Delay\n\nWait 4 seconds before going to next row to not hit Google Sheets API's per minute quota limit. You can remove/adjust this if you have a a higher quota limit on the Google Sheets API. "
},
"typeVersion": 1
},
{
"id": "958079ab-11a4-464b-8a7d-fc832083bf5e",
"name": "Notiz6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-860,
-420
],
"parameters": {
"width": 520,
"height": 1040,
"content": "## Google Play Store App Rank and Rating Monitoring\n\n### What and who this is for\n\nThis workflow will be useful for anyone looking to do SEO tracking on the Google Play Store. It automates checking Google Play Store rank positions and average ratings for a list of app titles.\n\nThe SerpApi component can also be modified to use other APIs for anyone looking for SEO tracking on any other search engine supported by SerpApi.\n\n### How it works\n\nThis workflow takes in a list of keywords and app titles to identify the apps' rank in Google Play Store search results. It also grabs the average rating of the app. The search uses SerpApi's Google Play Store API.\n\nThe results are then synced to two different sheets in a Google Sheet. The first is a log of all past run. The latest results are appended to the bottom of the log. The second updates a kind of \"dashboard\" to show the results from the latest run.\n\nThe workflow includes a Wait node that delays 4 seconds between each app title and keyword pair to prevent hitting the default Google Sheets' API per minute rate limit. You can delete this if you have a high enough custom rate limit on the Google Sheets API.\n\nThe Schedule Trigger is configured to run at 10 AM UTC every day.\n\n### How to use\n\n1. Create a free SerpApi account here: https://serpapi.com/\n1. Add SerpApi credentials to n8n. Your SerpApi API key is here: https://serpapi.com/manage-api-key\n1. Connect your Google Sheets accounts to n8n. Help available here: https://n8n.io/integrations/google-sheets/\n1. Copy this Google Sheet to your own Google account: https://docs.google.com/spreadsheets/d/1DiP6Zhe17tEblzKevtbPqIygH3dpPCW-NAprxup0VqA/edit?gid=1750873622#gid=1750873622\n1. Set your own list of keywords and app titles to match in the 'Latest Run' sheet. This is the source list used to run the searches and must be set.\n1. Connect your Google Sheet in the 'Get Keywords and Titles to Match' Google Sheet node\n1. Connect your Google Sheet in the 'Update Rank & Rating Log' Google Sheet node\n1. Connect your Google Sheet again in the 'Update Latest Run' Google Sheet node\n1. (Optional) Update the schedule or disable the schedule to only run manually\n\n### Documentation\n\n[SerpApi Google Play Store API](https://serpapi.com/google-play-api)\n[SerpApi n8n Node Intro Guide](https://serpapi.com/blog/boost-your-n8n-workflows-with-serpapis-verified-node/)\n"
},
"typeVersion": 1
},
{
"id": "dd0c2409-a2d4-49d4-81eb-9124d7628957",
"name": "Letzten Durchlauf aktualisieren",
"type": "n8n-nodes-base.googleSheets",
"position": [
1040,
40
],
"parameters": {
"columns": {
"value": {
"rank": "={{ $('Parse Rank & Rating for Target App').item.json.rank }}",
"rating": "={{ $('Parse Rank & Rating for Target App').item.json.rating }}",
"keyword": "={{ $('Loop Over Keywords').item.json.keyword }}",
"searched_at": "={{ $now.toISO() }}",
"app_title_to_match": "={{ $('Loop Over Keywords').item.json.app_title_to_match }}",
"title_keyword_pair": "={{ $('Loop Over Keywords').item.json.title_keyword_pair }}"
},
"schema": [
{
"id": "app_title_to_match",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "app_title_to_match",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "keyword",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "keyword",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title_keyword_pair",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "title_keyword_pair",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "rank",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "rank",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "rating",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "rating",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "searched_at",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "searched_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"title_keyword_pair"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "url",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
}
},
"credentials": {},
"typeVersion": 4.5
}
],
"pinData": {},
"connections": {
"c2840876-46bb-4355-9e89-b90743a5ed4c": {
"main": [
[
{
"node": "68f1519c-061d-4a95-8d45-f79ff7082ec6",
"type": "main",
"index": 0
}
]
]
},
"cd4f9a3b-2ef8-4d7d-b016-887a81eda107": {
"main": [
[
{
"node": "f4ea5441-9de0-42a2-9dea-aa545c23f18e",
"type": "main",
"index": 0
}
]
]
},
"dd0c2409-a2d4-49d4-81eb-9124d7628957": {
"main": [
[
{
"node": "c2840876-46bb-4355-9e89-b90743a5ed4c",
"type": "main",
"index": 0
}
]
]
},
"68f1519c-061d-4a95-8d45-f79ff7082ec6": {
"main": [
[],
[
{
"node": "7c9a95f8-5e5e-44e3-a6ec-9eeb014ec3c7",
"type": "main",
"index": 0
}
]
]
},
"7c9a95f8-5e5e-44e3-a6ec-9eeb014ec3c7": {
"main": [
[
{
"node": "ab545189-47c1-4074-ba76-020667b0101c",
"type": "main",
"index": 0
}
]
]
},
"663b52e3-3baa-40b9-b236-7a2b9bac0f1f": {
"main": [
[
{
"node": "dd0c2409-a2d4-49d4-81eb-9124d7628957",
"type": "main",
"index": 0
}
]
]
},
"f4ea5441-9de0-42a2-9dea-aa545c23f18e": {
"main": [
[
{
"node": "68f1519c-061d-4a95-8d45-f79ff7082ec6",
"type": "main",
"index": 0
}
]
]
},
"ab545189-47c1-4074-ba76-020667b0101c": {
"main": [
[
{
"node": "663b52e3-3baa-40b9-b236-7a2b9bac0f1f",
"type": "main",
"index": 0
}
]
]
}
}
}Häufig gestellte Fragen
Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Marktforschung, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Google Maps-Bewertungen mit Google Tabellen synchronisieren
Google Maps Bewertungen zu Google Tabellen Synchronisierung mit SerpApi
If
Set
Code
+
If
Set
Code
22 NodesSerpApi
Marktforschung
MetaAds Creative Insight Researcher v1.4
Verwenden Sie Google Vision und die Video Intelligence API, um Meta-Werbekreationen zu analysieren
If
Set
Code
+
If
Set
Code
32 NodesKirill Khatkevich
Marktforschung
Automatisierte Inhaltsstrategie mit Google Trends, Nachrichten, Firecrawl und Claude AI
Automatisierte Inhaltsstrategie mit Google Trends, Nachrichten, Firecrawl und Claude AI
Set
Code
Aggregate
+
Set
Code
Aggregate
22 NodesGrowth AI
Marktforschung
YouTube-Kommentare Sentiment-Analyse und Schlüsselwort-Extraktor
Gemini AI zur Analyse der Zusammenfassung und der Schlüsselwörter der YouTube-Kommentare und an Telegram senden
Set
Code
Telegram
+
Set
Code
Telegram
20 NodesBudi SJ
Marktforschung
10 - Business-Tracker
Tägliche Wettbewerbsforschungsautomatisierung mit SerpAPI, Google Sheets und Airtable
If
Code
Airtable
+
If
Code
Airtable
15 NodesAvkash Kakdiya
Marktforschung
Erstellung und Veröffentlichung von Instagram-Carousels mit OpenAI gpt-image-1 und KI-Untertiteln
Automatisiertes Erstellen von Instagram-Karussells aus Google Sheets mit GPT-Image-1 und AI-Captions
If
Set
Code
+
If
Set
Code
32 NodesJorge Martínez
Multimodales KI
Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes15
Kategorie2
Node-Typen7
Autor
SerpApi
@serpapiExterne Links
Auf n8n.io ansehen →
Diesen Workflow teilen