- Add GA4 (G-C9J0D8FFH3) to root layout alongside Yandex.Metrika - Add BreadcrumbList JSON-LD schema to all inner pages - Add scripts/indexnow.mjs — submits 30 URLs to IndexNow + Yandex on deploy - Add indexnow to postdeploy step in package.json - Update llms.txt with all 8 services and new pages (about/clients/partners) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
#!/usr/bin/env node
|
||
// IndexNow — уведомляем поисковики об обновлении сайта после деплоя
|
||
// https://www.indexnow.org/
|
||
|
||
const KEY = '40c65b722891b81d944f2c3fea6cab95'
|
||
const HOST = 'sag24.ru'
|
||
|
||
const URLS = [
|
||
'https://sag24.ru/ru/',
|
||
'https://sag24.ru/en/',
|
||
'https://sag24.ru/ru/about/',
|
||
'https://sag24.ru/en/about/',
|
||
'https://sag24.ru/ru/clients/',
|
||
'https://sag24.ru/en/clients/',
|
||
'https://sag24.ru/ru/partners/',
|
||
'https://sag24.ru/en/partners/',
|
||
'https://sag24.ru/ru/uslugi/',
|
||
'https://sag24.ru/en/uslugi/',
|
||
'https://sag24.ru/ru/uslugi/it-autsorsing/',
|
||
'https://sag24.ru/en/uslugi/it-autsorsing/',
|
||
'https://sag24.ru/ru/uslugi/kiberbezopasnost/',
|
||
'https://sag24.ru/en/uslugi/kiberbezopasnost/',
|
||
'https://sag24.ru/ru/uslugi/tehpodderzhka/',
|
||
'https://sag24.ru/en/uslugi/tehpodderzhka/',
|
||
'https://sag24.ru/ru/uslugi/videonablyudenie/',
|
||
'https://sag24.ru/en/uslugi/videonablyudenie/',
|
||
'https://sag24.ru/ru/uslugi/seti/',
|
||
'https://sag24.ru/en/uslugi/seti/',
|
||
'https://sag24.ru/ru/uslugi/servery/',
|
||
'https://sag24.ru/en/uslugi/servery/',
|
||
'https://sag24.ru/ru/uslugi/telefoniya/',
|
||
'https://sag24.ru/en/uslugi/telefoniya/',
|
||
'https://sag24.ru/ru/uslugi/oblako/',
|
||
'https://sag24.ru/en/uslugi/oblako/',
|
||
'https://sag24.ru/ru/faq/',
|
||
'https://sag24.ru/en/faq/',
|
||
'https://sag24.ru/ru/kontakty/',
|
||
'https://sag24.ru/en/kontakty/',
|
||
]
|
||
|
||
const ENDPOINTS = [
|
||
'https://api.indexnow.org/indexnow',
|
||
'https://yandex.com/indexnow',
|
||
]
|
||
|
||
async function submit(endpoint) {
|
||
const res = await fetch(endpoint, {
|
||
method: 'POST',
|
||
headers: { 'Content-Type': 'application/json; charset=utf-8' },
|
||
body: JSON.stringify({
|
||
host: HOST,
|
||
key: KEY,
|
||
keyLocation: `https://${HOST}/${KEY}.txt`,
|
||
urlList: URLS,
|
||
}),
|
||
})
|
||
return res.status
|
||
}
|
||
|
||
console.log(`IndexNow: submitting ${URLS.length} URLs...`)
|
||
const results = await Promise.allSettled(ENDPOINTS.map(async ep => {
|
||
const status = await submit(ep)
|
||
console.log(` ${ep} → ${status}`)
|
||
return status
|
||
}))
|
||
|
||
const ok = results.every(r => r.status === 'fulfilled' && (r.value === 200 || r.value === 202))
|
||
console.log(ok ? 'IndexNow: done.' : 'IndexNow: some errors (non-critical).')
|