Mindket

Site-wide on-page SEO audit with a report for each page

Newversion 1 · updated

Overview

An n8n workflow that audits up to 100 pages of a website from one form. Firecrawl finds the pages, DataForSEO tests each one in a browser, and every page gets an HTML report in Google Drive and a row in Google Sheets.

Site-wide on-page SEO audit with a report for each page 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 a key, then publish
  • Your own n8n server: the same file and steps
  • Google Drive: one HTML file for each page, named seo-audit- and a timestamp
  • Google Sheets: one row for each page, with a download link to its report

Platform

Connects 4 apps

How it works

Trigger

Site audit form

It starts when someone sends the Internal Links Check form with:

  • Page URL, the address of the site

Actions

  1. Firecrawl maps the site and returns up to 100 page addresses
  2. DataForSEO loads each page in a browser and returns its score, timings and checks
  3. A Code node builds a styled HTML report for the page
  4. The report is saved to a Google Drive folder
  5. A summary row with the issue count and the top fix is added to Google Sheets

Result

An HTML report in Drive and a row in your sheet for every page found, each with a score and a fix to start on

Integrations

What you need before you start.

Firecrawl

Site map

Maps the site from its links and sitemap and returns up to 100 addresses.

NeedsFirecrawl API key, typed into the node’s header

DataForSEO

On-page audit

Loads each page with browser rendering and a spelling check, and returns its on-page score, timings and checks.

NeedsDataForSEO API login and password, and funds for the calls

Google Drive

Report storage

Saves each page’s HTML report as a new file in your folder.

NeedsA Google account to sign in with, and a folder

Google Sheets

Audit log

Adds one row for each page, with the checks, the issue count, the top fix and a link to the report.

NeedsA Google account to sign in with, and a sheet with 23 headers

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
10 steps, starting on a form
AI
No step calls an AI model
Sign-ins
Signs in to: DataForSEO, Google Drive, Google Sheets and Firecrawl
API keys
No API key is left in the file; 1 blank in it for your own key
Step types
Mindket’s checker reads all 9 of its step types

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

About

What it is

This n8n workflow audits every page it can find on a website, up to 100, and gives each one an HTML report and a row in a sheet. You type an address into a form. Firecrawl maps the site from its links and sitemap. DataForSEO then loads each page in a browser, with scripts, resources and a spelling check, and returns its on-page score, timings and checks. A Code node turns those numbers into a styled report for Google Drive. Google Sheets gets a summary row with the top fix. Ten nodes run it.

Who it suits

Freelance SEO consultants, agencies and site owners who want a technical pass over a small site before a redesign or a pitch. It reads pages one by one, so a site of a few dozen pages suits it best. Skip it for keyword research or rankings. It looks only at the pages themselves. Nothing on the site is changed.

Who uses it, and how
IndustryWho uses itHow they use itExample
SEO consultingFreelance consultantsRun a prospect’s site and attach a few reports to the proposalA consultant opens a pitch with the five pages whose score came back lowest.
Web designAgenciesAudit a client’s site before and after a rebuildAn agency sets the old site’s scores beside the new site’s in two tabs.
Online retailShop ownersSort the sheet by Priority Fix and work through the pages in orderA shop owner finds a run of product pages with no meta description.
Content marketingContent leadsFilter on word count and readability to find thin pagesA content lead picks the thin posts to expand next.

You need some n8n and three accounts: DataForSEO, Firecrawl and Google. Its author puts setup at about 12 minutes, with the accounts ready.

Where to use it

Any n8n that can reach DataForSEO, Firecrawl and Google will run it, and the reports land in one Drive folder while the summaries go to one tab.

  • n8n Cloud: import the file, add three credentials and a key, then publish
  • Your own n8n server: the same file and steps
  • Google Drive: one HTML file for each page, named seo-audit- and a timestamp
  • Google Sheets: one row for each page, with a download link to its report

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the folder and the sheet first.

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
FirecrawlAn API key, for the site map
GoogleAn account for a Google Drive OAuth2 and a Google Sheets OAuth2 credential
A folderA Drive folder for the reports
A sheetA tab named Page SEO Audit with 23 headers in row 1
The sheet’s headers
GroupColumns
The pageDate, URL, On Page Score, Status, Meta Title, Meta Description
Content and speedReadability Score, Load Time, Word Count, Misspelling, Page Size (mb)
Checks, each Yes or NoALT Missing, Broken Links, Broken Resources, Has H1, Has Title, Has Description, Has Canonical, SEO Friendly url, Passes core web vitals
The verdictIssues, Priority Fix, Full Report
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Make a Drive folder and copy its ID: the last part of its address, after /folders/.
  3. Make the sheet with its Page SEO Audit tab, then copy its ID: the long part of its address between /d/ and /edit.
  4. Add a Google Drive OAuth2 credential, select it in Create file from text and replace YOUR_FOLDER_ID with the folder’s ID.
  5. Add a Google Sheets OAuth2 credential, select it in Google Sheets and replace YOUR_SHEET_ID with the sheet’s ID.
  6. Add an HTTP Basic Auth credential with your DataForSEO API login and API password, and select it in On Page SEO.
  7. In Get Map, 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.
  8. Save, open the test address of Submit Form and send a small site. Press Publish when the rows look right.

DataForSEO’s API password is not the one you sign in with. Its dashboard shows a separate pair for the API.

How to use it

Open the form and type the site’s full address, with https. The form answers at once and the run goes on. Firecrawl returns the addresses it finds, and the loop sends them to DataForSEO one at a time. Each page gets its report in Drive and its row in the sheet before the next one starts, so a large site takes a while. Then sort the sheet by On Page Score or Issues.

What to change for a different result
To changeWhere
How many pageslimit in the body of Get Map, 100 in the file
Subdomains and the sitemapincludeSubdomains and sitemap in the same body
What DataForSEO runsThe body of On Page SEO: browser rendering, resources and spelling, each billed on top
The report’s look and sectionsThe HTML in Code in JavaScript
The columns and the top fixThe mapping in Google Sheets, where Priority Fix takes the first problem in a fixed order
The pause before each rowWait, one second in the file

Example

You send the form with one address.

Page URL: https://bakery.example

Firecrawl returns the site’s addresses, such as the home page, a menu page and a contact page. For each one, Page Data keeps about 70 fields from the answer DataForSEO sends back. The sheet gets a row like this:

One row in the sheet
ColumnValue
URLhttps://bakery.example/menu
On Page Score78
Statusgood
Load Time2.4 sec
Has DescriptionNo
Issues3
Priority FixAdd meta description
Full ReportA download link to the page’s HTML file in Drive

The report opens in a browser. It shows the score, Core Web Vitals, a checklist, the issues found and an action plan.

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 Loop Over Items hands one address at a time down the bottom row and takes it back after Google Sheets. Set limit to 3 for your first run. Each node then shows what it received and what it sent, which is where a refused login or an empty site map turns up.

For experts. Three stages share the work. A crawl finds the pages, a browser test measures them and a template writes them up.

What each stage does
NodeCall or jobWhat to know
Get MapFirecrawl’s v2/mapReturns links, which Split Out turns into one item each
On Page SEODataForSEO’s on_page/instant_pages, a live callAsks for browser rendering, scripts, resources and spelling, and returns even after a timeout
Page DataA Set node with about 70 fieldsEach field falls back to null, 0 or false, so a failed call still gives a row
Code in JavaScriptBuilds the HTML in a template stringNames the file seo-audit- and Date.now()
Google SheetsAppends a rowFull Report is a Drive download address made from the new file’s id

Six nodes carry on when they fail. A page DataForSEO could not load still gets a report and a row, mostly zeros.

Good to know

DataForSEO bills every page. The report and the sheet can also disagree on what to fix first.

  • Billing: DataForSEO charges for each call, and its documentation says browser rendering, scripts and resources add to the price. One form means a call for every page Firecrawl finds. Firecrawl counts the map against your credits
  • Two top fixes: the report’s Priority Action and the sheet’s Priority Fix test problems in different orders, so they can name different fixes for one page
  • An older vital: the pass mark still tests First Input Delay. Google replaced it with Interaction to Next Paint as a Core Web Vital on 12 March 2024, according to web.dev
  • Zeros: a failed page shows a score of 0, not an error. Check On Page Score before you trust a row
  • Open form: anyone with the form’s address can start an audit on your DataForSEO funds
  • Private links: a Full Report address works only for people who can see the file in your Drive
  • Your data: the addresses go to Firecrawl and DataForSEO, and the reports stay in your Drive
  • Your key: the Firecrawl key sits in a header, so take it out before you share the workflow
  • Credentials: the JSON holds none, and nothing from its author’s Drive or sheet

README and files

README

Site-wide on-page SEO audit with a report for each page

An n8n workflow that audits up to 100 pages of a website from one form. Firecrawl maps the site, DataForSEO loads each
page in a browser and checks it, and a Code node writes an HTML report for every page into Google Drive. Google Sheets
gets one summary row for each page, with its issue count, the fix to start with and a link to the report.

What is inside

  • workflow.json: the workflow as n8n exports it, ten nodes and no sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • The author's Drive folder is gone. Create file from text asks for YOUR_FOLDER_ID.
  • The author's sheet and its tab id are gone. Google Sheets asks for YOUR_SHEET_ID and finds the tab by the name
    Page SEO Audit.
  • The Firecrawl header read Bearer <api_key>. It now reads Bearer <YOUR_FIRECRAWL_KEY>.
  • The DataForSEO, Drive and Sheets credentials are gone, along with the author's account names on them.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A DataForSEO account with funds. Its dashboard shows an API login and an API password, apart from the password you
    sign in with.
  • A Firecrawl API key.
  • A Google account, a Drive folder for the reports and a Google Sheet with the tab below.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Make a Drive folder and copy its ID: the last part of its address, after /folders/.
  3. Make the sheet with a tab named Page SEO Audit and the headers below, then copy its ID: the long part of its address
    between /d/ and /edit.
  4. Add a Google Drive OAuth2 credential, select it in Create file from text and replace YOUR_FOLDER_ID with the
    folder's ID.
  5. Add a Google Sheets OAuth2 credential, select it in Google Sheets and replace YOUR_SHEET_ID with the sheet's ID.
  6. Add an HTTP Basic Auth credential with your DataForSEO API login as the user and the API password as the password,
    and select it in On Page SEO.
  7. In Get Map, 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.
  8. Lower limit in the body of Get Map to 3 for the first run.
  9. Save, open the test address of Submit Form and send a site's address. Press Publish when the rows look right.

The sheet

Row 1 of Page SEO Audit holds these 23 headers, spelled as here:

| Group | Columns |
|---|---|
| The page | Date, URL, On Page Score, Status, Meta Title, Meta Description |
| Content and speed | Readability Score, Load Time, Word Count, Misspelling, Page Size (mb) |
| Checks, each Yes or No | ALT Missing, Broken Links, Broken Resources, Has H1, Has Title, Has Description, Has Canonical, SEO Friendly url, Passes core web vitals |
| The verdict | Issues, Priority Fix, Full Report |

How a run goes

  1. Submit Form shows the Internal Links Check form with one field, Page URL. Type the full address with https. It
    confirms at once.
  2. Get Map asks Firecrawl's v2/map for up to 100 addresses on the site, from its links and its sitemap, without
    subdomains. Split Out turns the links it returns into one item each.
  3. Loop Over Items hands the addresses on one at a time.
  4. On Page SEO sends the address to DataForSEO's on_page/instant_pages with browser rendering, JavaScript, resources
    and a spelling check, and asks for an answer even after a timeout.
  5. Page Data keeps about 70 fields from the answer: the score, the title and description, the headings, word count,
    readability, the page timings, sizes, links and the checks. Each falls back to null, 0 or false when it is missing.
  6. Code in JavaScript builds the report: the score cards, Core Web Vitals, a priority action, performance, a checklist,
    issues, resources, links, meta and social tags, and an action plan. It names the file seo-audit- and a timestamp.
  7. Create file from text saves it in your folder. Wait pauses one second, the amount in the file with the seconds
    that Wait 1.1 uses when no unit is set.
  8. Google Sheets appends the row. Full Report is a Drive download address made from the new file's id. The loop
    then takes the next address.

Code in JavaScript, Create file from text, Wait, On Page SEO, Page Data and Google Sheets are all set to
carry on when they fail. A page DataForSEO could not load still gets a report and a row, mostly zeros.

Change the look

  • How many pages: limit in the body of Get Map. includeSubdomains and sitemap sit beside it.
  • What DataForSEO runs: the body of On Page SEO. Turning off browser rendering lowers the price and loses the timings.
  • The report: the HTML and CSS in Code in JavaScript, including the colors and the sections.
  • The sheet: the mapping in Google Sheets. Status comes from the score (90 and up excellent, 70 good, 50 needs
    improvement, below that poor), and Issues counts eleven checks.

Good to know

  • DataForSEO charges for each call, and its documentation says browser rendering, JavaScript and resources add to the
    price. One form means a call for every page Firecrawl finds. Firecrawl counts the map against your credits. Try a small site first.
  • The report's Priority Action and the sheet's Priority Fix test problems in different orders. The report starts with
    thin content and speed, the sheet with a missing title, so one page can get two different first fixes.
  • The pass mark for Core Web Vitals still tests First Input Delay. Google replaced it with Interaction to Next Paint as a
    Core Web Vital on 12 March 2024, according to web.dev, so read that column as a rough guide.
  • A page that failed shows a score of 0 and empty fields, not an error. Check On Page Score before you trust a row.
  • Anyone with the form's address can start an audit on your DataForSEO funds once the workflow is published.
  • A Full Report link works only for people who can see the file in your Drive.
  • The addresses go to Firecrawl and DataForSEO. The reports stay in your Drive.
  • The Firecrawl key sits in a header, so take it out before you share the workflow.
Files
README.md  6 KB
workflow.json  73 KB

2 files, 79 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