Xml sitemap skill

When the user wants to create, audit, or optimize sitemap.xml.

by kostja94·MIT license·★ 1,006 Stars on the repo·GitHub ↗

Use now

Files of Xml sitemap

kostja94/main1 file shown
SKILL.md
Show the full text265 lines

SEO Technical: Sitemap

Guides sitemap creation, auditing, and optimization for search engine discovery.

When invoking: On first use, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.

Scope (Technical SEO)

  • Sitemap: Create XML sitemap; submit to Google Search Console
  • URL discovery: Help search engines find pages; especially important for large sites or poor internal linking

Task

Generate an XML Sitemap that complies with the sitemaps.org protocol from the project's page list, and declare it in robots.txt.

Initial Assessment

Project context: Read root contextus.md when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.

Identify:

  1. Site URL: Base domain (e.g., https://example.com)
  2. URL count: Total indexable pages (single sitemap vs. sitemap index)
  3. Data source: Static config, CMS, file system, or hybrid
Precondition: Does the site need a sitemap?

Before generating, assess whether a sitemap is warranted. A sitemap is most valuable when:

  • Large site (hundreds+ pages) or new site with few backlinks
  • Deep or orphaned pages that internal links don't reach well
  • Rich media (images, videos, news) needing extension metadata
  • GSC shows growing "Discovered – not indexed" or "Not discovered" counts

Small sites (< 50 pages) with strong internal linking may not strictly need one, but creating a sitemap has near-zero cost and provides future-proof infrastructure. If in doubt, err on the side of creating.

1. Protocol Essentials

Item Spec
Single sitemap limit 50,000 URLs, 50MB (uncompressed)
Sitemap index When exceeding limit, split and have main index reference sub-sitemaps
Encoding UTF-8
URL format Full URL, same host, include https://
Required tags <loc>
Optional tags <lastmod>, <changefreq>, <priority>

2. Field Requirements

Field Description Recommendation
url Full URL https://example.com/path
lastModified Page last modified time Use page metadata, ISO 8601; use YYYY-MM-DD or omit when no data
changeFrequency Update frequency Home daily, list pages weekly, content pages monthly
priority Relative importance Home 1.0, aggregate pages 0.9, content pages 0.7–0.8, others 0.5–0.6
lastmod (Critical)
  • Must be accurate: Reflect actual page modification time, not sitemap generation time. Google requires verifiability; Bing reports ~18% of sitemaps have incorrect lastmod values.
  • Format: W3C Datetime (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS+TZD), e.g. 2025-01-15, 2025-01-15T14:30:00+08:00.
  • Avoid: Using new Date() for lastmod—causes all URLs to share the same timestamp; search engines may ignore.
  • Apply when: Content updates, structured data changes, or important link changes.
changefreq / priority
  • changefreq: Hints only; does not directly determine crawl frequency. Values: always, hourly, daily, weekly, monthly, yearly, never.
  • priority: 0.0–1.0; does not affect ranking; set higher for important pages; avoid identical values for all.

3. Architecture & Split

Single Sitemap
  • When URLs >50,000, generate /sitemap.xml directly.
Sitemap Index (Multiple Sub-sitemaps)
  • When exceeding limit, split by type or language; main index references sub-sitemaps.
  • Example splits: /sitemap/posts.xml, /sitemap/pages.xml, /sitemap/zh.xml, /sitemap/en.xml.
  • Main index outputs /sitemap.xml or /sitemap-index.xml, each entry as <sitemap><loc>...</loc></sitemap>.
Multilingual Sites
  • Split by locale: /sitemap/zh.xml, /sitemap/en.xml.
  • Or by content type + language: /sitemap/zh-posts.xml, /sitemap/en-posts.xml.
Multi-Language Sitemap (hreflang in Sitemap)

For multilingual sites, add xhtml:link hreflang alternates inside each <url> entry. Recommended for large sites (100+ multilingual pages); centralizes hreflang management.

Rules:

  • Every language version must link to ALL others, including itself (self-reference).
  • Include x-default pointing to default locale.
  • Use xmlns:xhtml="http://www.w3.org/1999/xhtml" namespace.
  • <loc> typically uses default-locale (clean) URL; x-default points there too.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/page</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/page" />
    <xhtml:link rel="alternate" hreflang="zh" href="https://example.com/zh/page" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
  </url>
</urlset>

List all language sitemaps in sitemap index; include in robots.txt.

4. Implementation

Tech Stack Implementation
Next.js App Router app/sitemap.ts export MetadataRoute.Sitemap or generateSitemaps
Next.js Pages Router pages/sitemap.xml.ts or getServerSideProps return XML
Astro src/pages/sitemap-index.xml.ts or @astrojs/sitemap
Vite / Static build Build script generates public/sitemap.xml
Other Generate static /sitemap.xml or return dynamically via API
Route Exclusion
  • If the project has i18n / middleware redirects, exclude sitemap paths to avoid redirect.
  • Example (Next.js matcher): '/((?!api|_next|sitemap|sitemap-index|.*\\..*).*)'.

5. Page Scope

Include
  • Home: /
  • Locale/region home pages (e.g. /zh, /en)
  • All indexable content pages, list pages, category pages
Exclude
  • /api/*, /admin/*, /_next/*
  • Static assets (images, JS, CSS, etc.). For image discovery, use image sitemap extension—see image-optimization. For video discovery, use video sitemap extension—see video-optimization
  • Login, admin, drafts, and other pages not intended for indexing

6. Data Source & Maintenance (Single Source of Truth)

  • Single source of truth: Read URL list from config, CMS, or metadata; avoid hardcoding in sitemap.
  • Multiple page types: Tools, blog, marketing pages can be merged into one array for unified generation.
  • New pages: Add only to data source; sitemap updates automatically; avoid maintaining multiple places.

Create a config (e.g., site-pages-config.ts) that exports:

  • Page slugs/paths by section (tools, blog, marketing, etc.)
  • Optional: modifiedDate per page for accurate lastmod
  • Function: getAllPageUrls(baseUrl) for sitemap and IndexNow

Why: Sitemap, IndexNow, and feed can all import from the same config—no duplicate URL maintenance. IndexNow should use the same URL list; avoid separate hardcoded lists.

7. robots.txt

Add to robots.txt:

Sitemap: https://example.com/sitemap.xml

With multiple sitemaps, only declare the main index.

8. Output Format

Single Sitemap Example
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2025-01-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/page</loc>
    <lastmod>2025-01-10</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>
Sitemap Index Example
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap/pages.xml</loc>
    <lastmod>2025-01-15</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap/posts.xml</loc>
    <lastmod>2025-01-14</lastmod>
  </sitemap>
</sitemapindex>

9. Submission & Verification

After generating the sitemap, guide the user through submission:

  1. robots.txt: Add Sitemap: https://example.com/sitemap.xml (or the index URL)
  2. Google Search Console: Navigate to Indexing → Sitemaps, enter the sitemap URL, submit
  3. Verify: In GSC Sitemaps report, check "Discovered pages" count vs. expected; if large gap, investigate
  4. Monitor: After 24–48h, confirm status shows "Success"; check Indexing → Pages report filtered by sitemap for "Indexed" vs. "Not indexed" breakdown

Common submission errors to flag:

  • Sitemap URL 404 — check build output and deployment
  • "Could not fetch" — verify robots.txt doesn't block the sitemap URL
  • "HTML page" error — see §10 HTML Diagnosis below

10. HTML Diagnosis (Sitemap Returns HTML Instead of XML)

When /sitemap.xml returns HTTP 200 but Content-Type: text/html with homepage content, Google silently rejects the sitemap — no GSC alert because the status code is 200. This is worse than 404.

Common causes:

  • Catch-all page routes (pages/[...slug].vue, Next.js catch-all) intercepting before the sitemap handler
  • i18n modules running at a lower level than routeRules/middleware
  • Geo-redirects or redirect plugins matching sitemap paths
  • CDN/cache layers stripping Content-Type headers

Diagnose with:

curl -I https://example.com/sitemap.xml          # Check Content-Type
curl -A "Googlebot" -I https://example.com/sitemap.xml  # Googlebot's view
curl -s https://example.com/sitemap.xml | head -5       # First lines must be XML

Fix (Next.js): Use server/routes/sitemap.xml.ts (highest priority, bypasses catch-all). For i18n, add excludePatterns: [/^\/sitemap.*\.xml$/]. Renaming the sitemap file (e.g., to sitemap_index.xml) can bypass Google's cache of the failed state.

11. Common Issues

Issue Cause / Fix
Sitemap 404 Build failure, wrong path, incorrect export; check routes and deployment
Missing pages URLs not in data source, filtered or excluded
lastmod anomaly Avoid new Date(); use modifiedDate from page metadata
Google not indexing Submit sitemap in GSC; check Coverage (google-search-console) and robots
EN/ZH URL mismatch Use unified data source; share same list when generating by locale
Sitemap returns HTML Catch-all route or i18n intercepting before sitemap handler; diagnose with curl -I + Googlebot UA; see §10

References

  • website-structure: Plan page structure and URL list; sitemap reflects planned/indexable pages
  • google-search-console: Sitemap status, indexed URL count, Coverage
  • robots-txt: Reference sitemap in robots.txt
  • indexnow: Share same URL list from config
  • image-optimization: Image sitemap extension for image discovery
  • video-optimization: Video sitemap extension for video discovery
1---
2name: xml-sitemap
3description: When the user wants to create, audit, or optimize sitemap.xml. Also use when the user mentions "sitemap," "sitemap.xml," "sitemap index," "lastmod," "changefreq," "priority," "URL discovery," "URL discovery for search engines," "single source of truth," "URL config," "unify sitemap IndexNow," or "reduce duplicate maintenance." For IndexNow, use indexnow.
4metadata:
5 version: 1.1.0
6---
7 
8# SEO Technical: Sitemap
9 
10Guides sitemap creation, auditing, and optimization for search engine discovery.
11 
12**When invoking**: On **first use**, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On **subsequent use** or when the user asks to skip, go directly to the main output.
13 
14## Scope (Technical SEO)
15 
16- **Sitemap**: Create XML sitemap; submit to Google Search Console
17- **URL discovery**: Help search engines find pages; especially important for large sites or poor internal linking
18 
19## Task
20 
21Generate an XML Sitemap that complies with the sitemaps.org protocol from the project's page list, and declare it in robots.txt.
22 
23## Initial Assessment
24 
25**Project context:** Read root `contextus.md` when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.
26 
27Identify:
281. **Site URL**: Base domain (e.g., `https://example.com`)
292. **URL count**: Total indexable pages (single sitemap vs. sitemap index)
303. **Data source**: Static config, CMS, file system, or hybrid
31 
32### Precondition: Does the site need a sitemap?
33 
34Before generating, assess whether a sitemap is warranted. A sitemap is most valuable when:
35- **Large site** (hundreds+ pages) or **new site** with few backlinks
36- **Deep or orphaned pages** that internal links don't reach well
37- **Rich media** (images, videos, news) needing extension metadata
38- GSC shows growing "Discovered – not indexed" or "Not discovered" counts
39 
40Small sites (< 50 pages) with strong internal linking may not strictly need one, but creating a sitemap has near-zero cost and provides future-proof infrastructure. If in doubt, err on the side of creating.
41 
42## 1. Protocol Essentials
43 
44| Item | Spec |
45|------|------|
46| Single sitemap limit | 50,000 URLs, 50MB (uncompressed) |
47| Sitemap index | When exceeding limit, split and have main index reference sub-sitemaps |
48| Encoding | UTF-8 |
49| URL format | Full URL, same host, include `https://` |
50| Required tags | `<loc>` |
51| Optional tags | `<lastmod>`, `<changefreq>`, `<priority>` |
52 
53## 2. Field Requirements
54 
55| Field | Description | Recommendation |
56|-------|--------------|---------------|
57| url | Full URL | `https://example.com/path` |
58| lastModified | Page last modified time | Use page metadata, ISO 8601; use `YYYY-MM-DD` or omit when no data |
59| changeFrequency | Update frequency | Home `daily`, list pages `weekly`, content pages `monthly` |
60| priority | Relative importance | Home 1.0, aggregate pages 0.9, content pages 0.7–0.8, others 0.5–0.6 |
61 
62### lastmod (Critical)
63 
64- **Must be accurate**: Reflect actual page modification time, not sitemap generation time. Google requires verifiability; Bing reports ~18% of sitemaps have incorrect lastmod values.
65- **Format**: W3C Datetime (`YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SS+TZD`), e.g. `2025-01-15`, `2025-01-15T14:30:00+08:00`.
66- **Avoid**: Using `new Date()` for lastmod—causes all URLs to share the same timestamp; search engines may ignore.
67- **Apply when**: Content updates, structured data changes, or important link changes.
68 
69### changefreq / priority
70 
71- **changefreq**: Hints only; does not directly determine crawl frequency. Values: `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, `never`.
72- **priority**: 0.0–1.0; **does not affect ranking**; set higher for important pages; avoid identical values for all.
73 
74## 3. Architecture & Split
75 
76### Single Sitemap
77 
78- When URLs >50,000, generate `/sitemap.xml` directly.
79 
80### Sitemap Index (Multiple Sub-sitemaps)
81 
82- When exceeding limit, split by type or language; main index references sub-sitemaps.
83- Example splits: `/sitemap/posts.xml`, `/sitemap/pages.xml`, `/sitemap/zh.xml`, `/sitemap/en.xml`.
84- Main index outputs `/sitemap.xml` or `/sitemap-index.xml`, each entry as `<sitemap><loc>...</loc></sitemap>`.
85 
86### Multilingual Sites
87 
88- Split by locale: `/sitemap/zh.xml`, `/sitemap/en.xml`.
89- Or by content type + language: `/sitemap/zh-posts.xml`, `/sitemap/en-posts.xml`.
90 
91### Multi-Language Sitemap (hreflang in Sitemap)
92 
93For multilingual sites, add `xhtml:link` hreflang alternates inside each `<url>` entry. **Recommended for large sites** (100+ multilingual pages); centralizes hreflang management.
94 
95**Rules**:
96- Every language version must link to ALL others, including itself (self-reference).
97- Include `x-default` pointing to default locale.
98- Use `xmlns:xhtml="http://www.w3.org/1999/xhtml"` namespace.
99- `<loc>` typically uses default-locale (clean) URL; `x-default` points there too.
100 
101```xml
102<?xml version="1.0" encoding="UTF-8"?>
103<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
104 xmlns:xhtml="http://www.w3.org/1999/xhtml">
105 <url>
106 <loc>https://example.com/page</loc>
107 <xhtml:link rel="alternate" hreflang="en" href="https://example.com/page" />
108 <xhtml:link rel="alternate" hreflang="zh" href="https://example.com/zh/page" />
109 <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
110 </url>
111</urlset>
112```
113 
114List all language sitemaps in sitemap index; include in robots.txt.
115 
116## 4. Implementation
117 
118| Tech Stack | Implementation |
119|------------|-----------------|
120| Next.js App Router | `app/sitemap.ts` export `MetadataRoute.Sitemap` or `generateSitemaps` |
121| Next.js Pages Router | `pages/sitemap.xml.ts` or `getServerSideProps` return XML |
122| Astro | `src/pages/sitemap-index.xml.ts` or `@astrojs/sitemap` |
123| Vite / Static build | Build script generates `public/sitemap.xml` |
124| Other | Generate static `/sitemap.xml` or return dynamically via API |
125 
126### Route Exclusion
127 
128- If the project has i18n / middleware redirects, exclude sitemap paths to avoid redirect.
129- Example (Next.js matcher): `'/((?!api|_next|sitemap|sitemap-index|.*\\..*).*)'`.
130 
131## 5. Page Scope
132 
133### Include
134 
135- Home: `/`
136- Locale/region home pages (e.g. `/zh`, `/en`)
137- All indexable content pages, list pages, category pages
138 
139### Exclude
140 
141- `/api/*`, `/admin/*`, `/_next/*`
142- Static assets (images, JS, CSS, etc.). For image discovery, use **image sitemap** extension—see **image-optimization**. For video discovery, use **video sitemap** extension—see **video-optimization**
143- Login, admin, drafts, and other pages not intended for indexing
144 
145## 6. Data Source & Maintenance (Single Source of Truth)
146 
147- **Single source of truth**: Read URL list from config, CMS, or metadata; avoid hardcoding in sitemap.
148- **Multiple page types**: Tools, blog, marketing pages can be merged into one array for unified generation.
149- **New pages**: Add only to data source; sitemap updates automatically; avoid maintaining multiple places.
150 
151### Central Config (Recommended)
152 
153Create a config (e.g., `site-pages-config.ts`) that exports:
154- Page slugs/paths by section (tools, blog, marketing, etc.)
155- Optional: `modifiedDate` per page for accurate lastmod
156- Function: `getAllPageUrls(baseUrl)` for sitemap and IndexNow
157 
158**Why**: Sitemap, IndexNow, and feed can all import from the same config—no duplicate URL maintenance. IndexNow should use the same URL list; avoid separate hardcoded lists.
159 
160## 7. robots.txt
161 
162Add to robots.txt:
163 
164```
165Sitemap: https://example.com/sitemap.xml
166```
167 
168With multiple sitemaps, only declare the main index.
169 
170## 8. Output Format
171 
172### Single Sitemap Example
173 
174```xml
175<?xml version="1.0" encoding="UTF-8"?>
176<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
177 <url>
178 <loc>https://example.com/</loc>
179 <lastmod>2025-01-15</lastmod>
180 <changefreq>daily</changefreq>
181 <priority>1.0</priority>
182 </url>
183 <url>
184 <loc>https://example.com/page</loc>
185 <lastmod>2025-01-10</lastmod>
186 <changefreq>weekly</changefreq>
187 <priority>0.8</priority>
188 </url>
189</urlset>
190```
191 
192### Sitemap Index Example
193 
194```xml
195<?xml version="1.0" encoding="UTF-8"?>
196<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
197 <sitemap>
198 <loc>https://example.com/sitemap/pages.xml</loc>
199 <lastmod>2025-01-15</lastmod>
200 </sitemap>
201 <sitemap>
202 <loc>https://example.com/sitemap/posts.xml</loc>
203 <lastmod>2025-01-14</lastmod>
204 </sitemap>
205</sitemapindex>
206```
207 
208## 9. Submission & Verification
209 
210After generating the sitemap, guide the user through submission:
211 
2121. **robots.txt**: Add `Sitemap: https://example.com/sitemap.xml` (or the index URL)
2132. **Google Search Console**: Navigate to Indexing → Sitemaps, enter the sitemap URL, submit
2143. **Verify**: In GSC Sitemaps report, check "Discovered pages" count vs. expected; if large gap, investigate
2154. **Monitor**: After 24–48h, confirm status shows "Success"; check Indexing → Pages report filtered by sitemap for "Indexed" vs. "Not indexed" breakdown
216 
217Common submission errors to flag:
218- Sitemap URL 404 — check build output and deployment
219- "Could not fetch" — verify robots.txt doesn't block the sitemap URL
220- "HTML page" error — see §10 HTML Diagnosis below
221 
222## 10. HTML Diagnosis (Sitemap Returns HTML Instead of XML)
223 
224When `/sitemap.xml` returns HTTP 200 but `Content-Type: text/html` with homepage content, Google silently rejects the sitemap — no GSC alert because the status code is 200. This is **worse than 404**.
225 
226**Common causes**:
227- Catch-all page routes (`pages/[...slug].vue`, Next.js catch-all) intercepting before the sitemap handler
228- i18n modules running at a lower level than routeRules/middleware
229- Geo-redirects or redirect plugins matching sitemap paths
230- CDN/cache layers stripping Content-Type headers
231 
232**Diagnose with**:
233```bash
234curl -I https://example.com/sitemap.xml # Check Content-Type
235curl -A "Googlebot" -I https://example.com/sitemap.xml # Googlebot's view
236curl -s https://example.com/sitemap.xml | head -5 # First lines must be XML
237```
238 
239**Fix (Next.js)**: Use `server/routes/sitemap.xml.ts` (highest priority, bypasses catch-all). For i18n, add `excludePatterns: [/^\/sitemap.*\.xml$/]`. Renaming the sitemap file (e.g., to `sitemap_index.xml`) can bypass Google's cache of the failed state.
240 
241## 11. Common Issues
242 
243| Issue | Cause / Fix |
244|-------|-------------|
245| Sitemap 404 | Build failure, wrong path, incorrect export; check routes and deployment |
246| Missing pages | URLs not in data source, filtered or excluded |
247| lastmod anomaly | Avoid `new Date()`; use `modifiedDate` from page metadata |
248| Google not indexing | Submit sitemap in GSC; check Coverage (google-search-console) and robots |
249| EN/ZH URL mismatch | Use unified data source; share same list when generating by locale |
250| **Sitemap returns HTML** | Catch-all route or i18n intercepting before sitemap handler; diagnose with `curl -I` + Googlebot UA; see §10 |
251 
252## References
253 
254- [sitemaps.org](https://www.sitemaps.org/protocol.html)
255- [Google Sitemap](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap)
256 
257## Related Skills
258 
259- **website-structure**: Plan page structure and URL list; sitemap reflects planned/indexable pages
260- **google-search-console**: Sitemap status, indexed URL count, Coverage
261- **robots-txt**: Reference sitemap in robots.txt
262- **indexnow**: Share same URL list from config
263- **image-optimization**: Image sitemap extension for image discovery
264- **video-optimization**: Video sitemap extension for video discovery
265 

Discussion

Alternatives

Agentic Browsing ReadinessAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).Marketing · MITBacklink Profile AnalysisBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.Marketing · MIT/setup-cmsConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report. · MITBacklink checkBacklink profile for any domain — referring domains, authority, anchors, new/lost links, and a side-by-side vs a competitor. Use when asked "check my backlinks", "backlink profile of X", "who links to them", or "link gap vs competitor".Marketing · MIT