Content Decay Analyser
Find pages losing traffic over time by comparing peak vs current performance.
#about
Identifies months with sufficient data coverage by comparing actual vs expected days.
Groups clicks by page and month.
Peak = maximum clicks across analysed months.
Clicks Lost = latest month - peak month (negative = decay).
OpenPyXL Excel with conditional formatting, hyperlinked URLs, customisable peak highlight colour.
Streamlit app
- Platform
- Browser-based (no installation required)
- Input
- GSC export CSV with datesUTF-8 or Latin-1 encoding supported
- Output
- Excel: styled workbook with hyperlinked URLs, peak month highlighted, clicks lost calculated. Info sheet included. CSV export option.
- Category
- Reporting
Use cases
- Identifying content that needs refreshing
- Prioritising content updates by impact
- Tracking content performance over time
- Finding pages affected by algorithm updates
#features
- Complete month detection (actual vs expected days)
- Peak month calculation per page
- Clicks lost: latest - peak (negative = decay)
- Months to analyse slider (3-24, default 12)
- Minimum peak clicks threshold (0-10,000)
- OpenPyXL Excel with hyperlinks and conditional formatting
#how-to-use
- Export GSC data as CSV
- Upload to the tool
- Set months to analyse (3-24)
- Set minimum peak clicks threshold
- Choose peak highlight colour
- Download styled Excel or CSV
#faq
- What data do I need, and will a standard GSC export work?
- You need daily page-level rows with date, page and clicks columns. The standard Search Console UI Pages export will not work because it has no date column; use the GSC API or a connector export that includes both the date and page dimensions. Column names are mapped via dropdowns (defaults: date, page, clicks), and a query column is fine to leave in since clicks are summed per page and month.
- What counts as a 'complete month'?
- A month is complete when your data's date span covers every day of that month; incomplete months, typically the current one, are excluded. The tool then analyses the most recent 3 to 24 complete months (default 12), and 'latest month' in the Clicks Lost calculation means the last complete month, not today.
- Why do some of my pages not appear in the results?
- Only decaying pages are kept: a page must have negative Clicks Lost (latest complete month below its peak month) and a peak of at least the minimum peak clicks setting (default 10). Pages that are flat, growing, or peaked in the latest month are excluded by design, so the report is a fix-list, not a full inventory.
- Does it distinguish genuine decay from seasonality?
- No. Clicks Lost is a single comparison of the latest complete month against the peak month, so a seasonal page examined outside its season will look like it is decaying. The per-month columns in the output show the full pattern, so check whether the peak is an annual spike before scheduling a rewrite.
- How are months with no data for a page handled?
- Missing page-month combinations are filled with zero clicks. That means a page that only started getting traffic recently still shows a full row of months, and a page that disappeared from search shows zeros in recent months rather than being dropped.
/contact
Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.