Битые ссылки — самый дешёвый класс багов: видны метрикой (404 в логах), режут SEO, бесят. Этот промт — структурированный sweep с автоматизацией и приоритизацией.
Site: {{site_url}}
Чем чинить руками vs автоматизировать
| Что | Способ | Время |
|---|---|---|
| 10-20 ключевых страниц | руками | 15 мин |
| Внутренний весь сайт | linkinator / lychee | 5 мин setup, 2-10 мин run |
| Внешние ссылки | linkinator с --external | дольше (rate limits) |
| Images 404 | lychee + img-фильтр | + 2 мин |
| Sitemap consistency | curl + jq | 30 сек |
1. Автоматический проход
linkinator
npx linkinator {{site_url}} \
--recurse \
--skip "^https?://localhost" \
--concurrency 8 \
--format csv \
> links-report.csv
lychee (быстрый, на Rust)
brew install lychee
lychee --max-concurrency 8 --include-fragments --base {{site_url}} {{site_url}}
Lychee perks: проверяет fragment IDs (#section), быстрее, лучше для CI.
2. Категоризация
CRITICAL
- 404 на internal (
/about,/pricing) - 404 на ассеты в img/CSS/JS
- 5xx на любые internal
- Redirect loops
- Mixed content (http в https)
SERIOUS
- 404 на external известные (Wikipedia, GitHub) — обнови или удали
- 404 в OG/Twitter card image — link preview сломан
- Redirect chains >2 hops
- 308 на http→https которые должны быть прямо https
LOW PRIORITY
- 404 на external small blogs — link rot
- 200 но slow (>5s)
- Soft-404 (200 но контент «не найдено»)
3. Sitemap consistency
curl -s {{site_url}}/sitemap.xml | \
grep -oP '(?<=<loc>)[^<]+' | \
while read url; do
echo "$(curl -s -o /dev/null -w '%{http_code}' "$url") $url"
done | grep -v "^200"
Проверь:
- Sitemap URL отвечают 200
- Sitemap не содержит noindex pages — конфликт
- Sitemap не содержит redirected URLs — Google запутается
4. Internal links audit (руками)
10 ключевых страниц:
- DevTools Elements:
$$('a[href]').map(a => a.href) - Cmd-click на каждую
- Особое внимание:
- Footer (часто забывают апдейтить)
- Anchor links
#section— реально есть такой ID? - Buttons-as-links (
onClick={() => router.push(...)}) — есть таргет?
5. Images sweep
npx linkinator {{site_url}} --recurse \
| grep -E "(jpg|png|webp|svg|gif|ico)" \
| grep -E "(BROKEN|404)"
Искать:
<img>broken src- OG image
<meta property="og:image">— 404 - Favicon — 404 (видит каждый юзер)
- Внешние CDN-картинки (Imgur / Discord CDN убивают со временем)
6. CI-интеграция
- name: Check links
run: npx linkinator {{site_url}} --recurse --skip "^https?://localhost"
Раз в неделю (cron) или на каждый production deploy.
Anti-patterns
- ❌ Sweep только внутренних ссылок — пропустишь broken external CDN
- ❌ Sweep раз в год — link rot накапливается ежедневно
- ❌ Не различать критичность — потеряешь приоритеты в 200-strong списке
- ❌ Ignore redirects —
/old→/newчерез 3 hops, SEO weight теряется - ❌ Не чинить favicon 404 — первое что видит каждый юзер
- ❌ Fragment IDs не проверять — пользователи получают «битый» якорь
- ❌ Внешние ссылки на github-issue / linkedin без archive.org — link rot inevitable
Output
- Критичные: список с URL + где ссылка + что чинить
- Серьёзные: то же, второй приоритет
- CI-сетап: что добавлено
- Sitemap sync: какие URL пропали / появились
- Метрика: «было N broken, осталось M»
Похожие промты
site / auditFeatured
Полный UX-аудит сайта
Эвристическая оценка по Нильсену + проверка ключевых сценариев. На выходе — приоритизированный список проблем.
uxauditheuristics
Открыть
Средний15-30 мин
site / auditFeatured
Аудит производительности (Core Web Vitals)
Глубокая проверка LCP, INP, CLS с привязкой к коду и приоритизированным планом исправлений.
performancecore web vitalslighthouse
Открыть
Продвинутый30-60 мин
site / auditFeatured
Аудит доступности по WCAG 2.2 AA
Проверка контраста, клавиатурной навигации, скринридеров, фокус-индикаторов и ARIA.
a11ywcagaccessibility
Открыть
Средний30-60 мин