Mindket

Weekly screenshot check of web pages with a Linear report

Newversion 1 · updated

Overview

An n8n workflow in two parts: it takes a base screenshot of each page on a Google Sheet, then runs every Monday. Google Gemini compares a new screenshot with the base, and the changes go into one Linear issue.

Weekly screenshot check of web pages with a Linear report is an n8n workflow in the Developer 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 into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Sheets and Drive: the sheet lists the pages, and Drive keeps the base pictures
  • Slack or Jira: swap Create Report for a node of theirs, as the file’s own note suggests

Platform

Connects 5 apps

How it works

Trigger

Manual run and a weekly schedule

Part A starts when you press Execute workflow. Part B starts every Monday at 6. Both read the pages from:

  • A Google Sheet with the columns service, url and base

Actions

  1. Part A takes a screenshot of each page with an Apify actor and saves it in Google Drive
  2. The Drive file id is written into the base column of the page’s row
  3. Part B takes a new screenshot of each page and downloads the base from Drive
  4. Google Gemini looks at both pictures and lists the changes in text, images, colours, position and layout
  5. Pages with at least one change are collected
  6. One Linear issue lists each changed page with its changes

Result

A Linear issue named Visual Regression Report with the date, listing each changed page and what changed

Integrations

What you need before you start.

Apify

Screenshot service

Runs the screenshot-url actor for each page and returns a link to the picture.

NeedsAn Apify API token, in a Header Auth credential

Google Gemini

Vision language model

Runs models/gemini-3.6-flash to compare the base and the new screenshot and list the changes.

NeedsGoogle Gemini API key, in a Google Gemini credential

Google Sheets

Page list

Holds the pages to check and the Drive file id of each base picture.

NeedsA Google account, in a Google Sheets credential

Google Drive

Picture storage

Keeps the base screenshots and returns them for the weekly comparison.

NeedsA Google account, in a Google Drive credential, and a folder

Linear

Issue tracker

Creates one issue with the week’s changes.

NeedsA Linear account, in a Linear credential, and a team

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
22 steps, starting on a schedule or by hand
AI
1 step calls an AI model: Visual Regression Agent
Sign-ins
Signs in to: Google Sheets, Linear, Google Drive, Apify and Google Gemini
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 13 of its step types

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

About

What it is

This n8n workflow watches web pages for visual changes. Part A takes a base screenshot of each page on a Google Sheet with Apify and saves it in Google Drive. Part B starts every Monday at 6. It takes a new screenshot of each page, and Google Gemini compares the two pictures. Pages that changed go into one Linear issue. Twenty-four nodes do the work, beside ten sticky notes that explain the steps.

Who it suits

Web teams, QA engineers and site owners who want a weekly check that nothing on key pages broke or moved. Skip it for pixel exact testing. Gemini judges by looking, so small shifts and moving content can show up as noise.

Who uses it, and how
IndustryWho uses itHow they use itExample
SoftwareQA engineersCheck key pages each week after releasesAn engineer reads one Linear issue that lists the pages that changed.
AgenciesAccount managersWatch client sites for broken layoutsA manager sees that a banner moved before the client writes in.
E-commerceStore ownersCheck product and checkout pages for missing images or textAn owner learns that a price block lost its text.
MarketingWeb editorsCatch edits that others make on landing pagesAn editor sees that a headline changed on a campaign page.

You need solid n8n for this one: five accounts, a sheet with set columns and two parts to run in order.

Where to use it

Any n8n that can reach Apify, Google and Linear will run it. Publish it so that the Monday run starts by itself.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Sheets and Drive: the sheet lists the pages, and Drive keeps the base pictures
  • Slack or Jira: swap Create Report for a node of theirs, as the file’s own note suggests

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Five accounts are needed.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own, published for the weekly run
Google SheetsA file whose sheet has the columns service, url and base, with one row for each page
Google DriveA folder for the base screenshots
ApifyAn API token, saved in a Header Auth credential named Authorization with the value Bearer and your token
Google GeminiAn API key from Google AI Studio
LinearA Linear account and the team that gets the issue
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add a Google Sheets credential. Select it in Get URLs with Missing Base Images, Update Base Image and Get Webpages List, and pick your file and sheet in each.
  3. Add a Google Drive credential. Select it in Upload to Drive and Base Image, and pick your folder in Upload to Drive.
  4. Add the Apify Header Auth credential and select it in Run Webpage Screenshot and Run Webpage Screenshot1.
  5. Add a Google Gemini credential and select it in Google Gemini Chat Model. The file uses models/gemini-3.6-flash.
  6. Add a Linear credential, select it in Create Report and choose your team there.
  7. Press Execute workflow to run Part A, and check that each row now has a file id in base.
  8. To try Part B at once, run the Schedule Trigger step. Publish the workflow for the Monday run.

How to use it

Press Execute workflow once to make the base screenshots. After that, the Monday run compares each page with its base and files an issue when something changed. To remake the bases, run Part A again.

What to change for a different result
To changeWhere
The pagesThe rows of the sheet
When it runsSchedule Trigger, set to Mondays at 6
What counts as a changeThe system message in Visual Regression Agent
Where the report goesCreate Report, which can be swapped for Slack or Jira
The screenshot size and waitThe body of both screenshot nodes, which should stay the same
The modelmodelName in Google Gemini Chat Model

Example

The sheet lists two pages, a pricing page and a contact page.

Part A saves a base screenshot of each in Drive. If the pricing page later gets a new button label, Gemini reports the old and the new text. The contact page shows no change, so the Linear issue lists only the pricing page.

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. Visual regression testing means comparing a page with an earlier picture of itself. Here Gemini does the comparing, so it notices text, colours and position without rules you write.

For experts. Both pictures go to Gemini as Image (Binary) messages in a Basic LLM Chain, and a structured parser turns the answer into a list of changes.

Where to look closer
NodeWhat it doesWhat to know
Run Webpage ScreenshotHTTP Request to the Apify actor’s run-sync-get-dataset-items endpointApify ends the call after 300 seconds
Visual Regression AgentBasic LLM Chain 1.4 with two Image (Binary) messagesdata_1 is the base and data_2 the new picture. An empty list means no change
Has ChangesFilter on the length of that listPages without changes are dropped
Create ReportLinear node that creates an issueThe description is markdown built from the changes

Good to know

The original named a Gemini model Google no longer lists, and a leftover filter limited it to one row.

  • Model: the original named a Gemini 1.5 model. Google’s models and deprecations pages, read on 12 November 2026, no longer list any 1.5 model. Mindket’s copy uses models/gemini-3.6-flash
  • One row: Get Webpages List kept only row 2 by a leftover filter. Mindket’s copy removes it, so every row is checked
  • Part A: despite its name, Get URLs with Missing Base Images reads every row, so each run saves a new base file for every page and the old files stay in Drive
  • Noise: ads, carousels and dates can differ between two screenshots, so read the first reports with that in mind
  • Your data: the page addresses go to Apify, both pictures of a page go to Google, and the report goes to Linear. The file holds no credential

README and files

README

Weekly screenshot check of web pages with a Linear report

An n8n workflow in two parts. Part A takes a base screenshot of every page on a Google Sheet. Part B runs each Monday, takes a fresh screenshot, lets Google Gemini compare the two and files the differences as one Linear issue.

What is inside

  • workflow.json: the workflow as n8n exports it, thirty-four nodes. Twenty-four do the work and ten are sticky notes that explain the steps. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • The chat model named models/gemini-1.5-pro-latest. Google's models and deprecations pages, read on 12 November 2026, no longer list any 1.5 model, so Mindket's copy uses models/gemini-3.6-flash, which the models page lists as available with image input.
  • Get Webpages List still had a leftover filter that kept only row 2 of the sheet. Mindket's copy removes it, so Part B checks every row.
  • The two screenshot nodes sent the Apify token as a token query parameter. Apify's API docs, read on 12 November 2026, call that less secure than the Authorization header, so Mindket's copy uses a Header Auth credential.
  • The Drive folder, the Google Sheet and the Linear team belonged to the original author. Those fields are empty now, so pick your own.
  • The sticky notes held referral links, a link to an example sheet and an invitation to a chat server. They are replaced by a plain link and a line about the sheet's columns.
  • The file had no settings block, so Mindket's copy adds executionOrder v1, the setting n8n gives a new workflow.
  • Several nodes were linked to credentials in the author's n8n. The links are gone, so select your own.
  • Nothing else. The prompt, the loops and the report text are the file's own.

Before you start

  • An n8n instance. Publish the workflow if you want the Monday run to happen by itself.
  • A Google Sheets file with the columns service, url and base. Put a name in service and a full page address in url, one row for each page. Leave base empty, because Part A fills it.
  • A Google Drive folder for the base screenshots.
  • An Apify account and its API token. The screenshots come from Apify's apify/screenshot-url actor.
  • A Google Gemini API key from Google AI Studio.
  • A Linear account with a team to file the issue in.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add a Google Sheets credential. Select it in Get URLs with Missing Base Images, Update Base Image and Get Webpages List, and pick your file and sheet in each.
  3. Add a Google Drive credential. Select it in Upload to Drive and Base Image, and pick your folder in Upload to Drive.
  4. Add a Header Auth credential for Apify. Name it Authorization and give it the value Bearer <YOUR_APIFY_TOKEN> with your own token. Select it in Run Webpage Screenshot and Run Webpage Screenshot1.
  5. Add a Google Gemini credential with your key and select it in Google Gemini Chat Model. Check that the model is models/gemini-3.6-flash.
  6. Add a Linear credential, select it in Create Report and choose your team there.
  7. Press Execute workflow. This runs Part A. Open the sheet afterwards and check that each row has a file id in base.
  8. To try Part B at once, open Schedule Trigger and run that step. Publish the workflow to get the run every Monday at 6.

How a run goes

  1. Part A starts from the manual trigger. Get URLs with Missing Base Images reads the rows of the sheet.
  2. Loop Over Items sends each page to Run Webpage Screenshot, which runs the Apify actor and waits for its answer. The window is 1280 pixels wide, and Wait pauses two seconds between pages.
  3. When the loop ends, Merge pairs each row with its screenshot. Download Screenshot fetches the picture, Upload to Drive saves it under the encoded page address and Update Base Image writes the Drive file id into base.
  4. Part B starts from Schedule Trigger, which fires on Mondays at 6. Get Webpages List reads the rows, and For Each Webpage... takes them one at a time.
  5. For each page, Base Image downloads the saved screenshot from Drive. Run Webpage Screenshot1 takes a new one, Download New Screenshot fetches it and Combine Screenshots joins the two.
  6. Visual Regression Agent (Basic LLM Chain 1.4) sends both pictures to Google Gemini Chat Model as Image (Binary) messages. Its system message asks for changes in text, images, colours, position and layout. It says to ignore text styling and casing. Structured Output Parser turns the answer into a list of changes, each with a type, a description, a previous state and a current state. Wait1 pauses one second.
  7. After the last page, Combine Row and Result joins each row with its list. Has Changes keeps only the pages with at least one change, and Aggregate gathers them. Create Report files a Linear issue named Visual Regression Report with the date. The issue lists each page and its changes.

Change the result

  • Which pages: the rows of the sheet.
  • When it runs: Schedule Trigger.
  • What counts as a change: the system message in Visual Regression Agent.
  • Where the report goes: Create Report. Swap it for a Slack or Jira node if you do not use Linear.
  • Screenshot size and wait: the body of both screenshot nodes. Keep them the same, so the base and the new picture match.
  • Model: modelName in Google Gemini Chat Model.

Good to know

  • Despite its name, Get URLs with Missing Base Images reads every row. Each run of Part A saves a new base file for every page and rewrites base. The old files stay in Drive.
  • Two screenshots of a live page rarely match exactly. Ads, carousels and dates can show up as changes, so read the first reports with that in mind.
  • Apify's synchronous run endpoint ends a call after 300 seconds (Apify's API docs, read on 12 November 2026).
  • Each page costs one Apify run and one Gemini call in Part B. Apify and Google bill them to your accounts.
  • The page addresses go to Apify. Both pictures of each page go to Google, and the report text goes to Linear.
  • The file holds no credential and no key.
Files
NOTICE.md  664 B
README.md  6 KB
workflow.json  26 KB

3 files, 33 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

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 Developer

See all in Developer

buzz

block · Kit

Self-hostable workspace where people and AI agents share the same rooms, built on a Nostr relay that logs every action as a signed event. For teams that want t…

New37.3k

plannotator

backnotprop · Kit

Opens your AI coding agent's plans, specs and code changes in a browser so you can annotate or comment on them and send the feedback straight back to the agent.

New10.5k

open-code-review

alibaba · Kit

Reviews Git changes with an AI agent that reads files and searches the codebase, then writes comments tied to exact lines. It suits developers who want automat…

New50.7k