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 takes a research question by webhook, has a Google Gemini model write a search query, searches the web with Brave and has a second Gemini call rank the results. It replies with ten links.
Brave web search with an AI-written query and ranked links 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.
Web request
It starts when a GET request reaches the semantic-search webhook with:
A JSON reply with ten ranked links, each with a title, a link and a description, and a note on what they say about the question
What you need before you start.
Web search
Returns web results for the query, each with a title, an address and a short description.
NeedsBrave Search API key, on its prepaid plan
Language model
Writes the search query, ranks the results and repairs a reply that does not fit.
NeedsGoogle Gemini API key
Spare language model
Can replace Gemini in the chains. It is connected to nothing as shipped.
NeedsAnthropic API key, only if you use it
Spare language model
Can replace Gemini in the chains. It is connected to nothing as shipped.
NeedsOpenAI API key, only if you use it
Checked by Mindket on 13 Nov 2026
This n8n workflow answers a research question with a short list of web links. A caller sends the question to a webhook. A Gemini model turns it into a search query, and Brave Search returns web results for that query. A second Gemini call ranks the results against the question and picks ten. The webhook replies with the ten links, each with a title and a description, plus the facts those descriptions give. Twenty nodes do the work, four of them sticky notes.
Builders who want a search step inside a bigger n8n workflow or agent, one that returns ranked links instead of raw results. Skip it if you need the full text of the pages, since it reads only the titles and short descriptions that Brave returns.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Research | Analysts | Get a ranked reading list for a question | An analyst asks about new battery rules in Europe and gets ten links ordered by fit. |
| Marketing | Content teams | Find sources for an article | A writer asks for recent surveys on remote work and picks links from the list. |
| Software | Workflow builders | Add a search step to an agent or a larger workflow | A builder calls the webhook from another workflow and passes the links on. |
| Sales | Account researchers | See what the web says about a company or a topic | A rep asks about a prospect’s latest product launch. |
You need a little n8n: import a file, add a Google Gemini credential, paste a Brave key and call a webhook.
Any n8n that can reach Google’s Gemini API and Brave’s search API will run it. The answer goes back to whoever called the webhook, so it also works as a step that another workflow calls.
Webhook Call there and point it at this workflow’s production addressWebhook with a form, a chat or a schedule, and point the expressions that read the question at the new nodeDownload saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Setup is one model credential and one search key.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Google Gemini | An API key |
| Brave Search API | An account and an API key, on its prepaid plan |
workflow.json.Parser Model and Agent Model. Both are set to models/gemini-3.6-flash, the swap for the file’s gemini-1.5-flash-002, which Google no longer lists.Query, replace <YOUR_BRAVE_API_KEY> in the X-Subscription-Token header with your Brave key. Brave’s free plan is gone, so the key needs its prepaid plan.Webhook and press Listen for test event. In Webhook Call, replace <YOUR_N8N_HOST> with the address of your n8n and execute that node. You can also open the test address in a browser with ?Research%20Question= and your question after it.Respond to Webhook. For regular use, activate the workflow and call /webhook/semantic-search instead of /webhook-test/semantic-search.Send a GET request with the question in a query field called Research Question. The workflow writes one search query from it, runs that search on Brave and ranks what comes back. The reply is JSON text. It holds Highest_RANKEDURL_1 to Highest_RANKEDURL_10, each with a title, a link and a description, and an Information_extracted field.
| To change | Where |
|---|---|
| The question | The Research Question field of the request |
| How the search query is written | The prompt and the example in Semantic Search -Query Maker |
| How results are ranked | The prompts in Semantic Search Result Re-Ranker |
| The shape of the reply | Structured Output Parser2 and the body of Respond to Webhook |
| The models | Agent Model runs both chains and Parser Model runs the repairs |
| The search key | The header in Query |
A caller asks for recent reports on Europe’s energy prices.
The reply holds ten links ordered by how well their titles and descriptions fit the question, with a note on what they say. Brave returns only a title, a link and a short description for each result, so the ranking judges those and not the pages. Open the links before you rely on them.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A webhook is an address that starts the workflow when something calls it, and the workflow sends its answer back to that caller. Search engines match words, so a long question often finds nothing. A model first shortens the question into a query, then reads the results and puts the best ones first.
For experts. Webhook answers through Respond to Webhook, because its response mode is set to that node. Both chains use Agent Model. Semantic Search -Query Maker holds a worked example in its messages and writes reasoning_summary and final_search_query through Structured Output Parser1. An Auto-fixing Output Parser with Parser Model repairs a bad reply. Query-1 Combined is a Code node that turns every web.results entry into one text block, and the Re-Ranker uses Structured Output Parser2 the same way.
| Node | What it does | What to know |
|---|---|---|
Webhook | Takes the question from the Research Question field | A GET request by default, with no authentication |
Date & Time | Gives both prompts today’s date | It is the currentDate field |
Semantic Search -Query Maker | Writes one search query | Its prompt asks for short queries, since long ones return nothing |
Query | Calls Brave’s web search | One request per run, with the key in a header |
Query-1 Combined | Joins each result’s title, address and description | It writes a line saying no results were found when there are none |
Semantic Search Result Re-Ranker | Ranks the results and extracts facts | Its prompts disagree on three links or ten |
Respond to Webhook | Returns the ten links as JSON text | The values go in without escaping |
Webhook Call | Calls the webhook with a sample question | It is connected to nothing |
The search API is no longer free, the models the file named are gone, and the webhook has no password.
gemini-2.0-flash for shutdown on 1 June 2026 with gemini-3.6-flash as the replacement, and gemini-1.5-flash-002 is no longer listed. Agent Model also sets all four of Gemini’s safety filters to block nothingclaude-haiku-4-5-20251001 Active. It also says Claude 4.7 and later models reject temperature and top_p set to non-default values. If you pick one of those, clear both options in Anthropic Chat Model. OpenAI Chat Model sets no model, so it takes the node’s default, gpt-5-mini. OpenAI lists that for shutdown on 11 December 2026 with gpt-5.6-terra as the replacement, so pick a model in it before you use itSemantic Search Result Re-Ranker says to rank the top 3, while its prompt and the output shape ask for 10. The reply carries 10. The prompt also asks for a follow-up query when the results are weak, and the output has no field for one, so it is lostRespond to Webhook writes titles and descriptions into JSON text without escaping them, so a double quote in one of them breaks the JSON$item("0").$node["Name"], an older form that n8n still runs but does not documentAn n8n workflow that answers a research question with a short list of web links. A webhook takes the question, a Google
Gemini model turns it into a search query, Brave Search returns results, and a second Gemini call ranks them and picks ten.
The webhook replies with the ten links and a note on what they say.
workflow.json: the workflow as n8n exports it, 20 nodes, four of them sticky notes. It holds no credential. The notes coverREADME.md: these notes.models/gemini-1.5-flash-002, which Google no longer lists. Both Gemini nodes now usemodels/gemini-3.6-flash.claude-3-5-haiku-20241022, which Anthropic retired on 19 February 2026. It now usesclaude-haiku-4-5-20251001, the model Anthropic names as its replacement.semantic-search, and the webhook's own id is gone.Webhook Call pointed at a test address on its author's n8n host. It now points athttps://<YOUR_N8N_HOST>/webhook-test/semantic-search.<Insert Your API Key Here>. It now holds <YOUR_BRAVE_API_KEY>.workflow.json.Parser Model and Agent Model.Query, replace <YOUR_BRAVE_API_KEY> in the X-Subscription-Token header with your Brave key.Webhook and press Listen for test event. In Webhook Call, replace <YOUR_N8N_HOST> with the address of your n8n and?Research%20Question= and your question after it.Respond to Webhook./webhook/semantic-search instead of /webhook-test/semantic-search.Webhook takes a GET request and reads the question from the query field Research Question. It does not answer yet.Date & Time adds today's date.Semantic Search -Query Maker asks Agent Model for one short search query. Its prompt holds a worked example, and thereasoning_summary and final_search_query, by Structured Output Parser1.Auto-fixing Output Parser sends a bad reply to Parser Model for a repair.Query sends the query to Brave's web search at https://api.search.brave.com/res/v1/web/search with your key in a header.Query-1 Combined, a Code node, writes the title, address and description of every result into one text, or a line sayingSemantic Search Result Re-Ranker gives that text, the question, the query and the date to Agent Model, which ranks theInformation_extracted field byStructured Output Parser2, with a second Auto-fixing Output Parser for repairs.Respond to Webhook replies to the caller with the ten links and the extracted notes, written as JSON text.Webhook Call is a separate node that calls the webhook with a sample question. It is connected to nothing. The spareAnthropic Chat Model and OpenAI Chat Model nodes are connected to nothing either.
Research Question field of the request.Semantic Search -Query Maker.Semantic Search Result Re-Ranker.Structured Output Parser2 and the body of Respond to Webhook.Agent Model runs both chains and Parser Model runs the repairs. To use Claude or an OpenAI model instead, linkgemini-2.0-flash for shutdown on 1 June 2026 with gemini-3.6-flashgemini-1.5-flash-002 is no longer listed. Agent Model also sets all four of Gemini's safetyclaude-haiku-4-5-20251001 Active. It also says Claude 4.7temperature and top_p set to non-default values. If you pick one of those, clear both options inAnthropic Chat Model. OpenAI Chat Model sets no model, so it takes the node's default, gpt-5-mini. OpenAI lists that forgpt-5.6-terra as the replacement, so pick a model in it before you use it.Semantic Search Result Re-Ranker says to rank the top 3, while its promptRespond to Webhook writes titles and descriptions into JSON text without escaping them, so a double quote in one of them$item("0").$node["Name"]. n8n still runs that older form but does not document it.NOTICE.md 688 B README.md 6 KB workflow.json 38 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…