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 researches each competitor in your Google Sheet every day. Explorium and Tavily feed an agent recent signals, Apify adds LinkedIn and traffic numbers, and gpt-4.1-mini compares them with your company in a short paragraph.
Daily competitor signals compared with your company is an n8n workflow in the Business 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.
Daily schedule
It starts on a schedule, daily at midnight until you set a time, and works through the Competitor details tab, each row with:
A Competitor analysis tab that gains a row for each rival on every run, ending in a written comparison with your company
What you need before you start.
Spreadsheet
Holds your list of competitors and your own figures, and takes a new row of findings for each competitor.
NeedsA Google account to sign in with, and a sheet with three tabs
Language model
Runs gpt-4.1-mini for the research agent, its parser and the agent that writes the comparison.
NeedsOpenAI API key
Company data
Gives the research agent its business matching and enrichment tools through an MCP server.
NeedsAn Explorium account with credit, and a token for its MCP server
Web search
Searches linkedin.com so the agent can name each company’s LinkedIn page.
NeedsTavily API key, typed into the node’s header
Scraping
Runs two Actors: one reads the LinkedIn page for followers and staff, the other reads the domain’s organic traffic.
NeedsApify API token, typed into both nodes’ headers, and credit for the results
Checked by Mindket on 13 Nov 2026
This n8n workflow checks on your competitors every day and writes a comparison with your own company into Google Sheets. It reads a list of company names and domains from one tab. For each one, an AI agent asks Explorium for the past week’s signals: content, ads, product launches, partnerships, press and changes to the tech stack. Tavily finds the company’s LinkedIn page. Two Apify Actors then fetch the follower and staff counts and a traffic figure, and a second agent sets all of it against your own figures in a paragraph. Fifteen nodes run it. Nothing is sent.
Founders, product marketers and agency strategists who watch a short list of rivals and want a running record in a sheet. Keep the list short, since every company costs several paid calls on each run. Skip it if you want an alert the moment a rival changes something. It only writes rows.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Software and SaaS | Product marketers | List the closest rivals and read the new rows each Monday | A product marketer spots a rival’s new integration in the sheet before the sales team hears of it. |
| Online retail | Brand managers | Fill My company with their own followers and traffic, so each comparison has a baseline | A skincare brand sets its LinkedIn following against three larger rivals. |
| Marketing agencies | Account strategists | Keep one sheet for each client, with the client’s figures in My company | A strategist pastes the latest insight paragraphs into a client’s monthly report. |
| B2B services | Founders of consultancies | Switch the schedule to weekly and track the firms they compete with for bids | A founder sees a rival’s run of press coverage before a large pitch. |
You need some n8n and five accounts: OpenAI, Explorium, Tavily, Apify and Google. Its author puts setup at about 15 minutes, which assumes the accounts and the sheet already exist.
Any n8n that can reach OpenAI, Explorium, Tavily, Apify and Google will run it. Keep it published. A workflow that is not published never fires on its schedule.
Append row in sheet to send each insight onGet it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the sheet first, since three nodes point at it.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key that can use gpt-4.1-mini |
| Explorium | An account with credit, and a token its MCP server accepts |
| Tavily | An account and its API key, for the LinkedIn search |
| Apify | An account and its API token, with credit for two Actors |
| An account that can edit the sheet, for a Google Sheets OAuth2 credential | |
| A sheet | Three tabs: Competitor details, My company and Competitor analysis |
| Tab | Columns |
|---|---|
Competitor details | Company name and Company domain, one competitor in each row |
My company | Your own figures in the first row under headers you choose, such as LinkedIn followers, staff and monthly visits. Only that row is read |
Competitor analysis | Company, Website Traffic Growth, Content Output, Ad Activity, Product Launch Frequency, Partnerships Integrations Added, LinkedIn Followers, Employee Count, Press Mentions PREvents, Technology Stack Changes, Insights |
workflow.json./d/ and /edit.Get row(s) in sheet, Get row(s) in sheet1 and Append row in sheet, select it and replace YOUR_SHEET_ID with the ID.OpenAI Chat Model.Explorium, add a Bearer Auth credential with your Explorium token and select it.tavilySearch, replace <YOUR_TAVILY_KEY> in the Authorization header with your key. The brackets go too, so the header reads Bearer, a space and the key.Linkedin Followers + Employee count and Website visits, replace <YOUR_APIFY_TOKEN> with your Apify token in the same way.Schedule Trigger, put one competitor in Competitor details and press Execute workflow. Press Publish when the new row looks right.The file’s Explorium node is an MCP Client Tool of version 1, which speaks only SSE, at https://mcp.explorium.ai/sse. Explorium’s own sign-in page, read on 2 November 2026, names https://mcp.explorium.ai/mcp over HTTP Streamable, signed in with OAuth. Both addresses asked for sign-in when we called them without a token that day. If your token is refused, swap the node for a current MCP Client Tool set up that way and connect it to AI Agent.
Keep Competitor details to the companies you want watched, one name and domain to a row. Each run takes them one at a time, and every pass adds a row to Competitor analysis with the agent’s findings, three numbers from Apify and a paragraph of insight. Nothing is overwritten. To change your own baseline, edit the first row of My company.
| To change | Where |
|---|---|
| How often it runs | Schedule Trigger, which has no time set in the file and so runs daily at midnight |
| What the research looks for | The system message of AI Agent and the example in Structured Output Parser, seven fields in both |
| How far back it looks | The last line of the same system message, which asks for signals from the past week |
| The comparison | The system message of Insights, which asks for a paragraph of about 200 words |
| Columns saved | The mapping in Append row in sheet |
| Model | OpenAI Chat Model, gpt-4.1-mini for both agents and the parser |
You put one rival in Competitor details and your own figures in My company.
| Tab | Row |
|---|---|
Competitor details | Company name: Northwind Analytics. Company domain: northwind.example |
My company | LinkedIn followers: 4,200. Employees: 35. Monthly visits: 18,000 |
The research agent answers in its parser’s shape, shown here with the content cut:
{
"contentOutput": "…",
"adActivity": "…",
"productLaunches": "…",
"partnershipsIntegrationsAdded": "…",
"pressMentionsPREvents": "…",
"technologyStackChanges": "…",
"linkedin": "https://www.linkedin.com/company/…"
}The LinkedIn address goes to the first Actor, which returns the follower count and the company’s size. The domain goes to the second, which returns a traffic history. Insights reads those numbers, the six findings and your row. The new row in Competitor analysis ends with its paragraph, for instance that Northwind posts more often than you but has fewer followers.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. An agent is a node that picks its own tools, here Explorium and a web search, which hang under it on thin lines. Start with a single competitor. Then open the run under Executions, where each node shows what it received and what it sent, which is where a wrong token or a missing column turns up.
For experts. The research agent gathers words, the two Actors add numbers, and a second agent with no tools writes the comparison.
| Node | Call | What to know |
|---|---|---|
Explorium | MCP Client Tool 1, SSE, Bearer Auth | The prompt has the agent match the business first, then call Explorium’s enrichment tools |
tavilySearch | POST to Tavily’s search | The agent writes the whole JSON body. The prompt asks for three results from linkedin.com |
Linkedin Followers + Employee count | LinkedIn Profile Scraper by anchor on Apify | Reads follower_count and the second item of company_size |
Website visits | Ahrefs Scraper by radeance on Apify, traffic only | Reads organic from the fifth entry of website_traffic_history |
Insights | gpt-4.1-mini, with no parser | Its input ends with your first My company row as JSON |
Both Actors answered when we looked them up on 2 November 2026. Each is called synchronously, and Apify ends such a call after 300 seconds, according to its API reference.
It spends money at four vendors. Two of its columns also hold less than their names say.
gpt-4.1-mini agent runs for each competitor, plus a repair call whenever the parser rejects a reply. Explorium spends credits on its lookups, Tavily counts each search, and both Actors bill per result on Apify. Start smallgpt-4.1-mini on 14 January 2027 and names gpt-6-luna as the replacement. Change the model in OpenAI Chat Model before thenWebsite Traffic Growth gets one organic traffic figure, the fifth entry of the history, not a rate of growth. A young domain may have nothing thereEmployee Count takes the second item of the Actor’s company_size, so check in a first run what that item holdsMy company row goes to OpenAIAn n8n workflow that looks at each competitor in a Google Sheet once a day. An AI agent gathers the past week's signals
through Explorium and finds the company's LinkedIn page with Tavily. Two Apify Actors add follower, staff and traffic
numbers, and a second agent compares all of it with your own company in a paragraph. Every run adds one row for each
competitor to the sheet.
workflow.json: the workflow as n8n exports it, fifteen nodes and no sticky notes. It holds no credential.README.md: these notes.YOUR_SHEET_ID and find theirCompetitor details, My company or Competitor analysis.Bearer <token>. They now read Bearer <YOUR_APIFY_TOKEN> in the two Apify nodes andBearer <YOUR_TAVILY_KEY> in tavilySearch, so you can see which key goes where.Explorium. Its address is unchanged.gpt-4.1-mini.workflow.json./d/ and /edit.Get row(s) in sheet, Get row(s) in sheet1 and Append row in sheet,YOUR_SHEET_ID with the ID.OpenAI Chat Model. The two agents and the parser all use it.Explorium, add a Bearer Auth credential with your Explorium token and select it.tavilySearch, replace <YOUR_TAVILY_KEY> in the Authorization header with your key. The brackets go too, so theLinkedin Followers + Employee count and Website visits, replace <YOUR_APIFY_TOKEN> with your Apify token inSchedule Trigger and pick a day and an hour. The file sets none, so it runs daily at midnight.Competitor details and press Execute workflow. Press Publish when the new row looks right.Explorium is an MCP Client Tool of version 1, which only speaks SSE, pointed at https://mcp.explorium.ai/sse with
Bearer Auth. Explorium's own sign-in page, read on 2 November 2026, names https://mcp.explorium.ai/mcp over HTTP
Streamable, signed in with OAuth. Both addresses asked for sign-in when we called them without a token that day. If your
token does not get through, add a fresh MCP Client Tool node. Set its Endpoint to the /mcp address, its transport to
HTTP Streamable and its authentication to MCP OAuth2, then connect it to AI Agent as a tool and delete the old one.
| Tab | Columns |
|---|---|
| Competitor details | Company name, Company domain, one competitor in each row |
| My company | Your own figures in the first row, under headers you choose, such as LinkedIn followers, staff and monthly visits. Only that row is read |
| Competitor analysis | Company, Website Traffic Growth, Content Output, Ad Activity, Product Launch Frequency, Partnerships Integrations Added, LinkedIn Followers, Employee Count, Press Mentions PREvents, Technology Stack Changes, Insights |
Spell the headers of the first and last tabs as above, since the nodes match them by name.
Schedule Trigger starts Get row(s) in sheet, which reads every row of Competitor details. Loop Over ItemsEdit Fields keeps the name and the domain.AI Agent runs gpt-4.1-mini. Its prompt has it match the business in Explorium, call Explorium's enrichment tools,tavilySearch for the company page. It writes the whole Tavily request body itself.Structured Output Parser holds its reply to seven fields: contentOutput, adActivity, productLaunches,partnershipsIntegrationsAdded, pressMentionsPREvents, technologyStackChanges and linkedin. The prompt asks forLinkedin Followers + Employee count sends the LinkedIn address to Apify's LinkedIn Profile Scraper by anchor. Thefollower_count and the second item of company_size from its answer.Website visits sends the domain to Apify's Ahrefs Scraper by radeance, with only traffic switched on. The workfloworganic from the fifth entry of website_traffic_history.Get row(s) in sheet1 reads My company, and Aggregate gathers its rows into one list.Insights, a second agent on the same model with no tools and no parser, gets the findings, the three numbers andMy company row as JSON. It writes a paragraph of about 200 words.Append row in sheet adds a row to Competitor analysis, then the loop takes the next competitor.Both Actors answered when we looked them up on 2 November 2026. Each is called synchronously, and Apify ends such a call
after 300 seconds, according to its API reference.
Schedule Trigger. The prompt asks for the past week, so a weekly run matches it.AI Agent and the example in Structured Output Parser. ChangeAppend row in sheet.Insights, which sets the length at about 200 words.My company. Use the same kinds of figures the competitors get, so the agent comparesOpenAI Chat Model, shared by both agents and the parser.gpt-4.1-mini agent runs, plus a repair call when the parser rejects a reply. Exploriumgpt-4.1-mini on 14 January 2027 and names gpt-6-luna as the replacement. Pick the new modelOpenAI Chat Model before that date.Website Traffic Growth gets one organic traffic figure, not a rate of growth. A young domain may have no fifth entryEmployee Count takes the second item of the Actor's company_size. Check in a first run what that item holds.My company row goes to OpenAI.README.md 7 KB workflow.json 19 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…
perplexity-ai · Kit
Picks the best option for a decision from text and images, such as which team should handle a request, with a probability for each choice, for developers who b…
numind · Kit
Reads documents as text or images and fills a JSON template with the fields you ask for, or converts the pages to Markdown. A 4B model for teams that process s…
nace-ai · Kit
Scores yes or no, multiple choice and rating questions about a document in one pass, with a probability for every option. An 8B decision model from Nace.AI tha…