Ошибки SEO 101: засовываем сайт в поисковик
«Ты будешь привлекать аудиторию в блог через органику?» – как-то раз меня спросил коллега. «Да, как минимум», – неуверенно ответила я.
Органика – это когда люди приходят к тебе на сайт со страниц поисковика.
Когда я полезла проверять присутствие своего блога в Гугле и Яндексе, я не нашла там ничего, кроме начальной страницы.
Ожидаемо. Никто не ссылался на мой блог из «Внешнего Интернета». Пришло время немного поработать над SEO, благо, я знала с чего начинать.
Спустя пару недель я полезла посмотреть выхлоп от своей работы.
Ничего нового.
0 новых проиндексированных страниц.
В чем проблема и как я с ней боролась, расскажу дальше.
Пререквизиты – с чего начинала
У меня статический блог на Next.js, я получаю готовую HTML-верстку. Также я изначально добавила title и description1 в каждый пост. Кроме этого, организовала адаптивную верстку2, чтобы статьи легко открывались с мобильного устройства.
Сюда же добавила микроразметку, чтобы посты хорошо выглядели при размещении ссылки, например, в Телеграм-канале.
Решила пропустить шаги с созданием Sitemap и robots.txt, так как не была уверена, что это актуально для такого маленького ресурса.
Моя страница уже была проиндексирована – я ссылаюсь на нее в своем гитхабе.
Так как никто никогда не упоминал мой блог в Интернете, кроме меня в моем телеграм-канале, я решила самостоятельно сообщить поиску Google что у меня теперь много новых страниц.
Как попасть в Google?
В статье о поисковом движке Google есть раздел о том, как страницы вообще попадают в выдачу. Ларри Пейдж и Сергей Брин визуализировали страницы интернета как большой граф3, который связан ссылками между собой. Соответственно, чтобы положить страничку в поисковик, надо чтобы бот нашел на неё ссылку.
Ссылки ищут специальные боты – краулеры. Они сканируют уже известные странички и добавляют новые ссылки в некую очередь.
Кто запустил краулеров на первые страницы? Про это есть увлекательная статья The Birth Of Google, в которой рассказывается, как сайт Стенфорндского Университета стал первой ссылкой, которую нашел Google, а дальше все строилось на том, что самые важные ресурсы – обычно самые цитируемые.
Могут ли краулеры воспринимать SPA без SSR4? Какие-то могут. Сейчас мы рассматриваем Гугл в качестве примера, и у них есть целая страничка с советами. А вот у Яндекса краулинг страниц, срендеренных JavaScript'ом, пока в бете.
Я открыла Google Search Panel, связала свой домен с учеткой с помощью TXT-записи в DNS и закинула парочку URL'ов на переиндексацию. Вот-вот меня должны были навестить краулеры.
Однако, спустя несколько дней, ничего не изменилось.
Ритуальные танцы для краулеров
Пройдя через отрицание-гнев-депрессию, я решила обратиться к документации Гугла.
Я положила в корень сайта Sitemap. Тем более, в гайде Google прямо указано, если ресурс новый, малосвязанный внутри, можно помочь краулерам обнаружить контент быстрее.
Протокол довольно очевидный. Примерная схема карты сайта выглядит так:
urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://example.com</loc>
<lastmod>new Date(...)</lastmod>
<url>
</urlset>
</
Ссылку на sitemap.xml
я разместила в файле robots.txt.
Это тот файл, который поисковые роботы парсят в первую очередь. Так они узнают, какие страницы лучше не навещать, чтобы не создавать
лишнюю нагрузку на сервер.
Sitemap: http://example.com
User-agent: *
Allow: /
На каждую страницу я также добавила каноническую ссылку. Вероятно, когда я прикручу к блогу поиск или пагинацию, роботы будут пытаться просканировать параметризованные страницы как новые. Нужно дать ботам понять, что это не дубли, а те самые уже знакомые страницы.
...
{&& <link rel="canonical" href={url} />
url
}...
Я заметила, что персональная панель поиска Гугла обновляется примерно раз в четыре дня. Cкормила ей ссылку на карту сайта и села ожидать.
Спустя 4 дня я увидела изменения в графике.
Все новые страницы получили статус «Обнаружена, не проиндексирована», в переводе: «Discovered – not indexed». Роботы навестили мою карту сайта и считали оттуда ссылки. И решили, что им туда не нужно.
Переключаем внимание
На сайте Google описывается только одна причина такого статуса у страниц:
Это сообщение означает, что мы нашли страницу, но пока не добавили ее в индекс Google.
Обычно это объясняется тем, что роботу Google не удалось просканировать сайт, поскольку это могло привести к чрезмерной загрузке ресурса, и сканирование было перенесено на более поздний срок.
Якобы роботы подумали и поняли что не хотят нагружать мой сайт, и он молодой, и надо подождать.
Однако, 23 ноября этому блогу исполнился год. А значит, молодость ресурса под вопросом.
Я решила впасть в режим ожидания на недельку-другую и навестить пока отечественный поисковик – Яндекс.
Вебмастер Яндекса
У Яндекса есть собственная панель для владельцев сайта – Я.Вебмастер. По аналогии, я подключила домен через TXT-запись и скормила сайту карту блога.
Также, в панели можно предложить урлы для сканирования целой пачкой. Так я и поступила.
Десять лет назад Яндекс был впереди планеты всей по сканированию русскоязычного контента, и в этот раз я понадеялась, что краулеры родного поисковика не так нагружены работой, как у Гугла.
На следующий день после принудительного добавления страниц в Вебмастер, все они были просканированы. Я ликовала. По крайней мере, в будущем трафик будет приходить отсюда.
Однако, через день, так же быстро, Яндекс пометил все словами «Малоценная или маловостребованная страница».
Контент виноват?
После изучения официальных источников, реддита, каждого SEO-форума, я все еще не понимала смысла пометки «Discovered – not indexed» и «Малоценная или маловостребованная страница».
С одной стороны, Гугл и Яндекс в один голос рассказывают, что не все страницы должны быть в поиске. Только лучшие из лучших. Пишите лучше, интереснее и релеватнее, говорили они.
Контент должен быть человечным и уникальным. Так ли это? Такое я уже слышала на своих старых работах, где мне приходилось писать тонны текста, который был заточен под поисковики.
Как я работала на SEO-компанию
В студенческие годы мне не хватало денег, поэтому я хваталась за разные подработки.
Больше всего меня впечатлило копирайтерство на бирже Адвего. Ты не видишь людей, люди не видят тебя, сиди и пиши что угодно. Технические задания дотошно указывали, сколько ключей5 нужно вставить в текст и в каком количестве.
После 2014 года я закончила бакалавриат и вошла в большой мир поиска работы. Навыков у меня было не так много: теоретические знания с универа, какие-то нишевые случайные халтурки и ОН – КОПИРАЙТЕРСКИЙ СТАЖ.
Я оформила резюме и пару лет проработала на разные компании, занимаясь SEO-копирайтингом и контекстной рекламой.
На первой работе после универа, с 10:00 до 19:00, я постоянно редактировала чужие копирайтерские тексты. Моей задачей было прочесать все на предмет перенасыщенности одинаковыми фразами, исправить ошибки и проверить уникальность.
Для генерации ключевых фраз использовался, например, Wordstat. Он работает и сейчас, хотя дизайн там довольно старый.
Какие-то сайты росли как на дрожжах. Другие – открывали судебные разбирательства с нашей компанией. В общем, было весело.
Никто не имел четкого представления, как поисковики ранжируют сайты. Почему так? Ответ прост: поисковики не хотят, чтобы кто-то использовал выдачу во имя собственных интересов.
Искусственный Интеллект, продаваны и Google
Немного о продаванах: весь конец ноября в твиттере вирусился парень, который предлагал решение о быстром заработке с использованием AI. Его способ:
- найти карту сайта соперника (желательно с человекопонятными URL);
- спарсить из списка названия статей;
- загнать их в AI-генератор статей Byword;
- нагенерировать сотни статей на темы из списка;
- запостить их на своем сайте.
Результат он описывает в своем аккаунте на скринах: траффик стремительно растет вверх.
Спустя неделю, Google наконец-то пессимизировал сайт в выдаче по многочисленным жалобам.
Каждый раз, когда оптимизаторские гипотезы подтверждаются и начинают применяться массово, пострадавший поисковик начинает тюнить свои алгоритмы, чтобы подлечить выдачу.
Самая темная ночь
Конечно, инстиктивный порыв – прогнать свои тексты через инструмент и посмотреть, какие ключевые слова можно туда всунуть.
Но я так не хочу.
Мои первые посты в блоге были очень короткие, но сейчас-то я пишу намного больше. Я решила поресерчить, что пишут пользователи реддита и разработчики поиска.
Я проштудировала все советы из интернета:
- проанализировала через Google Search Panel возможность индексации;
- проверила лайтхаусом, все ли в порядке со скоростью загрузки;
- посмотрела, как роботы видят страницу в разных разрешениях;
- проверила отображение метатегов на всех страницах.
Все ок; Все индексируемо. Как будто мой ресурс пока все еще молод для индексации.
В статье 2022 года Pandu Nayak рассказывает о том, какие успехи случились после внедрения AI в алгоритмы Google. А успехи такие: теперь поисковая машина понимает не только прямой смысл написанного, но и контекст, намерения и даже тон.
Но в то же время, в интернете полно страниц на которых информация повторяется/сгенерирована с помощью AI, как в примере выше.
Чем я хуже? Стоит ли просто задвинуть в далекий угол идею с продвижением через органику?
Почти тогда же я обнаружила Google Indexing API.
Перед рассветом – Google Indexing API
Краулеры парсят сайт, но для это им требуются серверные мощности. Поэтому Google релизнул специальное API, через которое можно сообщать поиску, что у тебя появилось кое-что новенькое.
Подобное API появилось также и у Яндекса.
Однако, Google Indexing API предназначено для постинга трансляций и предложений о работе.
То есть, для контента, который быстро устаревает.
Обычные пользователи с реддита советуют использовать именно его для быстрого индексирования сайта, несмотря на ограничения.
Я решила попробовать проиндексировать с его помощью несколько страниц, чтобы посмотреть на результаты.
Настраиваем
В гайде по настройке API есть информация, как получить JSON-ключ сервис-аккаунта, от имени которого будет делаться запрос.
Если кратко:
- создаем сервис-аккаунт в облаке Google как JSON-файл;
- скачиваем его на свой компьютер;
- присваиваем сервис-аккаунту права Создателя через Google Search Console;
- пишем небольшой node-скрипт, который будет использовать данные из JSON-файла.
Пишем получение ключа:
const jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
"https://www.googleapis.com/auth/indexing"],
[null
);
jwtClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
}// ... здесь будем посылать ключ
});
В оригинальном гайде показано, как отправить единичную ссылку. Однако, для чистоты эксперимента, мне необходимо было
отправить пачку ссылок. Я подсмотрела решение
с отправкой ссылок с помощью multipart
.
Вот что мы кладем внутрь блока с авторизацией:
jwtClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
}
const items = batch.map(line => {
return {
'Content-Type': 'application/http',
'Content-ID': '',
:
body'POST /v3/urlNotifications:publish HTTP/1.1\n' +
'Content-Type: application/json\n\n' +
JSON.stringify({
: line,
url: 'URL_UPDATED'
type
})
};
});
const options = {
: 'https://indexing.googleapis.com/batch',
url: 'POST',
method: {
headers'Content-Type': 'multipart/mixed'
},: { bearer: tokens.access_token },
auth: items
multipart
};request(options, (err, resp, body) => {
console.log(body);
});
});
Запускаем команду в консоли:
node index.js
Если скрипт вернул ошибку (скорее всего, это будет 403), значит нужно вернуться к гайду и проверить настройку прав сервис-аккаунта.
После того, как я получила ответ 200, через несколько минут я направилась в Google Search Panel смотреть на результаты.
Новый статус
Страницы, которые я кинула в Google Indexing API изменили свой статус с Discovered – not indexed на Crawled – not Indexed.
Это значит, что краулеры наконец-то посетили мои ссылки, а не просто обнаружили их наличие. Но решили не класть его в индекс. СНОВА.
После быстрого поиска по интернету, я опять прочитала те же самые статьи про улучшение качества контента, что контент нужно оптимизировать не под движки поиска, а под человека, и так далее, и тому подобное.
На этой ноте я сдалась и пошла спать.
И на утро обнаружила долгожданную зеленую галочку около тех трех страниц, что я закинула в сервис.
И, что самое интересное, некоторые страницы моего блога на следующий день заехали в индекс Яндекса. Совпадение? Или, если твои «малоинтересные» страницы интересны Гуглу, то не такие уж они и «малоинтересные».
Выводы
После нескольких недель упорной борьбы с поисковиками мне все-таки удалось добиться первых результатов. Какие-то рекомендации от меня:
- провести техническую работу над сайтом – как в гайде Google;
- связать сайт с Google Search Panel и Я.Вебмастер;
- продолжать создавать контент;
- в крайних случаях использовать Google Indexing API.
Конечно, работы еще много, мой собственный контент в блоге далек от идеала.
Что нужно пофиксить:
- добавить все разделы сайта в sitemap.xml;
- дополнить карту полями из протокола;
- добавить в статьи ссылки на предыдущие статьи, чтобы повысить внутреннюю связность;
- сделать 301 редирект с */articles на */posts 😮💨;
- сделать корневую страницу для тегов.
Наверное, нет смысла медитировать над статистикой индексации. Всему свое время.
На этом все, удивимся в следующем посте.
Footnotes
-
<title/>
и<meta name="description" content="***">
– базовые теги, которые использует поисковик для построение сниппетов поиска.<title/>
также используется в названии вкладки. ↩ -
Адаптивная верстка - верстка для разных размеров экрана, планшета и телефона. ↩
-
Граф – узлы (точки), соединенные ребрами (линиями). Простой пример графа: карта метро. ↩
-
SPA – Single Page Application, приложение, которое динамически перестраивает контент внутри себя. Вся логика происходит внутри JS-файлов, а точка входа – один единственный HTML-файл. В классических сайтах точек входа много. SSR – Server Side Rendering, сервер принимает логику из JS и выплевывает HTML-код прямо во время использования сайта. ↩
-
Ключи/keywords – повторяющиеся словосочетания на определенную тему. ↩