Features

Opportunities

Opportunities are the prioritised to-do list of a Serpel project. Each one is a concrete page or keyword where more clicks are likely, found by 8 fixed rules and not by an AI model, and ranked by an impact score. Opportunities cost no credits.

Serpel illustration: an isometric balance scale weighing a blue card against a stack of grey effort blocks

How do SEO opportunities work in Serpel?

An opportunity is a task that Serpel derives from your data, for example a page that is almost on page 1 or a page that ranks well but gets too few clicks. Every opportunity names the keyword or page it concerns, shows its evidence, states the next action and lists the data sources behind it. Serpel evaluates the data of the last 28 days with 8 rules that are the same for every project. The same data therefore produces the same opportunities, and every number can be traced back to a rule.

rules
8
Fixed thresholds, no AI model
of search and analytics data
28 days
Per calculation
between calculations at most
60 min
For each project
opportunities per project at most
200
Ranked by impact
How a calculation works
  1. Collect data

    Serpel loads 28 days of Search Console and analytics data, your tracked keywords, the latest crawl and the latest codebase snapshot.

  2. Run the rules

    Each rule looks for its pattern and returns findings.

  3. Score

    Every finding gets an impact score from its extra clicks, confidence and effort.

  4. Reconcile

    New findings are added, known ones refreshed, and findings that no longer apply become stale.

  5. List

    The best 200 by impact appear under Opportunities.

    Result

Opportunities cost no credits. Serpel calculates them automatically, and reading them is free in the dashboard, the CLI, the REST API and over MCP. The engine needs data to work with. The more sources you connect, the more rules can fire and the higher the confidence of each finding.

Which rules find opportunities?

The rules read Google Search Console data, your tracked keywords and keyword research, the latest crawl, the latest codebase scan and the conversion events of your web analytics. Bing Webmaster data is not used. The table lists every rule with the thresholds it uses. Positions and impressions refer to the 28-day window.

RuleFires whenNeedsEffort
Almost on page 1 (strikingDistance)A query ranks at an average position from 4 to 20 for one of your pages and has at least 100 impressions. The target is position 3.Search data from Google Search Console. Search volume, a code route and conversion data add detail.Medium
Low click-through rate (lowCtr)A query ranks at position 1 to 5 with at least 100 impressions, but its click-through rate is below 60% of what that position typically earns.Google Search Console. A crawl and a codebase scan add the live and the in-code title and description.Small
Missing page (missingPage)A tracked or researched keyword has a search volume of at least 200, no ranking and no Search Console impressions, and no route, page title or description fits it. At most 20 are listed per calculation. The target is position 3 below difficulty 40, position 5 below 70, position 10 from 70 upwards and position 5 when the difficulty is unknown.Keywords from rank tracking or keyword research, plus at least one of Search Console, a crawl or a codebase scan.Large
Competing pages (cannibalization)Two or more of your pages each get more than 20% of the impressions of the same query, and the query has at least 100 impressions. The target is one position better than the best of those pages.Google Search Console.Medium
Visitors who don’t convert (conversionGap)A page has at least 30 sessions and more sessions than the median page, but its conversion rate is below 50% of the project median. At least 3 pages need sessions.Web analytics with conversion events. If Search Console is connected, the page also needs search clicks.Medium
Strong page with low reach (underusedConverter)A page has at least 20 sessions and 2 conversions and converts at more than 2 times the project median, but gets fewer search impressions than the median page. At least 3 pages need search data.Google Search Console and web analytics with conversion events.Large
Technical blocker (technicalBlocker)The latest crawl found one of the issues listed below on a page that is visible: it has search impressions, or a tracked keyword ranks on it.A site audit crawl, plus Search Console or tracked keywords.Small
Competitor ahead (competitorGap)On a tracked keyword, a saved competitor ranks in the top 3 while you rank outside the top 10 or not at all, and the keyword has search volume or Search Console impressions. The target is position 5.Tracked keywords with a stored result and at least one competitor. Search volume, or else Search Console impressions, sizes the estimate.Large

The technical blocker rule watches these crawl issues:

  • Page is set to noindex (noindex)
  • Canonical points to a different URL (canonical_to_other)
  • Canonical target is unreachable or redirects (canonical_target_error)
  • Internal URL returns a 4xx status code (http_4xx)
  • Internal URL returns a server error (5xx) (http_5xx)
  • Internally linked URL blocked by robots.txt (blocked_by_robots)
  • URL can’t be fetched (timeout or connection error) (request_failed)
  • Redirect loop (redirect_loop)

The empty state of Opportunities shows which sources are still missing under How opportunities arise: Connect Search Console, Track keywords, Crawl your website and Scan your codebase. Conversion events come from your web analytics. The codebase scan maps every opportunity to the matching route in your code.

How is the impact score calculated?

The impact score sorts the list. It estimates how much a fix is worth, weighs how sure Serpel is and divides by how much work the fix is.

How the impact score is calculated

Impact score=Additional clicks per month×Conversion factor×Confidence factor÷Effort factor

Additional clicks per month
For ranking rules: monthly impressions or search volume times the click-through rate gained between the current and the target position. The other rules estimate it from sessions, impressions or clicks.
Conversion factor
1 plus the page’s conversion rate divided by the project median, with that ratio capped at 5, so the factor is between 1 and 6. Pages without conversion data get 1.
Confidence factor
High 1, medium 0.7, low 0.4.
Effort factor
Small 1, medium 2, large 4, fixed per rule.

The click-through rates come from a fixed curve for organic results: 27.6% at position 1, 15.8% at position 2 and 11.0% at position 3, falling to 2.4% at position 10 and lower beyond. Serpel scales the 28-day impressions to 30 days. The additional clicks are an estimate, not a measurement, and they are no promise about rankings.

Confidence depends on how many different data sources back a finding and on its impressions. It is High from 3 sources and 500 impressions, Medium from 2 sources or 100 impressions and Low otherwise. Effort is not estimated per page. Each rule has a fixed effort, which the table above shows.

Take a query with 1,000 impressions in 28 days at an average position of 6. Scaled to 30 days that is 1,071 impressions. Moving to position 3 raises the click-through rate from 4.9% to 11.0%, which means about 65 extra clicks per month. With only Search Console behind it, confidence is medium (0.7), and “Almost on page 1” is medium effort (2). The impact score is 22.9.

When does Serpel recalculate opportunities?

Serpel recalculates the opportunities of a project after a crawl, a monitoring run, a search data sync, a web analytics sync, a Bing sync or a codebase scan. A Bing sync is only a trigger, because the rules don’t read Bing data. A calculation runs at most once every 60 minutes per project. If several of these events happen within the hour, Serpel combines them into one calculation when the hour is over. A manual rank check or AI check doesn’t start a calculation on its own, but the next one picks up its results.

The Last seen column shows when the latest calculation confirmed an opportunity. The monitoring and reports guide explains how to keep data fresh with a schedule.

What do the statuses and actions mean?

StatusWhat it meansActions
OpenNew, or reopened. Nobody has reviewed it yet.Accept, Done, Dismiss
AcceptedYou plan to work on it.Done, Dismiss, Reopen
DoneYou have made the change. The next calculation checks whether the condition has gone.Reopen
DismissedYou don’t want to act on it. It stays dismissed even if the condition still applies.Reopen
StaleThe latest calculation no longer finds the condition. You can only dismiss it.Dismiss

These actions only change the status in Serpel, not your website. The list view Active shows open and accepted opportunities, and the other views show one status each. After you mark an opportunity as done, the next calculation either confirms it, which the opportunity page shows as Confirmed by follow-up run, or finds the condition still present. If the condition still applies 28 days after you marked it as done, Serpel reopens the opportunity. A stale opportunity reopens by itself when its condition returns.

Serpel keeps the best 200 findings per calculation by impact score. An opportunity that drops out of that set becomes stale, like one whose condition has gone. If a stale or dismissed opportunity hasn’t come back for 180 days, Serpel deletes it, and a later return shows up as a new opportunity.

How do you work with opportunities?

  1. Open Opportunities.

    It is the second entry in the project sidebar. The number next to it counts your open and accepted opportunities.

  2. Pick a view and sort by impact.

    The views are Active, Open, Accepted, Done, Dismissed, Stale and All. The list is sorted by Impact. Use the search field Search title, keyword or page … or the filters for rule, confidence and effort.

  3. Open an opportunity.

    The page explains Why?, states the Next action, lists the Evidence with the numbers behind it and shows the Affected location, the Data sources and a Timeline.

  4. Set the status.

    Use Accept, Done, Dismiss or Reopen. To handle several at once, select rows in the list and use the bulk actions Accept or Dismiss. Viewers can read opportunities but can’t change their status.

How do you use opportunities from the CLI, API or MCP?

The CLI and the API call opportunities recommendations. The CLI command group serpel recommendations, also available as serpel recs, lists opportunities, shows one with its evidence and changes its status. The REST API offers the same, and over MCP the tool get_seo_recommendations lets an agent read the list, up to 25 entries per call. By default it returns open and accepted opportunities. Pair it with the Claude Code guide to let an agent work through the list.

TaskCLIAPIMCP
List opportunitiesserpel recommendations list --project <id> --status activeGET /projects/{id}/recommendations (recommendations:read)get_seo_recommendations
Show one with evidenceserpel recommendations show <id>GET /recommendations/{id} (recommendations:read)Included in the list
Accept, dismiss, complete or reopenserpel recommendations accept <id>, dismiss, done or reopenPATCH /recommendations/{id} (recommendations:write)Not available
List, read and update opportunities
serpel recommendations list --project <id> --status active
serpel recommendations show <id>
serpel recommendations accept <id>
serpel recommendations done <id>

The PATCH request takes one of the statuses open, accepted, dismissed or done. A stale opportunity accepts only dismissed; the API answers any other status with a conflict error.

Request body of PATCH /recommendations/{id}
{ "status": "done" }

What can go wrong?

What you seeWhyWhat to do
“No opportunities yet”Serpel has no data to evaluate, or the data shows nothing noteworthy. A new calculation runs at most once an hour.Work through How opportunities arise: connect Search Console, track keywords, crawl your website and scan your codebase.
An opportunity vanished from ActiveIt became stale because its condition no longer applies, or someone dismissed it.Open the view Stale or All to find it.
A finished opportunity came back after 28 daysThe condition still applied at the next calculation, so the fix may not be live or not yet visible in the data.Check that the change is published and crawled. Dismiss the opportunity if you disagree with it.
A rule never produces anythingSome rules need specific data: conversion events for Visitors who don’t convert and Strong page with low reach, keywords with search volume for Missing page and a saved competitor for Competitor ahead.Add the missing source. The table of rules above shows what each one needs.
The extra clicks don’t match my Search Console numbersThey are estimates from a click-through curve, scaled to a month, not measurements.Use them to compare opportunities with each other, not as a forecast.

Where to go next

Updated 5 Nov 2026

See also