seo-dashboard
v0.1.0
Published
Backend utilities for SEO dashboards.
Maintainers
Readme
seo-dashboard
Backend utilities for SEO dashboards.
seo-dashboard is a lightweight utility package for normalizing, summarizing, and preparing SEO data for dashboards, internal tools, and reporting workflows.
It is designed for situations where SEO metrics arrive from multiple sources and need to be transformed into a clean, consistent backend shape before being displayed in charts, tables, summaries, or alerts.
Why this project exists
SEO dashboards often become messy at the data layer.
One source may return clicks and impressions by date. Another may return page-level metrics. A third may expose rankings or technical audit results in a different shape. Even when the visual dashboard is simple, the backend logic that feeds it is often repetitive and inconsistent.
Without a reusable utility layer, teams end up rewriting the same logic for:
- date aggregation.
- metric normalization.
- change calculations.
- top-page summaries.
- report-ready output formatting.
This package provides a small, practical backend layer for those recurring tasks.
Mental model
Think of the package as a preprocessing layer:
Raw SEO data -> normalization -> aggregation -> summary output -> dashboard
It does not replace analytics providers or dashboard frameworks.
It prepares data so those systems can work with it more consistently.
What is included
- date-based metric aggregation.
- change and percentage change helpers.
- page-level performance summarization.
- keyword position band summaries.
- top-item ranking helpers.
- lightweight report snapshot generation.
- example usage demonstrating dashboard-oriented workflows.
- test coverage for core transformations.
Install
npm install seo-dashboardExample
import {
aggregateMetricsByDate,
summarizeTopPages,
createSeoSnapshot
} from "seo-dashboard";
const rows = [
{ date: "2026-03-01", page: "/", clicks: 20, impressions: 200, ctr: 0.1, position: 8.4 },
{ date: "2026-03-01", page: "/blog", clicks: 15, impressions: 140, ctr: 0.1071, position: 11.2 },
{ date: "2026-03-02", page: "/", clicks: 25, impressions: 220, ctr: 0.1136, position: 7.8 }
];
const byDate = aggregateMetricsByDate(rows);
const topPages = summarizeTopPages(rows, { limit: 5, sortBy: "clicks" });
const snapshot = createSeoSnapshot(rows);
console.log(byDate);
console.log(topPages);
console.log(snapshot);Core utilities
aggregateMetricsByDate(rows)
Aggregates clicks, impressions, and derived metrics by date.
summarizeTopPages(rows, options)
Returns the best-performing pages using a selected sort key such as clicks, impressions, or CTR.
summarizePositionBands(rows)
Groups rows into ranking bands such as positions 1 to 3, 4 to 10, 11 to 20, and 21+.
createSeoSnapshot(rows)
Builds a compact summary object for dashboard headers or report cards.
Design principles
This project is intentionally minimal.
It focuses on recurring backend tasks that are useful across dashboards rather than trying to become a complete SEO platform.
The design emphasizes:
- clarity over abstraction.
- predictable outputs over flexible configuration.
- composability over completeness.
- practical reporting workflows over vendor-specific logic.
Non-goals
This project does not attempt to:
- replace analytics APIs or search console clients.
- render charts or frontend dashboard components.
- provide crawler or audit functionality.
- act as a full SEO platform.
It is a backend utility layer for shaping SEO data.
Roadmap
Future extensions may include:
- query-level summarization helpers.
- anomaly detection for traffic and impressions.
- technical issue rollups.
- report export helpers.
- adapters for common SEO data sources.
Availability
View on GitHub: https://github.com/brandonhimpfen/seo-dashboard
License
MIT
