Library·SOP·SEO
Use Semrush to find topics competitors rank for, check your site and Google results, and decide whether a new page or existing-page review is warranted.
Last reviewed: · Editorial review
Clarity, structure and references reviewed in this version. This is not a test in a live account.
Use Semrush to find topics competitors rank for, check your site and Google results, and decide whether a new page or existing-page review is warranted.
This SOP covers:
This does not cover:
Set the real business and market scope before comparing ranking gaps. The report compares selected sites in one search market; it cannot decide whether a topic fits your organization.
Make your own copy of the Semrush Content Gap Opportunities workbook. Use Start Here for your offer, audience and market. Export Log tracks each report part, even when incomplete; Keyword Candidates holds distinct phrases and Page Groups holds page actions. The fictional example explains the labels.
Use rows 5–500 first. If Candidate, Export Log or Page Groups needs more, add only enough rows to fit: select that many bottom rows and choose Insert rows below; for 100+ rows, use Add more rows at the bottom. Google row-insertion steps.
If new rows lack dropdowns, copy row-500 cells, select matching added cells, then choose Edit → Paste special → Data validation only. Candidate: C/F/M/P; Export Log: Q; Page Groups: J/N. Google paste-special steps.
If new rows lack the blank-row appearance, copy the matching blank cells from row 500, select the added cells and choose Paste special → Format only.
Confirm the last added row has its expected dropdowns and format, then continue until every report row, distinct phrase and page group fits. Do not stop at row 500 or change source export tabs.
In Start Here, enter the target domain, offer, audience and task, useful outcome, country/database, device, language limits, relevant URLs, owner and date. Agree the topic area to compare and ask the owner about unknown facts; do not call a broad-site review complete when only one area was examined.
In Semrush, open Organic Rankings for your domain, select the target country database, and open its Competitors report. Use the Common Keywords and Competition Level columns to find candidate domains with overlapping organic searches. These measures show search overlap; they do not prove that the business or audience is the same.
Inspect candidate sites’ relevant pages. Keep domains that serve similar searchers for this task; exclude unrelated broad publishers, directories or marketplaces. Enter up to four credible competitors in Start Here with a reason for each; Semrush compares five domains total including your site. Use fewer when fewer qualify.
Use the same site scope and market for every domain. Export the full relevant Missing, Untapped and Weak tables so the shortlist comes from the agreed scope instead of a few visible rows.
Set up Keyword Gap for a like-for-like organic comparison. Use the lettered checks below before you select Compare.
Put your website in the first field labeled You. Add no more than four competitors recorded in Start Here; Semrush allows five compared domains total, including your site (comparison guidance).
Use root domains unless your plan includes exact URL, subdomain or subfolder comparisons. Pro does not include those narrower scopes in Semrush’s current documentation.
Set every domain to Organic keywords. Do not mix paid or PLA rankings into this content opportunity plan.
Select the target country database and Desktop or Mobile device recorded in Start Here. Keep the same settings for the entire comparison.
Select Compare. Record the report date or range and total results. Organic keywords are rankings in Google’s top 100 for the selected database; an absent row here does not mean the site has no page or never ranks in another location.
Open Missing, Untapped and Weak separately. Add a topic or intent filter only when it matches the agreed scope, and record it in Export Log. Keep all in-scope groups; do not use a volume or KD cutoff.
For each relevant gap view, export CSV or Excel at its full result count. Use the all-results choice when available. Never use PDF or export only visible rows; the lettered checks below save, import and count each file.
Save each CSV or Excel file unchanged with the gap label, competitor set, country, device and date in its filename.
In the copied workbook choose File → Import → Upload → Insert new sheet(s). Keep one export per new tab and name it with the gap label and date.
In Export Log, reuse one Run ID for the original view and all its parts. In Notes / scope decisions, record the original whole-scope row count, total parts, each part’s Semrush rows shown, and overall Complete/Incomplete plus any gap. If a cap hides the original total, write “unknown at cap” and keep Incomplete.
For each part, put its exact filter and Part x/y in Gap group/filter; enter imported rows without the header in Data rows (no header). Leave Screen complete? at No until every row is screened.
Check the original view total, each export part’s count, and its imported data rows. Use the lettered checks to identify caps, create verified complementary parts, and disclose any scope that cannot be fully reconciled.
For one unsplit view, compare the original result total with imported data rows (excluding the header). For a split view, compare each part’s displayed total with its imported rows; reconcile the combined part totals to the original view in the final check.
Check the current limit for your account. Semrush currently documents up to 10,000 Keyword Gap results per Pro SEO report; other tiers differ.
If a view or a later part reaches a cap, use the following substeps to split it with one verified Include/Exclude keyword pair. If the live controls or counts cannot establish full coverage, record Incomplete and ask the owner for a supportable scope; do not drop rows.
Keep the original view, compared domains, Organic type, country, device, date and all agreed base filters fixed. Choose one marker phrase for this parent scope or capped part.
In Keyword Gap, use Include keywords with a marker phrase to export one part. Clear it, use Exclude keywords with the same phrase and match mode, and export the complement. Keep other filters unchanged. Confirm the live controls, lists and counts prove no gap or overlap; otherwise mark Incomplete.
Compare the two imported keyword lists: no phrase should appear in both. Confirm their result counts add to this parent total. If a child is still capped, split only that child with a new marker and keep its parent filters; number the final leaf exports Part x/y under the same Run ID.
If the live screen lacks the same-match Include/Exclude behavior, a phrase appears in both parts, or counts leave a gap, set the original scope to Incomplete in Export Log Notes / scope decisions and name the owner follow-up. Do not treat arbitrary topic or intent filters as exhaustive.
Gap labels explain how selected domains rank relative to one another. They are not instructions to write a new article. Screen all rows in each exported table and keep a trace from every candidate to its source.
Copy the intersection label shown in Keyword Gap. These labels describe only the selected domains, database, device, date and top-100 report data; use the fictional example to compare them.
Missing: every selected competitor ranks and your site does not.
Untapped: your site does not rank and at least one selected competitor does. If all selected competitors rank, the phrase also meets Missing; the two labels can overlap.
Weak: your site ranks below every selected competitor. A smaller position number is higher; position 54 is below position 14.
Screen every exported data row. Create one Keyword Candidates row for each exact phrase on first occurrence, including phrases you may Reject or Park. Keep source exports unchanged, add every occurrence to I, and use the actions below. Volume or KD alone is not a reason to discard.
For a phrase that could serve the stated audience, offer and task, add one Keyword Candidates row on its first occurrence and keep it for site and search checks. Add later source locations to that row’s column I.
Create a Candidate row for every distinct phrase, even when it will not continue. For an out-of-scope phrase, choose Reject in P and explain why in Q. For an uncertain phrase, choose Park in P, explain the uncertainty in Q, and name the needed owner/check in R. Add repeat source rows to I.
Give every distinct phrase screened a stable ID such as C001, C002 and continue, including phrases set to Reject or Park. Use one ID for an exact phrase across every report export.
For every kept or parked phrase, record its displayed gap label(s), ranking evidence, target URL/rank if shown, intent and available volume/KD. For every Candidate row, including Reject, record every source filename, tab and row. Keep imported exports unchanged; use the lettered checks to map fields.
In competitor evidence, enter each ranking domain and its position, and its landing URL if shown. In Semrush intent, copy all labels shown: a keyword may have more than one. For example, keep Commercial, Informational together. If none is shown, enter Not available. Record the available volume and KD.
In Keyword Candidates I, Source export, imported tab and row(s), list the saved filename, imported tab and exact row for every occurrence, including Reject/Park phrases and repeats.
If one phrase appears in both Missing and Untapped, choose Missing + Untapped in Candidate C, keep one ID, and list both source rows in I. This cross-view repeat is expected; a repeat between parts of one view is a split overlap and keeps that whole scope Incomplete.
Across exports, keep one Keyword Candidates row per exact phrase and list every source location in I. Count later occurrences in that part’s Duplicate rows; Missing/Untapped repeats are expected, but duplicate phrases between parts with one Run ID make that whole view Incomplete. Never add repeated metrics together.
For every Export Log part, reconcile the full row count: Data rows (no header) = Rows screened = Relevant candidates + Duplicate rows + Rejected / parked rows. Relevant candidates are first-seen in-scope phrases; Rejected / parked rows are first-seen out-of-scope or uncertain phrases; each later occurrence is a Duplicate row.
In Export Log, enter imported raw data rows in L, screened raw rows in M, first-seen in-scope phrases in N, later occurrences in O, and first-seen Reject/Park phrases in P. Count each raw row in exactly one of N, O or P.
Set Screen complete? in Q to Yes only when L = M = N + O + P for this part. Record any mismatch or missing disposition in Notes / scope decisions and leave it No.
Use search volume and Keyword Difficulty only as same-market estimates of relative demand and ranking challenge. They are not actual visits, leads, sales, guarantees or universal pass/fail cutoffs. Open Keyword Overview for a selected lead only when a metric needs clarification.
Use current site evidence and live Google results to decide whether a phrase needs a new page. Semrush only shows which domains rank for the selected query set; it cannot confirm whether your site already has a useful page.
Check the content inventory, sitemap, site search or owner for a page serving each kept phrase’s task. In Keyword Candidates J, Existing site URL / coverage found, enter the matching URL or the exact source/check and note when no page matched. Semrush rank absence alone does not mean no current page exists.
Hover over Keyword Gap positions to reveal ranking URLs when available. In Keyword Candidates D, Competitor evidence, record the competitor domain, position and landing URL; in E, record your position and ranking URL. Open relevant pages to understand their task and type; do not copy them.
Check Google for each provisional group’s lead phrase, then record and compare its task and organic result types using the lettered actions below.
Search each provisional group’s lead phrase in Google using the location and language limits recorded in Start Here.
In Keyword Candidates K, Visitor task (your words), describe what the searcher wants to do. In L, Google result-page types + checked date, record the main organic page types and the date you checked.
Search a supporting phrase if its meaning or result mix may differ. Split the group if its task or result-page type differs.
After site and Google checks, choose the final outcome in Keyword Candidates P and explain it in Q. For Park, name the needed check and owner in R. Enter O, Page Group ID, after the phrase matches a task and result-type group.
Choose New page candidate only when no current page serves the task, it merits a distinct page type, and the organization can add a useful answer from its real expertise, products or service. Describe the distinct page in Page Groups I.
Choose Existing-page review when a current URL already serves or targets the same visitor task. Record that URL in Candidate J and carry it to Page Groups G; in I, name the review or update action.
Choose Supporting when the phrase belongs to another candidate’s same-task page group.
Choose Park when an owner fact or search check is missing. Record the current reason in Q, Why this decision, and name the needed check and owner in R, Next check / owner question.
Choose Reject when the task does not fit the audience, offer or agreed topic scope, and record why.
Turn screened phrases into an ordered set of page tasks. Recommend a distinct new page or send an existing page for review, with a clear reason for each action.
For phrases still under consideration, create one Page Groups row per distinct visitor task and matching Google result type. Complete the named fields with the lettered actions below; do not group by similar wording or gap label alone.
In Page Groups, put the group ID in B, lead Candidate ID in C, supporting IDs in D, visitor task in E and observed result-page type in F. Repeat the group ID in each member’s Keyword Candidates O.
Put the existing URL checked in G, current-page coverage and gap in H, and recommended page or action in I. For New page candidate, describe the distinct page; for Existing-page review, name the next review/update for the URL in G. Do not propose a duplicate new page when that URL already serves the task.
Compare each group’s business fit, audience value, useful contribution, intent evidence, relative demand/challenge and readiness. Use the existing Page Groups fields to show the order and why one action comes before the next; do not invent a score or fixed cutoff.
In Page Groups, enter the order in A, Business fit / priority in J, Useful contribution in K, and Relative demand / challenge evidence in L. Use evidence from the same market; do not treat estimates as results.
Explain why the group ranks before the next plausible group in M, Why ranked here vs next group. Choose its outcome in N, Decision, and record the next action and owner in O.
Before handoff, complete the count, screening and page-group checks below.
In Notes / scope decisions, label Original whole-scope result rows, Total number of parts, this part’s Semrush rows shown, and overall Complete/Incomplete plus gap. Check each Part x/y once, each shown count against Data rows (no header), disjoint part lists, and the sum against the original total.
Fictional example: original view = 12,000. With base filters fixed and one broad/text starter marker, Include is 9,000 (Part 1/2) and Exclude is 3,000 (Part 2/2), under one Run ID. Mark complete only if the live controls make the lists disjoint and imported counts sum to 12,000; otherwise record the gap and owner.
Use separate Run IDs for Missing and Untapped. A repeated phrase across them is legitimate: keep both sources on one candidate and count the later row as Duplicate. A repeat between parts sharing one Run ID is within-view overlap; keep both sources, count it, and mark the original scope Incomplete.
Confirm every part is screened: Rows screened equals Data rows (no header), and Relevant candidates + Duplicate rows + Rejected / parked rows equals Data rows. Set Screen complete? to Yes only then. For each new-page group, confirm a current-site check, dated Google observation, useful contribution and order reason. Disclose each incomplete original scope before handoff.
Send the selected group and its evidence to the site owner or writer. This research guide does not edit pages; the owner decides whether to create or change content.
For New page candidate groups, use the linked writer-brief procedure. Carry over the task, lead/supporting phrases, market, source exports, current-site check, Google result evidence, useful contribution and owner questions.
For Existing-page review groups, send the current URL and matching keyword evidence to the linked page-review procedure. Do not make a new page just because another domain ranks.
If a group needs a broader business-fit, intent and keyword-priority comparison before a writer brief, use the linked keyword-planning procedure with the gap phrase as input.