Начало работы

ranklint init

Сгенерировать ranklint.config.ts одной командой: url сайта, профиль UAT, зоны, сниппет для CI и мониторинг.

Первый шаг после установки CLI. ranklint init задаёт несколько вопросов, пишет ranklint.config.ts в текущий каталог и сразу читает его настоящим загрузчиком конфига, чтобы вы знали, что файл валиден.

npx ranklint init

Что спрашивает

  1. URL сайта (абсолютный http/https, с валидацией).
  2. Нужен ли профиль для UAT/staging? URL UAT попадёт в profiles.uat и применяется через ranklint audit --profile uat.
  3. Делят ли домен несколько приложений? Glob-пути вашей секции (через запятую) становятся apps.self, остальной домен считается чужой зоной. См. Зоны.
  4. CI: gitlab, github или none. Сниппет печатается, файл пайплайна не создаётся и не правится.
  5. Включить scheduled-мониторинг прода? Добавит monitor с fs-хранилищем, его использует ranklint audit --mode monitor.

Если ranklint.config.ts уже есть, init спросит, перезаписать ли его; по умолчанию нет.

Что генерирует

import { defineRanklintConfig } from '@ranklint/core'

export default defineRanklintConfig({
  site: { url: 'https://example.com' },
  apps: {
    self: { paths: ['/en/market/**', '/ar/market/**'] },
    main: { paths: ['/**'], owner: 'external' },
  },
  monitor: { storage: 'fs', dir: '.ranklint/reports' },
  profiles: {
    uat: { site: { url: 'https://uat.example.com' } },
  },
})

Секции, от которых вы отказались, просто отсутствуют: минимальный результат это один site. После записи init выполняет loadRanklintConfig и печатает config is valid; если @ranklint/core ещё не установлен, вместо этого будет подсказка npm i -D @ranklint/core.

Неинтерактивный режим

ФлагОписание
--yesбез вопросов, требует --url
--urlпрод-url сайта
--uaturl UAT, генерирует профиль uat
--zonesглобы своей зоны через запятую
--cigitlab | github | none, печатает сниппет пайплайна
--forceперезаписать существующий ranklint.config.ts
--cwdкаталог, в котором создать конфиг
npx ranklint init --yes --url https://example.com --uat https://uat.example.com --ci github

Без --yes и без TTY команда падает с ошибкой «use --yes with --url», так что в пайплайне она не зависнет.

Сниппеты CI

GitLab:

include:
  - remote: 'https://raw.githubusercontent.com/aakazancev/ranklint/main/presets/gitlab-ci/seo.yml'

seo:audit:
  extends: .ranklint-audit
  variables:
    RANKLINT_URL: https://example.com

GitHub Actions (reusable workflow, положить в .github/workflows/seo.yml):

name: seo
on: [pull_request]
jobs:
  seo:
    uses: aakazancev/ranklint/.github/workflows/seo.yml@main
    with: { url: 'https://example.com' }

Подробнее про пресеты в Diff и CI.

Детект Nuxt

Если в каталоге есть nuxt.config.ts|js|mjs, а @ranklint/nuxt нет в package.json, init в конце печатает:

Nuxt detected: npx nuxi module add @ranklint/nuxt

Модуль даёт sitemap, robots и JSON-LD на сборке, а CLI проверяет уже задеплоенный результат.