TL;DR. Score every topic across 6 dimensions before briefing: GSC momentum, SERP volatility, Reddit pain signal, effort cost, uniqueness, and business fit. Each on a 1–10 scale; weighted formula gives one number per topic. Publish what scores highest. Most failures come from skipping the scorecard, not from the formula itself.
The Scorecard System: 6 Criteria, Weighted Formula, Single Output Score
Bottom line: Six dimensions, one weighted formula, one number per topic. Score everything before briefing. Publish what scores highest.
Implementation steps:
- Gather inputs (GSC clicks, SERP volatility readings, Reddit threads, internal effort estimates)
- Score each topic across 6 criteria on a 1–10 scale
- Multiply each score by its weight, sum all six
- Assign a priority band based on the total
- Rescore on a weekly/monthly/quarterly cadence
The 6 Scoring Dimensions:
- GSC Momentum, is search interest for this topic growing, stable, or dying?
- Business Fit, how directly does this topic connect to revenue?
- SERP Volatility, are rankings in motion (opportunity) or locked down (risk)?
- Effort (Inverted), how much production time does this require? Lower effort = higher score.
- Uniqueness, can we say something nobody else is saying?
- Community Urgency, are real people actively asking about this, frustrated, and unsatisfied?
Recommended Starting Weights:
| Criterion | Weight |
|---|---|
| GSC Momentum | 25% |
| Business Fit | 20% |
| SERP Volatility | 15% |
| Effort (Inverted) | 15% |
| Community Urgency | 15% |
| Uniqueness | 10% |
Formula:
Weighted Score = Σ (Score × Weight) for each topic candidate.
Score each criterion on a 1–10 scale. Multiply by weight. Sum all six weighted values.
Priority Bands:
| Score Range | Action |
|---|---|
| 8.0–10.0 | Publish Next |
| 6.0–7.9 | Queue |
| 4.0–5.9 | Backlog |
| Below 4.0 | Skip |
Weights must sum to 100%. Recalibrate quarterly based on which scored topics actually drove results and how your team capacity has shifted.
How to Score Each Criterion (1–10 Scale with Anchors)
GSC Momentum Score
- Pull clicks for the target query cluster: last 28 days vs. prior 28 days.
- Calculate % change:
(Current Clicks − Prior Clicks) / Prior Clicks × 100. - Check for opportunity threshold queries: 1,000+ impressions, CTR below 3%, position 3–8. These are the terms where you are visible but not capturing clicks.
- Apply scoring anchors:
| Score | Condition |
|---|---|
| 9–10 | Clicks growing >30% MoM |
| 7–8 | Clicks growing 10–30% MoM |
| 5–6 | Stable (±10%) |
| 3–4 | Declining 5–15% |
| 1–2 | Declining >15% |
- Add +1 if GSC's Query Groups feature labels the cluster "Trending Up."
- Critical constraint: Do not use impression data from May 2025 to September 2025. A logging error affected 87.7% of sites during this window.
- Use clicks as primary signal. CTR as secondary (post-September 2025 only).
SERP Volatility Score
- Identify the primary target keyword(s) for the topic.
- Pull category-level volatility from Semrush Sensor or DataForSEO. Both use a native 0–10 scale that maps directly to your scorecard.
- Manually check: how many of the top 10 URLs changed in the past 30 days? Compare current results against your rank tracker history, stored SERP screenshots, or internal snapshots.
- Note SERP feature changes: Did an AI Overview appear or disappear? Did the Featured Snippet rotate to a different domain?
- Add +1 if features changed significantly on top of rank movement.
- Make the distinction:
- High volatility + weak incumbents (thin content, outdated posts, low DR sites in top 5) = opportunity.
- High volatility + strong incumbents (Moz, HubSpot, G2 cycling through top positions) = risk. Google is shuffling heavyweights, not opening a lane for you.
Community Urgency Score (Reddit Pain Signals)
- Identify 2–3 relevant subreddits for your topic.
- Search topic-related terms. Count threads posted in the last 90 days.
- Evaluate each cluster of threads across four dimensions:
- Frequency, threads per month
- Severity, upvote count, comment depth
- Recency, are threads from this month or 6 months ago?
- Failed solutions language, phrases like "I've tried everything," "nothing works," "still looking for"
- Apply scoring anchors:
| Score | Condition |
|---|---|
| 9–10 | 9+ threads/month, 100+ upvotes average, unresolved pain |
| 7–8 | 5–8 threads/month, moderate engagement, some solutions offered but incomplete |
| 5–6 | Occasional mentions, low engagement |
| 3–4 | Sparse threads, mostly resolved |
| 1–2 | No signal |
- Attach a minimum of 3 direct quotes as evidence per scored pain point. These go in your Notes/Evidence column. They also become source material for the content brief.
- Automated option: Tools like painpoint.space process approximately 2,800 posts in under 2 minutes at roughly $0.83 per analysis. The tool extracts ranked pain points with supporting thread evidence.
Business Fit Score
| Score | Condition |
|---|---|
| 9–10 | Directly tied to core revenue product, buyer-intent keywords |
| 7–8 | Strong connection to paid offering, comparison or alternative queries |
| 5–6 | Adjacent to business, informational intent with a conversion path |
| 3–4 | Loosely related, brand awareness only |
| 1–2 | Tangential awareness play with no commercial connection |
One sentence gut check: if you published this piece and it ranked #1 tomorrow, would it generate pipeline within 30 days? If yes, it's a 7+.
Effort Score (Inverted)
| Score | Condition |
|---|---|
| 9–10 | Producible in <4 hours, existing assets and expertise on hand |
| 7–8 | Half-day production, minor research or asset creation |
| 5–6 | Moderate production (1–2 days), some external research needed |
| 3–4 | Multi-day investment, requires SME interviews or custom design |
| 1–2 | Major investment (1+ weeks), original research, data collection, multiple="true" stakeholders |
This score is inverted. Easy-to-produce content scores high. The scorecard rewards velocity when signals are strong.
Uniqueness Score
| Score | Condition |
|---|---|
| 9–10 | No competitor covers this angle; proprietary data or methodology available |
| 7–8 | One or two competitors have adjacent content, but clear differentiation possible |
| 5–6 | Some competition, differentiation requires effort but is achievable |
| 3–4 | Competitive, need a strong hook to stand out |
| 1–2 | Saturated; dozens of near-identical pieces exist |
If you have proprietary data (internal benchmarks, first-party tool output, original case studies), that's an automatic 8+. We score our own Signal Engine keyword data as a uniqueness asset for exactly this reason.
Filled Example: Two Topics Scored Side by Side
Topic A: "How to audit AI Overview visibility for your brand"
| Criterion | Weight | Score | Weighted |
|---|---|---|---|
| GSC Momentum | 0.25 | 8 | 2.00 |
| Business Fit | 0.20 | 7 | 1.40 |
| SERP Volatility | 0.15 | 9 | 1.35 |
| Effort (Inverted) | 0.15 | 6 | 0.90 |
| Uniqueness | 0.10 | 8 | 0.80 |
| Community Urgency | 0.15 | 9 | 1.35 |
| Total | | | 7.80 |
Rationale: Clicks on related queries growing ~25% MoM. SERP top results changed 4 times in 30 days, DataForSEO volatility index 7+. Reddit shows 15+ threads/month across r/SEO and r/bigseo with impact scores around 8.5. Team has the tooling but needs to run original tests. Few comprehensive guides exist; we have a proprietary prompt method.
Community Urgency evidence (3 required="true" quotes from Notes/Evidence column):
- r/bigseo user: "We lost 40% of our branded clicks overnight once the AI Overview started pulling our competitor's answer. Still haven't figured out how to get visibility back."
- r/SEO user: "I've tried adding FAQ schema, rewriting meta descriptions, even changing H2 structure. Nothing moves the needle on AI Overview placement."
- r/bigseo user: "Our client is asking us to audit their AI Overview exposure and we literally have no standardized process. Every agency seems to be winging it."
These quotes (along with thread permalinks) go into Column X of the worksheet. They also feed directly into the content brief as problem-statement source material.
Band: 7.80 → Publish Next.
Topic B: "History of Google algorithm updates"
| Criterion | Weight | Score | Weighted |
|---|---|---|---|
| GSC Momentum | 0.25 | 3 | 0.75 |
| Business Fit | 0.20 | 4 | 0.80 |
| SERP Volatility | 0.15 | 2 | 0.30 |
| Effort (Inverted) | 0.15 | 7 | 1.05 |
| Uniqueness | 0.10 | 2 | 0.20 |
| Community Urgency | 0.15 | 2 | 0.30 |
| Total | | | 3.40 |
Rationale: Clicks declining. The SERP hasn't moved in years; Moz, Search Engine Journal, and Search Engine Land are entrenched. Compiling the article is fast, but it adds zero differentiation. No active Reddit discussion. Informational intent only, no conversion path.
Band: 3.40 → Skip.
The 4.4-point gap between these topics makes the decision obvious. Without the scorecard, teams frequently default to Topic B because it feels like a good SEO piece. The math says otherwise.
One-Page Worksheet Specification (Copyable Template)
Build this in Google Sheets (primary) or Excel XLSX (secondary).
Tab 1: Scoring Sheet
Row structure for each topic:
| Column | Contents |
|---|---|
| A | Topic Name |
| B | Date Scored |
| C | Scorer (initials) |
| D | GSC Momentum Weight (pre-filled: 0.25, editable) |
| E | GSC Momentum Score (1–10, user input) |
| F | GSC Momentum Weighted (auto: =D×E) |
| G | Business Fit Weight (pre-filled: 0.20) |
| H | Business Fit Score |
| I | Business Fit Weighted |
| J | SERP Volatility Weight (pre-filled: 0.15) |
| K | SERP Volatility Score |
| L | SERP Volatility Weighted |
| M | Effort Weight (pre-filled: 0.15) |
| N | Effort Score |
| O | Effort Weighted |
| P | Uniqueness Weight (pre-filled: 0.10) |
| Q | Uniqueness Score |
| R | Uniqueness Weighted |
| S | Community Urgency Weight (pre-filled: 0.15) |
| T | Community Urgency Score |
| U | Community Urgency Weighted |
| V | Total Score (auto: =F+I+L+O+R+U) |
| W | Priority Band (auto: IF V>=8,"Publish Next", IF V>=6,"Queue", IF V>=4,"Backlog","Skip")) |
| X | Notes/Evidence (paste GSC data, Reddit thread permalinks, volatility readings). Store Reddit URLs directly in the sheet for team reference. |
Tab 2: Scoring Anchor Reference Table
Include the full 1–10 anchor definitions for all six criteria (reproduced from the scoring section above), plus a CTR benchmarks table:
| Position | Desktop CTR | Mobile CTR |
|---|---|---|
| 1 | 19–25% | 17–22% |
| 2–10 | Fill with your own benchmark source (e.g., Advanced Web Ranking, Sistrix, or your GSC actuals) |
Use CTR benchmarks to validate whether a query's CTR is underperforming its position (a signal for title tag or snippet optimization, not a topic pivot).
Operating Cadence: When to Run the Scorecard
Weekly (15 minutes)
- Compare last 7 days vs. prior 7 days in GSC. Use clicks only.
- Flag any metric dropping >20%.
- Rescore the top 3 pipeline candidates (topics already scored 6+ that haven't been briefed yet).
Monthly (45–60 minutes)
- Full scorecard pass on all backlog topics.
- CTR repair check on your top 20 queries by impressions. If CTR underperforms the position benchmarks in Tab 2, flag the query for title/description testing.
- Update Reddit pain signals. Run fresh searches in your tracked subreddits. Update Community Urgency scores with new thread counts and quotes.
Quarterly (2 hours)
- Recalibrate weights. Look at which scored topics actually drove traffic, engagement, and conversions post-publish. If Community Urgency scores were the best predictor, increase its weight. If SERP Volatility led you into unstable rankings, decrease it.
- Adjust for team capacity changes. If you lost a writer, increase the Effort weight so the scorecard naturally deprioritizes heavy-lift topics.
- Run YoY click comparisons (not impressions, per the GSC logging constraint above).
- Mark scorecard review dates using GSC annotations so the whole team can see when priorities were last recalibrated.
Where Most Teams Break This Process
Teams usually fail by scoring once and never rescoring as signals shift.
Here is the specific next step: after scoring your first batch, set a calendar trigger for day 14 to rescore the top 5 topics using fresh 28-day GSC data. The delta between first score and second score reveals which topics have real momentum versus a one-time spike.
Example scenario: Suppose a topic scores 7.5 on day 1 and rises to 7.8 on day 14. That pattern suggests genuine, sustained demand. Now suppose a different topic also scores 7.5 on day 1 but drops to 5.2 on day 14. That drop signals a news cycle or seasonal blip, not durable interest. These are hypothetical numbers to illustrate the diagnostic, not measured results. Your actual deltas will vary.
Watch the GSC Momentum score specifically. If it drops more than 2 points between scoring rounds, deprioritize that topic regardless of how strong the other five signals look. Momentum is the leading indicator. The other scores explain why a topic is worth doing. Momentum tells you whether the window is still open.
The one metric that predicts whether this process sticks long-term: percentage of published content that was scored 7+ before briefing. Track it. If that number drops below 80%, the scorecard is being bypassed and gut-feel is back in control. The fix is making the scorecard a required input to the brief template, so no brief gets approved without a score attached.
Useful materials
- Dimensions, Units, Conversion Factors, and Significant Digits
- Weighted Arithmetic Mean (theoretical example of collapsing dimensions)
- last 28 days on query editor - Fabric Community - Microsoft
- Filter your data on last 30/60/90 days using this trick - YouTube
- Calculating Percentage Change – Standard Method
- Clickthrough rate (CTR): Definition and role in Ad Rank & diagnosis (Google Ads Help)
- Google Ads Analytics Framework for Marketing Analysts (CTR diagnostic thresholds)
- Evaluating Web Retrieval–Assisted Large Language Models With In-the-Wild Web Queries and Users
- Factoring in Volatility
- Keeping Cool in Volatile Markets
- Painpoint – AI Reddit Analysis for Business Opportunities (Product Page)
- Painpoint blog – technical explanation of subreddit analysis
- A Second Chance at Success? Effects of College Grade Forgiveness Policies (NBER)