Содержание
Введение
Доброго времени суток. В этой статье я хочу дополнить первую часть рассказа о том как же донести поисковику информацию о своём сайте. Ниже будут рассмотрены такие темы как IndexNow, security.txt, schema.org.
IndexNow
IndexNow - система разработанная и выпущенная в октябре 2021 года компаниями Майкрософт и Яндекс. Была создана чтобы ускорить процесс индексации сайтов путём запроса по API, вместо ожидания прохождения ботами. Удобно правда?
Но есть и минусы. Первый касаемо гарантий индексации, их нет. Второй в том что самая популярная поисковая система в мире google до сих пор не имеет такого api, вместо него на Google search console есть кнопка позволяющая отправить страницу на индексацию (свой аналог indexapi но только с ui). Есть обходные пути через сторонних ботов, но удобство и безопасность никто не гарантирует
Рассмотрим простой пример как отправить сайт на индексацию через API Yandex:
Создаём ключ из символов
a-z,A-Z,0-9,-, кодировкой utf-8 и длиной от 8 до 128Размещаем в текстовом файле его по адресу и внутри файла также вписываем ключ.
https://example.com/<key>.txt. Где<key>- сгенерированный ключДалее нам надо отправить нашу страницу или несколько на индексацию
Для одной страницы можно воспользоваться GET. Запросы в примерах отправляются через curl:
curl -G "https://yandex.com/indexnow" \ --data-urlencode "url=https://pavlusha.me" \ --data-urlencode "key=DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji" \ --data-urlencode "keyLocation=https://pavlusha.me/DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji.txt"
Но если вы хотите несколько, то нужно использовать POST (подробнее):
curl -X POST "https://yandex.com/indexnow" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "host": "pavlusha.me", "key": "DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji", "keyLocation": "https://pavlusha.me/DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji.txt", "urlList": [ "https://pavlusha.me" ] }'

Как видно это удобный инструмент, который может понадобиться когда мы хотим чтобы описание страницы обновилось или новая страница попала в поиск как можно быстрее (к примеру пасхальная или новогодняя). Также удобство такого способа в том что мы может подключить это к нашему приложению, что позволяет писать CMS, а после создания и деплоя страницы быстро отправлять их в поиск.
Стоит упомянуть что bing и yandex не гарантируют вам индексацию страницы. это написано в их документации. По внутренним критериям индексации может не пройти.
Schema.org
Schema.org - это описание сущностей вашего сайта, его предназначения и дополнительная информация. К примеру если на сайте в схеме будет указан локальный бизнес, то ваш сайт может оказаться в топ 1 в регионе по поиску где вы находитесь. Таким образом клиентам, которые нашли вас в интернете, в той же локации может захотеться прогуляться в оффлайн магазин.
Пример schema
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "LocalBusiness", "name": "Company name", "image": "https://example.com/logo.png", "@id": "https://example.com", "url": "https://example.com", "telephone": "+7-495-123-45-67", "address": { "@type": "PostalAddress", "streetAddress": "Улица Пример, 10", "addressLocality": "Москва", "postalCode": "101000", "addressCountry": "RU" }, "geo": { "@type": "GeoCoordinates", "latitude": 55.7558, "longitude": 37.6173 }, "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "09:00", "closes": "18:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": "Saturday", "opens": "10:00", "closes": "15:00" } ], "priceRange": "$$", "sameAs": [ "https://www.facebook.com/example", "https://www.instagram.com/example", "https://vk.com/example" ] } </script>
Данный скрипт вставляется чаще всего в `<head>` страницы как и большинство SEO тегов, к примеру OpenGraph. Полностью заполненный такой профиль помогает поисковиками таким как google увидеть к примеру рабочие часы, а локация как раз будет сопоставлятся с вашей если Вы того разрешите и с большей вероятностью эта организация (магазин и т.п.) окажется в топах выдачи.
Пример сайта в котором указана schema


Сайт указан в google бизнес аккаунте и после того как мы создали схему для него с отзывами они также отражены в карточке о компании
Обнаружить какие сущности есть на сайте или провалидировать schema можно на официальном сайте https://validator.schema.org/ В данном примере на странице со скачиванием приложения я имею aggregateRating который отражает рейтинг приложения. Как видно в гугл это отражается в виде отзывов отображаемых на странице компании или прямо в поисковой выдаче.

В интернете можно найти утверждения что schema.org уже себя исчерпал и не требуется, особенно сейчас, когда существует ИИ. Выскажу мнение что далеко не все предпочитают ИИ стандартному поиску и замене браузера на своих устройствах, а учитывая региональны особенности всё же многие остаются с google и яндекс, поскольку для их работы не нужен VPN.
Security.txt
Security.txt - это текстовый файл который мы можем разместить на нашем домене (к примеру https://example.com/.well-known/security.txt) для того чтобы знать куда отправить информацию об уязвимостях на сайте.
Все поля данного файла не обязательны, кроме Contact (минимум 1). Такой формат security.txt описывает стандарт. Сам стандарт описан в RFC 9116.
Внедряется он постепенно. Cloudflare уже начал оповещать пользователей об отсутствии данного файла в своей сводке по безопасности в панели. Пример полного файла:
Contact: mailto:security@example.com Contact: https://example.com/security-contact Contact: tel:+1-555-555-5555 Expires: 2024-12-31T23:59:59Z Encryption: https://example.com/pgp-key.txt Signature: https://example.com/.well-known/security.txt.sig Policy: https://example.com/security-policy Preferred-Languages: en, es, fr Canonical: https://example.com/.well-known/security.txt Hiring: https://example.com/jobs/security Acknowledgments: https://example.com/security/hall-of-fame
Кратко описание полей:
Contact: контакты для связи, может иметь множество записей. (минимум 1 должен быть указан)
Expires: дата до который эта информация в файле актуальна.
Encryption: ссылка на ключ шифрования.
Signature: подпись файла.
Policy: политика безопасности.
Preferred-Languages: язык который лучше использовать для связи.
Canonical: канонический URL (оригинал сайта)
Hiring: вакансии для исследователей безопасности.
Acknowledgments: сайт благодарности для исследователей безопасности, сообщивших об уязвимостях.
Подпись файла security.txt
Для чего это надо? Это подтверждает, что файл не подделан и исходит от владельца сайта. Без подписи любой может создать фейковый security.txt. Подпись создаётся с помощью криптографических инструментов.
Пример подписи с использование GPG (GNU Privacy Guard)
Перед тем как создавать ключ убедитесь, что у вас установлен GPG. Например, на Linux: sudo apt install gnupg, на macOS: brew install gnupg (homebrew).
Если до этого у вас не было GPG то создайте ключ шифрования через gpg --gen-key

При использовании команды потребуется ввести имя и почту для идентификации пользователя (чья эта подпись)

Вводим или пропускаем фразу для защиты данного ключа (эта фраза используется при использовании подписи). После будут сгенерированы файлы и доступны в системе. Пример MacOS /Users/<user>/.gnupg
Экспорт публичного ключа может быть выполнен через gpg --armor --export <email> > pgp-key.txt
Создание подписи файла
Создаём security.txt.
Contact: mailto:pavel.zavadski@pavlusha.me Encryption: https://pavlusha.me/pgp-key.txt Signature: https://pavlusha.me/.well-known/security.txt.sig Preferred-Languages: en, ru Canonical: https://pavlusha.me/.well-known/security.txtПример файла.
Заполняем его.
Подписывается приватным ключом
gpg --armor --detach-sign --output security.txt.sig security.txtФлаг --armor создаёт подпись в текстовом формате ASCII.
Флаг --detach-sign создаёт отдельный файл подписи (не встраивает подпись в сам файл). Это как раз наша подпись
Флаг --output позволяет указать точное название файла. По стандарту он может быть
security.txt.ascилиsecurity.txt.sig
Получается файл .sig, который выкладывается по указанному URL
https://pavlusha.me/.well-known/security.txt.sig.Исследователи могут проверить подлинность security.txt (
https://pavlusha.me/.well-known/security.txt) , загрузив .sig (https://pavlusha.me/.well-known/security.txt.sig) и публичный ключ (из "Encryption" -https://pavlusha.me/pgp-key.txt)Импортировать публичный ключ
gpg --import pgp-key.txtПроверка security.txt
gpg --verify security.txt.sig security.txt

gpg --verify security.txt.sig security.txtЗаключение
Спасибо всем кто прочитал статью до конца. Надеюсь вы смогли узнать что-то новое для себя.
Как видно, современные поисковые системы предлагают всё новые способы чтобы рассказать о вашем сайте, помимо robots.txt и sitemap.
Использование IndexNow позволяет ускорить индексацию новых страниц путём удобного API, а schema.org помогает лучше структурировать информацию для поисковиков и улучшить видимость в результатах путём добавления метаданных к страницам, security.txt предоставляет контакты для исследователей уязвимостей.
Надеюсь, эта статья была полезной и поможет вам сделать ваш сайт более видимым, безопасным и удобным как для пользователей, так и для поисковых систем.
Послесловие
С каждым днём AI всё чаще внедряется в приложения. А основные его игроки такие как ChatGPT релизят всё новые функции. Одна из таких это search которая делает парсинг сайтов. Думаю что тема интересная, поэтому прошу поучаствовать в опроснике :) Хотелось бы сделать сравнение крупных моделей и узнать что они видят
