Programmatic SEO аудит globalwork.ai — тестовое задание SEO Team Lead
Google US · июль 2026 · Инструменты: Ahrefs (Overview + Top Pages exports по 4 доменам),
Google site:, полный разбор sitemap 4 доменов (601 тыс. URL), собственный crawl globalwork.ai
(382 URL raw HTML + 52 URL rendered, Playwright), Wayback-снапшоты конкурента. GSC недоступен —
все выводы об индексации помечены как внешние сигналы.
Метки данных: FACT прямое измерение ·
SAMPLE выборка · EST оценка Ahrefs/site:
Executive summary
31 303
URL в sitemap globalwork
35
keywords в US-выдаче (Ahrefs)
1 800
US-органики, визитов/мес
93%
sitemap — короткоживущие вакансии
100%
контента — только после JS-рендеринга
56:1
платный трафик к органике ($29.3K/мес)
- Сайт умеет генерировать страницы, но не создаёт поисковую поверхность. 31,3 тыс. URL в sitemap,
~13,2 тыс. в индексе Google — и только 35 ранжирующихся запросов (1,1 keyword на 1 000 URL против 559 у FlexJobs,
269 у RobertHalf, 83 у RemoteRocketship). Проблема не «Google не индексирует», а «страницы в индексе, но мертвы для поиска».
- Две причины, обе устранимы. Стратегическая: 93% инвентаря — одноразовые вакансии без evergreen-слоя
(компании, salary, гео-хабы), который кормит всех трёх конкурентов. Техническая: initial HTML пуст —
медиана 9–13 слов, 0 внутренних ссылок, JobPosting schema только после JS (маркер
BAILOUT_TO_CLIENT_SIDE_RENDERING на 100% проверенных страниц).
- Планка достижима. RemoteRocketship с тем же авторитетом домена (DR 53 vs 49) получает
48,8 тыс. US-визитов — в 27 раз больше. globalwork уже платит ~$29 300/мес за 118 тыс. платных визитов;
каждый процент спроса, переведённый в органику, — прямая экономия.
ЧАСТЬ 1Programmatic-архитектура globalwork.ai
Шаблоны, URL-логика, типы листингов FACT (полный sitemap 21.07)
| Шаблон | URL-паттерн | В sitemap | Ранжируется (Ahrefs) | Трафик |
| Вакансия (job detail) | /en/{wf}-jobs/usa/{slug}_{uuid} | 29 241 (93,4%) | 10 | ~6 |
| Role listing (remote) | /en/remote-jobs/usa/{role} | 1 248 | 1 | 3 |
| Role × City (onsite) | /en/onsite-jobs/usa/{role}/{st}/{city} | 563 | 0 | 0 |
| Role × State (onsite) | /en/onsite-jobs/usa/{role}/{st} | 249 | 0 | 0 |
| Country hub | /en/{wf}-jobs/usa | 2 | 2 | 36 |
| Homepage / locale | /{locale} | 0 | 2 | 1 857 (96% всего) |
Только США и локаль en; hybrid-ветка появилась в sitemap между 20.07 и 21.07 (114 URL) — sitemap
регенерируется, но остаётся однострановым. Company pages, salary-страницы, категорийные и гео-хабы,
editorial — отсутствуют как классы. ~95% брендового US-трафика: «globalwork.ai reviews», «global work» и т.п.
Узкое место, ограничивающее масштабирование до 100K+
Не генерация URL — она уже работает. Ограничивают три слоя:
- Пустой initial HTML (главный технический блокер). SAMPLE n=382 raw / 52 rendered
Медиана видимого текста в raw HTML — 9–13 слов при 350–550 КБ Next.js Flight payload; после рендеринга — 1 700–1 950 слов.
Внутренних ссылок в raw HTML — 0 (все ~68 появляются после JS); JobPosting schema — 0% в raw, 100% в rendered.
Каждая из будущих 100K+ страниц будет зависеть от второй волны рендеринга Google, а обнаружение страниц — только от sitemap,
потому что ссылочного графа для краулера не существует. Для Google for Jobs клиентская JobPosting — прямой риск непопадания.
- Короткоживущие вакансии без evergreen-слоя (главный стратегический блокер). FACT
93,4% sitemap — вакансии с коротким жизненным циклом: 16,4% выборки job-URL из sitemap уже отдают 404
SAMPLE n=140; страница умирает раньше, чем накапливает сигналы. Стабильных сущностей,
которые аккумулируют ссылки и позиции годами (компании, роли+salary, гео-хабы), — нет.
- Гигиена индексации. FACT/SERP lastmod — 0% из 31 303 URL (у RemoteRocketship 99,7%,
у RobertHalf 100%); в выдаче держатся страницы с тайтлами «May 2026» при актуальном июле; дублирующий маршрут
/en/search/job/{uuid} отдаёт 200/self-canonical/index (два индексируемых URL на одну вакансию);
в индексе служебные субдомены label. и vpn.; в тайтле главной незаполненный плейсхолдер «[500k]+»;
индексируются страны (Switzerland, Peru), которых нет в sitemap — карта URL, canonical и sitemap рассинхронизированы.
Есть ли проблемы с индексацией и в чём причина
Индексация как таковая работает: ~13 200 страниц в индексе site:, канониклы чистые
(100% self-canonical, noindex не обнаружен n=359), у конкурентов Google держит
155–585 тыс. страниц той же ниши. Настоящая проблема — страницы в индексе не ранжируются: контент виден
Google только после рендеринга, страницы не связаны ссылками, шаблоны различаются в основном H1/title
(«500+ jobs found» одинаков на 10 из 12 проверенных листингов при разных реальных счётчиках в title), а 93%
URL умирают раньше, чем набирают сигналы. Показательно: у всех трёх конкурентов индекс в 1,9–2,6 раза БОЛЬШЕ
их sitemap (страницы живут годами), у globalwork — МЕНЬШЕ (42%).
ЧАСТЬ 2Конкурент: RemoteRocketship (+ бенчмарки FlexJobs и RobertHalf)
Почему именно он: сопоставимый авторитет (DR 53 vs 49, 4 000 vs 490 доноров) — то есть его результат
объясняется архитектурой, а не брендом: 48,8K US-визитов, 99% трафика небрендовое, ~500 тыс. страниц в индексе.
Откуда трафик и как устроен подход Ahrefs top-slice sitemap
| Кластер | URL-паттерн | Стр. в sitemap | Трафик (срез) |
| Локализованные role/attribute листинги | /{cc}/jobs/{role_or_attr} | 6 094 | 26,4K |
| Country × role | /country/{country}/jobs/{role} | 6 685 | 14,7K |
| Глобальные role pages | /jobs/{role} | (в 6 094) | 10,9K |
| Company pages (+локализованные) | /us/company/{company} | 6 509 | 8,4K |
| Гео-хабы: страны, штаты | /country/{c}, /us/state/{st} | 208+ | 8,3K |
| Role × seniority/attribute | /jobs/{role}/{attr} | — | 4,7K |
| Вакансии (company-scoped) | /us/company/{c}/jobs/{slug} | 169 724 (90%) | 2,4K |
Ключевые механики: (1) вакансия живёт «внутри» компании — canonical
/us/company/{c}/jobs/{slug}, preview-маршрут /publicjobs/ закрыт noindex;
(2) каждая страница — узел entity-графа: 250–320 внутренних ссылок в исходном HTML
(120–177 на роли, ~85 на компании) Wayback n=11; (3) контент рождается на сервере —
2 000–2 700 слов в raw HTML; (4) freshness виден: lastmod 99,7%, живые счётчики в сниппетах
(«92528+ jobs» US, «11.692» DE); (5) интентовые страницы под реальный спрос:
/us/jobs/entry-level, /jobs/data-analyst/internships, /gb/jobs/no-degree-required.
Две идеи для адаптации в globalwork:
1. Entity-слой «компания ↔ роль ↔ география» поверх вакансий. Company pages + role hubs со ссылками в обе
стороны и вакансиями внутри — вместо 29K изолированных job-страниц. Подтверждено дважды: у RR 6,5K company pages
дают 8,4K трафика; у FlexJobs company pages — 76% всего sitemap (57,5K стр., 41K трафика в срезе).
2. Живые данные как контент шаблона. Реальные счётчики вакансий (вместо «500+ jobs found» на каждой странице),
freshness-даты, lastmod в sitemap, seniority/attribute-модификаторы под подтверждённый спрос.
Бенчмарки для следующего горизонта: RobertHalf показывает самую денежную механику ниши —
location×role листинги (154K трафика / $77K value в срезе) и evergreen role/salary-профили
(/us/en/job-details/{role}/{city}, 64,6K / $52K): salary-слой — этап 2 для globalwork, когда появятся
достоверные зарплатные данные. FlexJobs — эталон таксономии role/category × geo × attribute и внутренней
перелинковки (559 keywords на 1 000 sitemap URL — максимум ниши). Копировать их буквально не нужно
(DR 83–84 и другая бизнес-модель у RH), но интент-архитектура переносима.
ЧАСТЬ 3Топ-3 действия на первые 60 дней
1. Недели 0–2: гигиена индекса и sitemap — снять «красные флаги», получить baseline
- Что делаем
- Чиним плейсхолдер «[500k]+» в title главной; закрываем label./vpn. субдомены (noindex + auth);
убираем статичный месяц из title или гарантируем обновление; канонизируем
/en/search/job/{uuid} на основной
маршрут; убираем 404 из sitemap (410/redirect для истёкших вакансий); добавляем честный lastmod;
сегментируем sitemap по шаблонам; синхронизируем страны (CHE/PER и др.) между сайтом, sitemap и canonical;
подключаем GSC и снимаем baseline по каждому шаблону: Submitted / Indexed / Impressions.
- Почему
- Дёшево (1–2 недели без больших инженерных затрат), убирает утечки crawl budget и репутационные
риски (VPN-логин в индексе), а baseline по когортам — предусловие для оценки всего остального.
- Эффект и метрики
- Служебные субдомены и stale-тайтлы исчезают из выдачи; доля 404 в sitemap <1%;
по каждому шаблону известен GSC-статус. Метрики: GSC Page Indexing по когортам, Crawl Stats, доля URL с lastmod.
- Риски
- Минимальные; главное — не удалить рабочие страницы стран, а внести их в карту.
2. Недели 0–6 (параллельный инженерный трек): контент и JobPosting — в initial HTML
- Что делаем
- SSR/пререндер основного контента листингов и вакансий: H1, описание, job-карточки,
внутренние ссылки и JobPosting/FAQ schema должны присутствовать в HTML-ответе сервера. Сокращаем Flight payload
(сейчас 350–550 КБ с глобальными переводами/onboarding-данными в каждой странице).
- Почему
- Это предусловие пилота №3: сейчас 100% страниц для первого прохода краулера — пустая оболочка
(9–13 слов, 0 ссылок), и любые улучшения шаблонов Google просто не увидит без рендеринга. Контрпример-доказательство —
RemoteRocketship с контентом в raw HTML при том же DR. Клиентская JobPosting блокирует стабильное попадание
в Google for Jobs — бесплатный канал для job-сайта.
- Эффект и метрики
- Доля страниц с контентом в raw HTML → 100% (замер нашим краулером); появление
в Google for Jobs; ускорение индексации новых URL. Метрики: word count/links в initial HTML по шаблонам,
GSC Crawl Stats, показы Google for Jobs, время «публикация → индексация».
- Риски
- Инженерная ёмкость — раскатывать пошаблонно, начиная с role listings; следить за TTFB.
3. Недели 2–8: пилот entity-слоя — role × geo, следом company pages
- Что делаем
- Не расширяем 29K вакансий. Пилот: 50–100 ролей × 10–20 географий с реальным inventory
(+10–30 attribute-комбинаций: entry-level, part-time, internship, no-degree). Data-rich шаблон: живой счётчик и
свежие вакансии, уникальное описание роли, top employers, skills, salary-диапазон при наличии данных, related
roles/locations, breadcrumbs, сквозная перелинковка role ↔ geo ↔ job. Страницы с 0–4 вакансиями — noindex или
не создаём (quality gate). Сразу за пилотом — company pages для работодателей с достаточным числом активных
вакансий (у globalwork 1B+ postings в базе — сырьё уже есть). Расширение дальше — только по opportunity score
(спрос × inventory × конкуренция ÷ effort) и результатам когорт.
- Почему
- Все три конкурента зарабатывают органику на стабильных сущностях; у RR они работают при равном
DR. Существующие 1 248 role pages с 1 ранжирующейся страницей — это не приговор шаблону, а повод перезапустить его
правильно (contentful + linked + gated) и измерить когортой, прежде чем строить 100K+.
- Эффект и метрики
- Рост non-brand keywords и ranking pages по когорте (сейчас 15 non-brand keywords на
домен); цель когорты — ≥60% valid indexed, ненулевые impressions, 0 thin-страниц. Метрики: GSC по когорте
(impressions/clicks/позиции), Ahrefs keywords по шаблону, доля страниц ниже порога inventory.
- Риски
- Related-блоки и salary — только на реальных данных, не generic AI-текст; жёсткие kill-критерии
для слабых комбинаций, иначе повторим текущую ситуацию в большем масштабе.
После 60 дней (очередь): salary/role-профили по методологии RobertHalf на собственных данных
(25–50 ролей со статистически защищаемой выборкой) → международная матрица country×role по модели RR → editorial-слой
как поддержка entity-графа и источник ссылок/AI-цитирований → масштабирование выигравших когорт к цели 150K+ страниц.
Дополнительно: экономика и позиция в нише (за рамками задания)
Сводные метрики (US, июль 2026)
| globalwork | flexjobs | remoterocketship | roberthalf |
| DR / ref. domains | 49 / 490 | 84 / 26,3K | 53 / 4K | 83 / 17,5K |
| US organic, визитов/мес | 1,8K | 364,2K | 48,8K | 439,7K |
| Non-brand трафик | 1,3K | 278,3K | 73,2K | 502,2K |
| Индекс Google (site:) | ~13,2K | ~155K | ~500K | ~568–585K |
| URL в sitemap | 31,3K | 75,7K | 189,6K (167,5K уник.) | 304,6K |
| Keywords / 1000 sitemap URL | 1,1 | 559 | 83 | 269 |
| AI Overviews, упоминаний | 5 | 4,4K | 644 | 17K |
| Paid traffic (расход/мес) | 118K ($29,3K) | 1,9M | 1,6K | 103K |
Структура sitemap: ставка каждого игрока FACT
| Класс | GW | FJ | RR | RH |
| Вакансии (короткоживущие) | 93% | 1% | 90% | 4% |
| Company pages | 0 | 57,5K | 6,5K | — |
| Role/category/geo листинги | 2,1K | 14,8K | 12,0K | 128,6K |
| Salary / role-описания | 0 | — | — | 150,4K |
| Editorial / контент | 0 | 1,1K | 1,2K | 12,5K |
| lastmod | 0% | 1,1% | 99,7% | 100% |
Три конкурента — три разные модели, но органика у всех живёт на stable-страницах.
globalwork — единственный со ставкой почти целиком на короткоживущие вакансии.
Экономический аргумент для бизнеса: globalwork покупает ~118 тыс. визитов/мес за ~$29,3 тыс.
(соотношение paid:organic = 56:1). Органика конкурентов на тех же интентах оценивается Ahrefs в $205K (FlexJobs) и
$472K (RobertHalf) эквивалентного PPC-бюджета в месяц. SEO-функция здесь окупается замещением уже существующих
рекламных расходов, а не гипотетическим будущим трафиком.
KPI-рамка для управления programmatic (еженедельно, по когортам шаблонов)
Submitted / Indexed / Canonical по когорте · страницы с impressions и non-brand keywords · Top-10 ·
трафик и конверсии на 1 000 sitemap URL · доля zero-job и stale страниц · median jobs per listing · crawl waste ·
assisted applications · referring domains и AI Overview-цитирования evergreen-страниц.
Ограничения
Ahrefs — модельные оценки (не GA/GSC); Top Pages exports — top-slice, суммы по шаблонам — нижние
границы. site: — приблизительный внешний сигнал, включает субдомены (у roberthalf замер без www;
оценка колебалась 568–585K между снятиями). Без GSC статус индексации не подтверждён — формулировки «в индексе /
не ранжируется» опираются на site: и Ahrefs. Crawl globalwork — стратифицированная выборка (382 raw / 52 rendered,
seed 42), не полный обход. RemoteRocketship и FlexJobs закрыты WAF для серверного доступа: страницы RR анализированы
по Wayback-снапшотам (2024–2026), sitemap обоих скачаны через браузерную сессию. Замеры разнесены на 20–21.07 —
sitemap globalwork за это время регенерировался (появилась hybrid-ветка, ±150 URL по листингам).