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 reads a web page through Jina, asks an OpenAI chat model to pick out each listing on it, and adds one Google Sheets row for each. It comes set to a practice bookshop page.
Web page listings pulled into Google Sheets with Jina and AI is an n8n workflow in the Research 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.
Manual start
It starts when you click Test workflow in n8n, and it reads one web page each time:
One Google Sheets row for each listing on the page
What you need before you start.
Page reader
Turns the web page at the address you give it into plain text the model can read.
NeedsA Jina key is optional, held in a Header Auth credential
Language model
Reads the page’s text and returns each listing with its fields.
NeedsOpenAI API key, and a model to choose
Spreadsheet
Receives one row for each listing, matched to the headers in row 1.
NeedsA Google Sheets OAuth2 credential, and a sheet with the five headers
Checked by Mindket on 13 Nov 2026
This n8n workflow turns a web page of listings into rows in Google Sheets. Jina’s Reader fetches the page as text, an OpenAI chat model picks out each listing with its title, price, availability and links, and every listing is added to your sheet as a row. It comes set to a practice bookshop page. Six nodes run it, beside one sticky note.
People who copy prices or listings from a page into a sheet by hand, such as shop owners watching a competitor’s catalogue, researchers, buyers and students. Skip it for pages that need a login, for pages whose rules forbid automated reading, and for figures you cannot check afterwards.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Retail | Shop owners | Pull a competitor’s catalogue page into a sheet | An owner reads the titles and prices from one category page and sorts them by price. |
| Research | Analysts | Collect the listings of one page for a comparison | An analyst gathers a page of listings into a sheet and checks them against the source. |
| Procurement | Buyers | Copy a supplier’s public price list into rows | A buyer pulls a published price list into a sheet and sets it beside a quote. |
| Education | Students | Learn how scraping with AI works on a safe page | A student runs the practice page and reads the rows it makes. |
You need a little n8n and a Google Sheet: import a file, add two credentials, set a sheet ID and write five headers.
Any n8n that can reach Jina, OpenAI and Google will run it. The rows land in the sheet you name.
Jina FetchDownload saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Setup takes two credentials, a sheet and a header row, and Jina’s key is optional.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Google Sheets | A sheet with the headers title, price, availability, product_url and image_url in row 1 of Sheet1 |
| OpenAI | An API key, and a model to choose |
| Jina | A key is optional |
workflow.json.Save to Google Sheets. Replace YOUR_SHEET_ID with your sheet’s ID, the long string in its address between /d/ and /edit.OpenAI Chat Model, then choose a model.Jina Fetch, add a Header Auth credential with your Jina key, or set Authentication to None to run without one.Click Test workflow. A few moments later, one row for each listing on the page is in your sheet. To read another page, replace the address in Jina Fetch and keep https://r.jina.ai/ in front of it. Each run adds rows, so clear the old ones first if you do not want duplicates.
| To change | Where |
|---|---|
| The page | The URL in Jina Fetch |
| What is picked out | The system prompt and the schema in Information Extractor, and your sheet’s headers |
| The model | OpenAI Chat Model |
| The sheet and its tab | Save to Google Sheets |
| How it starts | Swap the manual trigger for a Schedule Trigger |
A shop owner points the workflow at a competitor’s category page of books and clicks Test workflow. Jina returns the page as text, and the chat model finds each book with its title, price, availability, link and picture link.
One row appears in her sheet for each book. She sorts the rows by price and checks a few against the page, because the model reads the text and can slip.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Jina’s Reader turns a web page into plain text, the chat model reads that text the way you would, and n8n writes the rows. Start with the practice page the file comes set to.
For experts. An Information Extractor node with a manual JSON schema sits between the HTTP Request node and a Split Out node. Its result is one object with a results list.
| Node | What it does | What to know |
|---|---|---|
Jina Fetch | A GET to https://r.jina.ai/ followed by the page address | The text lands in data, and the node expects a Header Auth credential for Jina’s key |
Information Extractor | Pulls a list of books out of the text with a system prompt and a JSON schema | Every property is optional, so the model may leave a value out |
Split Out | Turns output.results into one item for each book | An empty list gives no rows |
Save to Google Sheets | Appends each item as a row | Fields go to the headers with the same name, and a field with no header becomes a new column on the right |
Every run appends rows, so a second run on the same page repeats the first run’s rows.
type and properties, the sheet’s column list named fields the extractor does not return, and Jina Fetch ignored SSL issues. Mindket’s copy fixes all threegpt-5-mini in n8n’s current source, read on 12 November 2026. OpenAI’s deprecations page gives 11 December 2026 for it and names gpt-5.6-terra as the replacementbooks.toscrape.com calls itself a fictional bookstore made to be scraped, with prices that have no real meaning. Check a site’s rules before you point the workflow at another oneAn n8n workflow that reads one web page through Jina's Reader, asks an OpenAI chat model to pick out every listing on it
and adds one row for each listing to a Google Sheet. The file comes set to a category page of a practice bookshop.
workflow.json: the workflow as n8n exports it, seven nodes: six that do the work and one sticky note. It holds noREADME.md: these notes.Jina Fetch. Select your own.Save to Google Sheets pointed at the author's own sheet and its Sheet2 tab. It now has YOUR_SHEET_ID and the tabSheet1.Information Extractor held only the results list, with no outer type and properties, so it wasSave to Google Sheets named name, price, availability, image and link, while thetitle, price, availability, product_url and image_url. It now names the extractor's ownJina Fetch had its option to ignore SSL issues turned on. It is off now, so the request checks the server'stitle, price, availability, product_url andimage_url. The tab is called Sheet1 unless you renamed it.workflow.json.Save to Google Sheets. Replace YOUR_SHEET_ID with your/d/ and /edit. Change the tab name if yours is not Sheet1.OpenAI Chat Model. The node names no model, so choose one.Jina Fetch, either add a Header Auth credential with your Jina key, or set Authentication to None to run withoutTo read another page, replace the address in the URL of Jina Fetch. Keep https://r.jina.ai/ in front of it.
When clicking "Test workflow" starts it by hand.Jina Fetch asks Jina's Reader for the page. It comes back as plain text, which n8n keeps in data.Information Extractor sends that text to the chat model with a system prompt and the schema. It returns output,results list. Each book in it has a title, price, availability, product link and image link.Split Out turns output.results into one item for each book.Save to Google Sheets appends each item as a row. Fields go to the headers with the same name.Jina Fetch.Information Extractor, and the headers in your sheet toOpenAI Chat Model.Save to Google Sheets.gpt-5-mini in n8n's currentgpt-5-mini and namesgpt-5.6-terra as its replacement.books.toscrape.com, calls itself a fictional bookstore made to be scraped, and its pricesNOTICE.md 694 B README.md 5 KB workflow.json 6 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…
AbdomenAtlas · Kit
Detects and outlines tumors in 9 organs on CT scans, trained with the R-Super method that learns from radiology reports. A research model for medical imaging g…
dBenf · Kit
Answers typed questions about satellite image patches from all 12 Sentinel-2 bands, returning a probability for each option without writing text. A Qwen3.5-0.8…
zimmerk4 · Kit
Plays the full game Getting Over It from the bottom to the end with a small trained policy network that learned inside a JAX physics simulator. For reinforceme…