Mindket

One-page SEO and speed check with a hosted dashboard

Newversion 1 · updated

Overview

An n8n workflow that checks one web page for a market you pick. DataForSEO measures it, a Gemini agent reads the results and the live page, and an interactive HTML dashboard with an action plan lands in your S3-compatible bucket.

One-page SEO and speed check with a hosted dashboard 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.

At a glance

Runs in
  • n8n Cloud: import the file, add three credentials and paste one key
  • Your own n8n server: the same file and steps
  • Cloudflare R2 or Amazon S3: any bucket n8n’s S3 node can write to and the public can read
  • A client update: send the dashboard’s address with a proposal or a monthly report

Platform

Connects 4 apps

How it works

Trigger

Page SEO/GEO Checker form

It starts when someone sends the form with:

  • The address of the page
  • A country, picked from a list
  • A language, picked from a list

Actions

  1. Turns the country and the language into DataForSEO’s codes
  2. Four DataForSEO calls measure the page, its mobile speed, its rankings and keyword ideas
  3. A Gemini agent compares the report with the live HTML and plans the fixes
  4. A Code node turns it all into a dark HTML page with a keyword bubble chart
  5. The page is uploaded to your bucket and its public address is built

Result

A shareable dashboard for one page: scores, evidence, a ranked list of fixes and its keywords

Integrations

What you need before you start.

DataForSEO

Page and keyword data

Crawls the page, runs Lighthouse on it, and returns the keywords it ranks for and ideas for its site.

NeedsAPI login and password, as HTTP Basic Auth

Google Gemini

Language model

Runs gemini-3-flash-preview for the agent that writes the analysis.

NeedsGemini API key

Firecrawl

Web scraping

Fetches the live page’s HTML when the agent asks for it.

NeedsFirecrawl API key, typed into the node’s header

S3-compatible storage

File storage

Keeps each dashboard as an HTML file at a public address.

NeedsA bucket the public can read, and an access key for the S3 credential

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
17 steps, starting on a form
AI
1 step calls an AI model: Performance Analysis Engine
Sign-ins
Signs in to: DataForSEO and Google Gemini
API keys
No API key is left in the file
Step types
Mindket’s checker reads 6 of its 7 step types. It does not read: S3

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow checks one web page and publishes what it finds as an interactive dashboard you can send. A form takes the page’s address, a country and a language. DataForSEO crawls the page, times it on a phone with Lighthouse, and lists the keywords it ranks for there and keyword ideas for its site. A Gemini agent reads those results and the live page, fetched through Firecrawl, and writes a numbered action plan. The dashboard lands in your own S3-compatible bucket. Nothing on the site changes. Twenty-two nodes run it.

Who it suits

SEO freelancers, agencies and site owners who want a fast read on one page that matters, with a link to hand a client. Skip it for a whole site. It checks one page a run.

Who uses it, and how
IndustryWho uses itHow they use itExample
SEO consultingFreelance consultantsCheck a prospect’s home page and send the dashboard with the pitchA consultant opens a sales call on the first three items of the action plan.
Web agenciesDevelopers and project leadsCheck a client’s landing page once a monthEach month’s dashboard keeps its own file, since the name carries the date.
Online retailShop ownersCheck a product page in the market it sells toA shop picks the United Kingdom and English and sees which searches already find the page.
Content marketingContent leadsRead the keyword ideas before rewriting a pageA content lead takes two terms from the table view into the new draft.

You need some n8n and four accounts: DataForSEO, Google AI Studio, Firecrawl and a storage provider with a public bucket. Its author puts setup at about 12 minutes, with those accounts ready.

Where to use it

Any n8n that can reach DataForSEO, Google, Firecrawl and your bucket will run it. The result is one web page, so it opens in any browser.

  • n8n Cloud: import the file, add three credentials and paste one key
  • Your own n8n server: the same file and steps
  • Cloudflare R2 or Amazon S3: any bucket n8n’s S3 node can write to and the public can read
  • A client update: send the dashboard’s address with a proposal or a monthly report

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the bucket readable from a public address first, since the last node only builds that address.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
DataForSEOAn account with funds, and its API login and API password
Google AI StudioA Gemini API key
FirecrawlAn API key, for the agent’s page fetch
A bucketS3-compatible, open to the public for reading, with an access key that can write to it
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an HTTP Basic Auth credential with your DataForSEO API login and password. Select it in On Page SEO, Get Ranked Keywords, On Page Lighthouse (Mobile) and Keyword for Site.
  3. Add a Google Gemini (PaLM) API credential and select it in Gemini 2.5 Pro.
  4. In URL_search, replace <YOUR_FIRECRAWL_KEY> in the Authorization header with your key. The brackets go too.
  5. Add an S3 credential for your storage, select it in Cloudflare Upload and replace YOUR_BUCKET_NAME with the bucket’s name.
  6. In Get Research URL, replace YOUR_PUBLIC_URL with the bucket’s public address, with no slash at the end.
  7. Save, open the test address of On form submission and check a page of your own.
  8. Press Publish once the dashboard opens.

DataForSEO’s API password is a separate one from your sign-in. On Cloudflare R2, the S3 credential’s region is auto and its endpoint is your account’s r2.cloudflarestorage.com address.

How to use it

Open the form, paste the page’s full address with https, and pick the country and language whose search results you care about. The form thanks you at once while the run goes on. When it ends, open the run under Executions. The dashboard’s address is the url field that Get Research URL returns.

What to change for a different result
To changeWhere
The markets on offerThe dropdowns in On form submission and the maps in Get Country & Language Code, spelt alike
How many ranked keywordslimit in the body of Get Ranked Keywords
Which ideas countThe search volume floor in Filter Keyword for Site
Phone or desktopfor_mobile in On Page Lighthouse (Mobile)
The analysisThe agent’s system message and the example in Structured Output
The dashboardThe HTML and CSS in Code

Example

You check a bakery’s menu page for the United Kingdom in English.

Page URL: https://bakery.example/menu
Country: United Kingdom
Language: English

Get Country & Language Code sends DataForSEO the location code 2826 and the language en. The agent answers in the parser’s shape, trimmed here:

{
  "analyzedUrl": "https://bakery.example/menu",
  "executiveSummary": { "headline": "…", "summary": "…" },
  "keyScores": [{ "metric": "Performance", "score": "…" }],
  "seoAnalysis": { "strengths": ["…"], "weaknesses": ["…"], "contextualEvidence": [{ "finding": "…", "evidence": "…" }] },
  "geoAnalysis": { "summary": "…", "contentReadiness": "…", "issues": ["…"] },
  "actionPlan": [{ "priority": 1, "title": "…", "description": "…", "tags": ["…"] }]
}

The file is saved as bakery plus the day’s date, so a check on 3 November 2026 becomes bakery20261103.html at your public address. It opens on the agent’s headline and scores. A technical panel, the evidence, the action plan and a bubble chart of keywords sized by search volume follow.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Here four rows run side by side, one for each DataForSEO call, and Merge waits for all four. Check one page first. Each node then shows what it received and sent, which is where a refused login or an empty answer turns up.

For experts. Four DataForSEO calls feed one agent, and the agent can make one more call of its own.

Where the numbers come from
NodeCallWhat to know
On Page SEOon_page/instant_pagesLoads the page and its resources without JavaScript
Get Ranked Keywordsdataforseo_labs/google/ranked_keywords/liveOrganic, paid, featured snippet, local pack and AI Overview results, sorted by volume from the lowest
On Page Lighthouse (Mobile)on_page/lighthouse/live/jsonLighthouse 12.2.0 as a phone
Keyword for Sitekeywords_data/google_ads/keywords_for_site/liveIdeas for the whole site, search partners included
URL_searchFirecrawl’s v1/scrapeRaw HTML of the whole page, from a cache up to four hours old

Code builds the dashboard from the agent’s scores and plan, and the keywords come from the merged measurements. Cloudflare Upload saves it as text/html, so a browser shows it as a page.

Good to know

Each check costs money at three vendors. Some of the original logic also skews what the dashboard says.

  • Billing: DataForSEO bills four calls a check, Google the agent’s Gemini calls and Firecrawl the page fetch
  • Least searched first: Get Ranked Keywords sorts from the lowest volume, so a page with more ranked keywords than its limit returns its quietest ones. Change asc to desc in its body
  • Mixed keywords: Merge deep-merges its inputs, and both keyword lists share the name keywords. Entries at one position merge, so a keyword idea can show another keyword’s rank
  • Fixed verdicts: every report the agent reads says the page fails Core Web Vitals and is held back by its performance score. Its table also counts ms as seconds, so any blocking time shows as Poor
  • Dashboard gaps: its Core Web Vitals panel looks for fields the workflow never sets and stays hidden, and each resource saving reads 0 KB
  • Missing tags: a page DataForSEO returns with no title, H1 or H2 stops the run at Prepare AI Input
  • Preview model: Google’s deprecations page, read on 3 November 2026, lists gemini-3-flash-preview with no shutdown date and names gemini-3.6-flash as its replacement
  • Public file: anyone with the address can open the dashboard, and a second check of one site on the same day replaces the first
  • Open form: anyone with its address can spend your DataForSEO funds, so turn on the form trigger’s basic authentication
  • Your data: the address goes to DataForSEO and Firecrawl, and the report and the page’s HTML go to Google
  • Credentials: the JSON holds none. Take the Firecrawl key out of its header before you share the workflow

README and files

README

One-page SEO and speed check with a hosted dashboard

An n8n workflow that checks one web page for the country and language you pick. DataForSEO crawls it, times it on a phone
with Lighthouse and lists the keywords it ranks for, plus keyword ideas for its site. A Gemini agent reads those results and the
live page, then writes an action plan. Everything becomes an interactive HTML dashboard in your own storage bucket, at an
address you can send.

What is inside

  • workflow.json: the workflow as n8n exports it, 22 working nodes and six sticky notes that label its rows. It holds no
    credential.
  • README.md: these notes.

What we changed from the original copy

  • The original copy was not valid JSON. Its export had decoded the HTML entities inside escapeHtml in Code, so a bare
    quote ended the string. &amp;, &lt;, &gt;, &quot; and &#39; are back where they belong.
  • The export also dropped the backslashes in the code. Prepare AI Input could not run at all: the newlines in six places
    had become a plain n, and the backticks around the analysed address closed its template string early. Both are repaired.
  • The [Learn more] patterns in Filter Page Report and Prepare AI Input are escaped again. Without the backslashes,
    Filter Page Report deleted every L, e, a, r, n, m, o and space from each Lighthouse description.
  • The dot after www in the file name is escaped again, in Cloudflare Upload and Get Research URL.
  • URL_search asks for <YOUR_FIRECRAWL_KEY> in its Authorization header, and Get Research URL for YOUR_PUBLIC_URL. The
    bucket stays YOUR_BUCKET_NAME, as it came.
  • The DataForSEO, S3 and Gemini credentials are gone, as is the form's webhook id. The workflow carries this listing's name.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A DataForSEO account with funds, and its API login and API password. Its API password differs from the one you sign in with.
  • A Gemini API key from Google AI Studio.
  • A Firecrawl API key.
  • An S3-compatible bucket that serves its files at a public address, such as a Cloudflare R2 bucket with public access or an
    Amazon S3 bucket with a public read policy. You also need an access key that can write to it.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an HTTP Basic Auth credential with your DataForSEO API login and API password. Select it in On Page SEO,
    Get Ranked Keywords, On Page Lighthouse (Mobile) and Keyword for Site.
  3. Add a Google Gemini (PaLM) API credential with your key and select it in Gemini 2.5 Pro.
  4. In URL_search, replace <YOUR_FIRECRAWL_KEY> in the Authorization header with your key. The brackets go too, so the
    header reads Bearer, a space and the key.
  5. Add an S3 credential with your storage's endpoint, region, access key ID and secret. On Cloudflare R2 the endpoint is your
    account's r2.cloudflarestorage.com address and the region is auto. Select it in Cloudflare Upload, then replace
    YOUR_BUCKET_NAME with the bucket's name.
  6. In Get Research URL, replace YOUR_PUBLIC_URL with the address the bucket's files open from, with no slash at the end.
  7. Save, open the test address of On form submission and check a page of your own.
  8. Press Publish once the dashboard opens at the address Get Research URL builds.

How a run goes

  1. On form submission takes the page's address and a country and a language from two lists. Get Country & Language Code
    turns the two names into DataForSEO's codes, such as 2826 and en for the United Kingdom in English.
  2. Four DataForSEO calls run side by side, each followed by a filter that keeps the fields worth reading:
    - On Page SEO loads the page and its resources without running JavaScript. It returns the on-page score, title,
    description, H1 and H2 lists, link counts and checks such as HTTPS and a canonical tag.
    - Get Ranked Keywords asks for up to 100 keywords the page ranks for in that market, with rank, volume and cost per click.
    - On Page Lighthouse (Mobile) runs Lighthouse 12.2.0 as a phone. Filter Page Report keeps the four category scores,
    five speed timings and the audits that failed.
    - Keyword for Site asks DataForSEO's Google Ads data for keyword ideas across the whole site. Filter Keyword for Site
    keeps ideas searched 100 times a month or more.
  3. Merge joins the four answers into one item, and Prepare AI Input writes them up as a Markdown report.
  4. Performance Analysis Engine is an agent on gemini-3-flash-preview. It reads the report and fetches the live page's
    HTML through URL_search, which calls Firecrawl. A calculator and a date tool hang under it as well. Structured Output
    holds its answer to one shape. That shape has a headline and summary, scores, and SEO strengths and weaknesses with
    evidence from the HTML. It ends with notes on how readable the page is for AI search engines and a numbered action plan.
    The agent retries when a call fails.
  5. Merge1 puts that answer beside the measurements. Code builds a dark HTML page from both, with a keyword bubble chart
    drawn by D3 and a table view beside it.
  6. Cloudflare Upload saves the page to your bucket as the site's first name and the date, such as
    bakery20261103.html. Get Research URL puts your public address in front of that name.

The form answers as soon as it is sent. The dashboard's address is the url field in the output of Get Research URL, so
open the run under Executions to find it.

Change the look

  • Countries and languages: the two dropdowns in On form submission and the two maps in Get Country & Language Code. Spell
    a name the same way in both.
  • How many ranked keywords: limit in the body of Get Ranked Keywords.
  • The floor for keyword ideas: the search_volume check in Filter Keyword for Site. Its comment says 200, which is not
    what the code checks.
  • Phone or desktop: for_mobile in the body of On Page Lighthouse (Mobile).
  • What the analysis covers: the agent's system message and the example in Structured Output.
  • The dashboard's colours and sections: the HTML and CSS in Code.
  • The model: Gemini 2.5 Pro, which runs gemini-3-flash-preview despite its name.

Good to know

  • Each check costs money in three places. DataForSEO bills four calls, Google bills the agent's Gemini calls and Firecrawl
    counts the page fetch.
  • Get Ranked Keywords orders by search volume from the lowest. A page that ranks for more keywords than its limit
    therefore sends its least searched ones. Change asc to desc in its body to get the biggest.
  • Merge has no clash setting, so n8n deep-merges the four answers. Both keyword lists arrive under the same name,
    keywords, and entries at the same position merge into one: a keyword idea can show a ranked keyword's rank. To keep them
    apart, give the ideas their own field name in Filter Keyword for Site and read both fields in Prepare AI Input and Code.
  • Prepare AI Input writes two fixed sentences into every report: that the page is held back by its performance score and
    fails Core Web Vitals. Its speed table also reads the s in ms as seconds, so any Total Blocking Time shows as Poor. The agent
    reads that report, so check its verdict against the scores.
  • The dashboard's Core Web Vitals panel looks for field names the workflow never sets, so it never shows. Every resource under
    a performance opportunity reads 0 KB for the same reason.
  • Prepare AI Input counts the H1 and H2 lists and trims the title without checking them first. A page DataForSEO returns
    without a title, an H1 or an H2 stops the run there.
  • On Page SEO runs no JavaScript, so a page that builds its text in the browser can look empty to it. The agent's Firecrawl
    fetch asks for raw HTML too.
  • The model is a preview. Google's deprecations page, read on 3 November 2026, lists gemini-3-flash-preview with no
    shutdown date and names gemini-3.6-flash as its replacement. If the preview goes, pick that model in Gemini 2.5 Pro.
  • URL_search calls Firecrawl's v1 scrape address. Its v1 reference was still published on 3 November 2026, beside a newer v2.
  • The dashboard is public: anyone with its address can open it. Two checks of one site on the same day share a file name, so
    the second replaces the first, even for different pages.
  • Opening the dashboard loads D3 7.8.5 from cdnjs in the reader's browser.
  • Anyone with the form's address can start a check on your DataForSEO funds and your Gemini key. Turn on the form trigger's
    basic authentication or keep the address to yourself.
  • The page's address goes to DataForSEO and Firecrawl, and the report and the page's HTML go to Google. The dashboard sits in
    your bucket.
  • The Firecrawl key sits in a header, so take it out before you share the workflow.
Files
README.md  9 KB
workflow.json  118 KB

2 files, 126 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Huashu Design

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…

New29.4k

Guizang PPT Skill

op7418 · Skill

Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…

New29.8k

Claude Code Skills & Plugins

alirezarezvani · Skill

Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…

New29.8k

Similar in Marketing & SEO

See all in Marketing & SEO

Pixel Art XL

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…

New

Licon MSR for LTX-2.5

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…

New

Flux.2-Klein-9B-MatchingPose

nhathoangfoto · Kit

A LoRA for FLUX.2 Klein 9B that puts a character into the pose shown by a mannequin reference while keeping the character's face and style. For artists and des…

New