BacklinkMonitor
Backlink monitoring: new, lost and toxic links, a gained and lost chart, referring domains, and disavow or mark-safe actions.
Code
import { type Backlink, BacklinkMonitor } from "@fadymondy/nasaq/web";export function Links({ links }: { links: Backlink[] }) { return <BacklinkMonitor links={links} onDisavow={async (ids) => { await api.disavow(ids); }} onMarkSafe={async (id) => { await api.safe(id); }} />;}SEO · beta
Live examples and controls: BacklinkMonitor in the lab.
Install
npx shadcn@latest add https://docs.nasaqui.com/r/backlink-monitor.jsonBacklinkMonitor shows who links to you and how that changes. Summary tiles count links, referring domains, new this week, lost and toxic. A chart plots links gained and lost per day. The table can be filtered by status (new, active, lost, toxic), and toxic links can be disavowed in bulk or marked safe one by one.
When to use
- The link profile part of an SEO dashboard.
- Alerting a team that a valuable link was lost or a spammy one appeared.
When not to use
- Ranking positions: use
KeywordTracker.
Import
import { BacklinkMonitor } from "@fadymondy/nasaq/web";Quick start
import { type Backlink, BacklinkMonitor } from "@fadymondy/nasaq/web";
export function Links({ links }: { links: Backlink[] }) {
return <BacklinkMonitor links={links} onDisavow={async (ids) => { await api.disavow(ids); }} onMarkSafe={async (id) => { await api.safe(id); }} />;
}Anatomy
BacklinkMonitor data-slot="backlink-monitor"
MetricTiles links, domains, new, lost, toxic
TimeSeriesPanel gained and lost per day
DataTable source, anchor, target, DR, spam score, first seen, status
status facet, bulk DisavowAPI
BacklinkMonitor
| Prop | Type | Default | Description |
|---|---|---|---|
links | Backlink[] | required | All links, including lost ones. |
onDisavow | (ids: string[]) => Promise<void | { error?: string }> | none | Shows the Disavow action. |
onMarkSafe | (id: string) => Promise<...> | none | Shows Mark safe on flagged links. |
now | number | Date.now() | Reference time. Pass a fixed value in demos and tests. |
days | number | 30 | Days on the chart. |
title / description | ReactNode | built-in | Header. |
pageSize | number | 8 | Rows per page. |
loading / error / onRetry | none | States. | |
className / labels | none | Classes; Partial<BacklinkMonitorLabels> strings. |
Backlink
{ id, sourceUrl, targetUrl, anchor, domainRating, spamScore, firstSeen, lostAt?, followed?, disavowed? }. Dates are ISO strings.
Helpers
backlinkStatus(link, now)giveslost,new(first seen withinNEW_LINK_DAYS, 7) oractive; lost wins over new.isToxic(link)is true fromTOXIC_SPAM_SCORE(60) upward, unless disavowed.summarizeBacklinks(links, now),referringDomains(links)(live domains counted once,www.ignored),domainOf(url),dailyLinkSeries(links, days, now)anddiffBacklinks(before, after).
Examples
Only the counts:
import { summarizeBacklinks } from "@fadymondy/nasaq/web";
const { total, toxic, lost } = summarizeBacklinks(links, Date.now());Read only:
import { BacklinkMonitor } from "@fadymondy/nasaq/web";
<BacklinkMonitor links={links} days={14} />;Accessibility
| Key | Action |
|---|---|
| Tab | Move through the filters, table and actions. |
| Space | Select a row for the bulk action. |
| Enter | Run the focused action. |
Status is a word, not only a colour. The chart has a visually hidden data table through TimeSeriesPanel.
RTL & i18n
URLs and anchors that are Latin stay left-to-right; Arabic anchors use dir="auto". Dates go through DateTime. Built-in English and Arabic strings.
Styling & tokens
New, lost and toxic use the info, warning and danger tokens. Chart series use --nq-chart-*.
Do / Don't
- Do confirm in your own flow before disavowing: this screen has no undo.
- Do review toxic links before disavowing; a high spam score is a hint, not a verdict.
- Don't pass
Date.now()inside a render loop fornow; pass a stable value.
Related
Lab
https://docs.nasaqui.com/?path=/docs/components-seo-backlink-monitor--docs
VulnReport
A vulnerability scan report - CVE counts per severity, the worst findings with the version that fixes them, the trend against the previous scan and a stacked history of the last scans.
KeywordPlanner
A keyword planning table with search intent, cluster, owning URL and cannibalization: which of your pages compete for the same keyword and which one to keep.