A competitor analysis Excel template you can paste as CSV
Save one header line, open it in Excel or Sheets, keep the numeric columns sortable and fill each from one source.
By ClaudeGPT Si Newsroom, Editorial team
3 min read
If you want a competitor analysis Excel template without downloading a macro-laden workbook, paste a CSV header into a text file, save it, and open it. That gives you a sheet where every numeric column sorts and filters properly, which matters more than colors or charts. This tutorial walks through the header, the column types, and how to fill the rows from data that is comparable.
Step 1: save the header
Create competitors.csv with this content:
site,role,organic_visits_month,ranking_keywords,top10_keywords,top_pages,shared_keywords,gap_keywords,referring_domains,link_rank,content_types,google_ads,social_ads,ai_citation_share,decision_notes
yoursite.com,you,,,,,n/a,n/a,,,,,,,
competitor-1.com,,,,,,,,,,,,,,
competitor-2.com,,,,,,,,,,,,,,
competitor-3.com,,,,,,,,,,,,,,
This is the CSV published with the competitor analysis template on seogeoaeo.ai. Open it in Excel or Google Sheets. Your own domain stays in row two; shared and gap keywords are "n/a" for it because you can't compare a site with itself.
Step 2: know which columns are numbers
The header keeps one value per cell so Excel can treat the numbers as numbers:
| Column | Type | Note |
|---|---|---|
| organic_visits_month | integer | estimate |
| ranking_keywords | integer | all ranking keywords |
| top10_keywords | integer | split out so it sorts on its own |
| shared_keywords | integer | overlap with your site |
| gap_keywords | integer | what they rank for that you don't |
| referring_domains | integer | linking sites |
| link_rank | integer | 0 to 1,000 |
| ai_citation_share | percent | share of AI answers citing the site |
| role, top_pages, content_types, google_ads, social_ads, decision_notes | text |
A cell like "800 (100)" reads well in a slide but breaks a sort. Keeping ranking and top 10 keywords apart fixes that. Format ai_citation_share as a percentage, and write "Not cited" in a text note rather than a zero if a site never appears, so a filter for blanks doesn't hide it.
Step 3: fill each column from one source
Estimates from different providers do not line up, so each column needs one source for every row, including yours. With seogeoaeo.ai, the mapping looks like this:
role,shared_keywords: Competitor Finder, 38 credits, run once on your domain. It lists 30 sites that share the most keywords with you and flags close competitors at 5% overlap.organic_visits_month,ranking_keywords,top10_keywords,referring_domains,link_rank: Domain Overview, 50 credits per domain. Keywords come split by position, so the top 10 count is the sum of the top buckets.top_pages: Competitor Keywords, 35 credits.gap_keywords: Keyword Gap, 85 credits per rival, comparing your URL with theirs.google_ads: Competitor Google Ads, 15 credits.social_ads: Meta Ad Finder and LinkedIn Ad Finder, 5 credits each.ai_citation_share: AI Citation Finder in topic mode, 160 credits, run once. It returns the share of answers that cite each site, which fills every row together.
content_types is the manual one. Open each top page and label it: guide, template, calculator, comparison page, category page or documentation.
Each tool also has a REST endpoint and an MCP tool, so if you would rather script the fill than click through, a run from code costs the same credits as one from the browser, and maxCredits refuses a run above the price you set.
Step 4: sort, filter, decide
With numeric columns in place, three sorts tell you most of what you need:
- Sort by
gap_keywordsdescending to see which rival has the most you lack. - Filter
roleto "both" to isolate rivals that compete in search and in sales. - Sort by
ai_citation_shareto see who AI answers lean on.
Write each conclusion in decision_notes as one line: the action, the row and column that justify it, an owner and the date you will recheck.
Step 5: version it
Save a copy per quarter, for example competitors-2026-q4.csv, and diff the numbers between refreshes. Provider estimates shift when their data updates, so look for changes that hold across two refreshes before acting on them. Drop any column that hasn't fed a decision in two quarters.
seogeoaeo.ai fits the quarterly fill. If you need daily keyword positions between refreshes, use a rank tracker in a suite like Semrush; seogeoaeo.ai doesn't offer one.