anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
An n8n workflow that profiles a business from its web address. A Gemini agent researches the site with Firecrawl and Claude, DataForSEO adds its keywords, and Gmail sends you the filled Google Doc report and its PDF.
Business profile and keyword report from a website is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Form
It starts when someone sends the Page SEO/GEO Check form with:
A business profile with brand traits, a persona and customer questions, two keyword lists, and a report as a document and a PDF
What you need before you start.
Spreadsheet
Holds each run’s copy of your template: the 14 business fields, the ranked keywords and the suggested ones.
NeedsA Google account to sign in with, and a template with three tabs
File storage
Copies both templates for each run and keeps the filled report as a document and a PDF.
NeedsA Google account to sign in with
Documents
Swaps the 16 placeholders in the copied template for the run’s values.
NeedsA Google account, and a document template with the placeholders
Sends the report’s two links and the session ID to one inbox.
NeedsA Google account to sign in with
Language model
Runs Gemini 2.5 Flash for the agent that plans the research and saves the fields.
NeedsGemini API key
Web research
Runs Claude Sonnet 4.5 with web search, for the brand search and the deeper market research.
NeedsAnthropic API key, with web search on
Web scraping
Reads the page as Markdown for the agent.
NeedsFirecrawl API key, typed into the node’s header
Keyword data
Returns the page’s ranked keywords, keyword ideas for the site and the search intent of each idea.
NeedsAPI login and password, as HTTP Basic Auth
Checked by Mindket on 13 Nov 2026
This n8n workflow builds a business profile and a keyword report from one web address. A form asks for the address, a country and a language. A Gemini 2.5 Flash agent scrapes the site with Firecrawl, has Claude search the web twice, and saves 14 fields to a copy of your sheet template. DataForSEO then lists the keywords the page ranks for and new ideas with a clear search intent. The fields fill a copy of your Google Doc template, Drive keeps it as a document and a PDF, and Gmail sends you both links. It runs on 35 nodes.
SEO consultants and agencies who prepare a short audit before a sales call, and marketers who need a first read of a business in a new country. It fits people who already pay for DataForSEO. Skip it if you want a report with no setup. You build two templates and a sub-workflow before the first run.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| SEO agencies | Account managers | Run it on a prospect’s site the day before the first call | An agency enters a bakery chain’s address and arrives with its ranked keywords and a customer persona. |
| Marketing consulting | Freelancers taking on a client | Read the profile and the brand traits as a first brief | A consultant sends the PDF to a new client and asks what the profile got wrong. |
| Companies entering a market | In-house marketers | Pick the new country and its language in the form | A team opening in Spain runs its own site in Spanish to see which keyword ideas come back. |
| Content teams | Editors | Treat the suggested keywords and the five customer questions as a list of pages to write | An editor turns the five questions into five answers on the site’s help page. |
You need to be at home in n8n: two templates, a sub-workflow and accounts at four vendors. Its author puts setup at about 14 minutes, which assumes the templates and the sub-workflow already exist.
Any n8n that can reach Google, Anthropic, Firecrawl and DataForSEO will run it. The report lands in your Drive and your inbox.
Send email to file the links with the client’s recordGet it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Build the two templates first, since every run copies both.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| One account for Sheets, Docs, Drive and Gmail, and a Gemini API key | |
| Anthropic | An API key with web search on, for the two Claude tools |
| Firecrawl | An API key, for the scrape |
| DataForSEO | An API login and password, for three keyword calls |
| A sub-workflow | Your own, for a site’s links and Google’s results, with the fields below |
workflow.json.Business Data, Page Ranked Keywords and Suggested Page Keywords, headed as the README lists. Put its ID in Copy file in place of YOUR_SHEET_TEMPLATE_ID.{{client_name}}. The README lists all 16. Put its ID in Make Copy of Template in place of YOUR_DOC_TEMPLATE_ID.Send email, replace YOUR_EMAIL_ID with the inbox for the reports.Business Analyst, and an Anthropic credential in online_Search and deep_research.URL_search, replace <YOUR_FIRECRAWL_KEY> with your key, brackets included.Get Ranked Keywords, Keyword for Site and Search Intent.get_internal_links, serp_Search and ai_Mode.The sub-workflow is not in the file. Its three tool nodes pointed at a workflow in its author’s own n8n, so they arrive empty. Yours receives these fields, and function names the job:
{
"function": "internal_links, serp_search or ai_mode",
"url": "<the form’s Page URL>",
"keyword": "<the agent’s search words>",
"location_code": "<DataForSEO’s number for the country>",
"language_code": "<DataForSEO’s code for the language>"
}get_internal_links sends only function and url. The file does not show what its author’s version returned, so any text or JSON the agent can read will do. The README names DataForSEO and Firecrawl endpoints that fit the three jobs.
Open the form from Submit Form, type the address without https, and pick a country and a language. The run goes on behind the form and takes a while, since the agent may use up to 40 tool rounds. When it ends, an email brings the document link, the PDF link and the run’s session ID. Each run gets its own copy of the sheet.
| To change | Where |
|---|---|
| The report’s look | Your document template, where the placeholders sit |
| The fields the agent writes | The field table in the Business Analyst prompt |
| Which keyword ideas stay | 1000 in Filter Keywords, and 200 and 0.7 in Filter |
| How many ranked keywords | "limit": 200 in the body of Get Ranked Keywords |
| Who gets the email, and its words | Send to, the subject and the text of Send email |
You enter northfieldbikes.example, pick United Kingdom and English, and send the form. The agent saves a row like this one in Business Data, shown with its text cut:
{
"client_name": "Northfield Bikes",
"client_country": "United Kingdom",
"client_language": "English",
"brand_personality_matrix": "…, …, …, …, …",
"people_ask": "1. …?\n2. …?\n3. …?\n4. …?\n5. …?",
"customer_journey": "Awareness: …\nConsideration: …\nPurchase: …\nLoyalty: …",
"GEO_tactic": "…",
"call_to_action": "…"
}Page Ranked Keywords gets up to 200 rows, each with its volume, cost per click, competition and estimated traffic. Suggested Page Keywords gets the ideas that passed the filters, with their intent labels. Then the email arrives:
Subject: Business Analysis for Northfield Bikes Hey 👋 Here’s your report 📄 📝 Name: Business Analysis Report for Northfield Bikes 🌐 Document: <link to the uploaded document> 📘 PDF: <link to the PDF> ⚙️ Session ID: cc48213
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. The agent’s tools hang under it on thin lines, and the agent decides which to call and when. Run one small site first. Then open Business Analyst in that execution to read each tool call and its answer.
For experts. No node reads the agent’s own reply. Its work reaches the report only through the row it saves, and the keyword branch uses the form’s values alone.
| Tool | What it is | What to know |
|---|---|---|
URL_search | Firecrawl’s scrape, Markdown of the main content | Accepts a cached copy up to four hours old (maxAge) |
online_Search, deep_research | Claude Sonnet 4.5 with web search | Up to 5 and 10 searches a call, answers in the form’s language |
get_internal_links, serp_Search, ai_Mode | Your sub-workflow | The last two pass DataForSEO’s location and language codes |
insert_row_in_data_table | An append to Business Data | The session ID and the form’s country, language and address go in without the agent |
Think_tool | n8n’s think tool | A place for the agent’s notes, costing tokens only |
Gemini runs at temperature 0.2 with up to 7,000 output tokens.
It spends money at four vendors, and a run can end without a report.
claude-sonnet-4-5-20250929 on 30 November 2026, its deprecations page said on 2 November 2026, so switch both Claude tools to claude-sonnet-5-5. Google now serves Gemini 2.5 only to accounts that used it before, so a new key may need gemini-3.8-flashFilter Keywords says 100 searches, but its code keeps ideas from 1,000 upprimary_competitors, which the report never showsAn n8n workflow that turns one web address into a written business profile and two keyword lists. You give a form the
address, a country and a language. A Gemini agent studies the site with seven tools and saves 14 fields about the business
to a sheet. DataForSEO then adds the keywords the page already ranks for and new ones worth a page of their own. Last, the
workflow fills a copy of your Google Doc template, keeps it in Google Drive as a document and a PDF, and emails you both links.
workflow.json: the workflow as n8n exports it, 35 working nodes and seven sticky notes that label its parts. It holdsREADME.md: these notes.Copy file and Make Copy of Template pointed at its author's own sheet and document. They now ask forYOUR_SHEET_TEMPLATE_ID and YOUR_DOC_TEMPLATE_ID.get_internal_links, serp_Search and ai_Mode called a sub-workflow in its author's n8n. They arrive empty, so youURL_search reads Bearer <YOUR_FIRECRAWL_KEY>.Business Analyst, the line breakn, and it reads \n again. Inonline_Search and deep_research, the math markers read \( \) and \[ \] again.workflow.json./d/ and /edit,Copy file in place of YOUR_SHEET_TEMPLATE_ID.Make Copy of Template in place ofYOUR_DOC_TEMPLATE_ID.insert_row_in_data_table, Insert Page Ranked Keywords,Insert Suggested Page Keywords and Get Business Data. Drive: Copy file, Make Copy of Template, Generate Doc,Add Doc to Drive, Generate PDF and Add PDF To Drive. Docs: Change Variables in Doc. Gmail: Send email.Send email, replace YOUR_EMAIL_ID in Send to with the inbox that should get the reports.Business Analyst.online_Search and deep_research. Set both to claude-sonnet-5-5URL_search, replace <YOUR_FIRECRAWL_KEY> with your key. The brackets go too.Get Ranked Keywords,Keyword for Site and Search Intent.get_internal_links, serp_Search and ai_Mode.The sheet template is copied for every run, and each copy keeps that run's data. Spell the headers exactly as here.
| Tab | Columns |
|---|---|
| Business Data | session_id, client_name, client_country, client_language, client_website, client_description, target_audience_personas, brand_personality_matrix, unique_value_proposition, primary_competitors, people_ask, customer_journey, customer_persona_trait, eeat_signal_integration, GEO_tactic, call_to_action |
| Page Ranked Keywords | keyword, search_volume, cpc, competition_level, estimated_traffic, session_id |
| Suggested Page Keywords | keyword, search_volume, cpc, competition, intent, intent_probability, session_id |
The document template is your report's layout. Write these placeholders where each value should go, braces included:{{client_name}}, {{client_website}}, {{client_country}}, {{client_language}}, {{date_time}},{{client_description}}, {{target_audience_personas}}, {{brand_personality_matrix}},{{unique_value_proposition}}, {{people_ask}}, {{customer_journey}}, {{customer_persona_trait}},{{eeat_signal_integration}}, {{GEO_tactic}}, {{call_to_action}} and {{ranked_keywords_sheets_link}}. The last one
becomes a link to the run's copy of the sheet, where the keyword lists are.
Three of the agent's tools call one sub-workflow, and function tells it which job is wanted. Start yours with a When
Executed by Another Workflow trigger that accepts these five fields:
{
"function": "internal_links, serp_search or ai_mode",
"url": "<the form's Page URL>",
"keyword": "<the agent's search words>",
"location_code": "<DataForSEO's number for the country>",
"language_code": "<DataForSEO's code for the language>"
}
get_internal_links sends function and url only. serp_Search and ai_Mode send the other four. Return text or JSON
the agent can read. The file says nothing about what its author's version did, so this is one way to build it, from
DataForSEO's and Firecrawl's API pages read on 2 November 2026:
internal_links POST https://api.firecrawl.dev/v2/map
serp_search POST https://api.dataforseo.com/v3/serp/google/organic/live/advanced
ai_mode POST https://api.dataforseo.com/v3/serp/google/ai_mode/live/advanced
Submit Form takes the page's address and picks from two lists. Get Country & Language Code turns theSession ID makes a run ID such as cc48213.Copy file copies your sheet template for this run, named after the address.Business Analyst runs Gemini 2.5 Flash with eight tools. One scrapes the page (URL_search), and the threeonline_Search, deep_research). Think_tool holds its notes, and insert_row_in_data_table saves the 14 fields.Get Ranked Keywords asks DataForSEO for up to 200 keywords the address ranks for. Filter keywords drops repeats andPage Ranked Keywords.Keyword for Site asks Google Ads data for keyword ideas. Filter Keywords keeps ideas with 1,000 or more monthlySearch Intent labels each one, and Filter keeps those over 200 searches with an intent probability aboveSuggested Page Keywords.Get Business Data reads the run's row back by its session ID. Make Copy of Template copies your document, andChange Variables in Doc replaces its 16 placeholders.Generate Doc exports the filled document as an OpenDocument file, and Add Doc to Drive uploads it to My Drive.Generate PDF and Add PDF To Drive do the same as a PDF.Send email sends the file name, both links and the session ID to the address in Send to.Business Analyst prompt. It sets five brand traits, five questions,1000 in Filter Keywords, 200 and 0.7 in Filter, and "limit": 200 in the body ofGet Ranked Keywords.Send email.Get Country & Language Code.Business Analyst uses models/gemini-2.5-flash, and both Claude tools use claude-sonnet-4-5-20250929.claude-sonnet-4-5-20250929 on 30 November 2026claude-sonnet-5-5 as its replacement. Google's page says the 2.5 models stay on but only for accounts thatgemini-3.8-flash inBusiness Analyst.online_Search call and 10 in a deep_research call. Firecrawl counts each scrape, and DataForSEO bills every call,Search Intent making one call for each keyword idea. Try one small site first.Filter keywords, Filter Keywords and Filter. The same happens when the agent never savesFilter Keywords says 100, but its code keeps 1,000 and up. So the volume test inFilter never removes anything, and only the intent probability decides.primary_competitors: the save tool has a column for it, but the prompt does not ask for it and the report neverclient_website is saved as typed in the form, though the prompt asks the agent for a bare domain.README.md 10 KB workflow.json 100 KB
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
nerijs · Kit
A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…
LiconStudio · Kit
Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…