Я пытаюсь настроить Discourse так, чтобы он полностью отдавал JS-приложение Googlebot — почти у цели.
Благодаря @pfaffman и выполнению кода ниже (в консоли Rails) мне удалось добиться того, что JS-приложение отображается в Chrome при подмене user-agent на googlebot или googlebot smartphone:
У Bing ситуация похожая, но у них контент отображается. Я полагаю, что Bing показывает контент, потому что его краулер не является «мобильным». Соответствующий пост здесь от @sam.
Согласно @david и этому посту, похоже, что виновником является «определение возможностей» (feature detect).
Я с осторожным оптимизмом полагую, что существует простое решение. Каждые 10–20 попыток при использовании инструмента Googlebot корректно отрисовывает приложение.
Моя теория: поскольку Googlebot, как известно, не загружает все ресурсы при доступе к странице, именно тот JS (который содержит определение возможностей и вызывает откат) не загружается, и поэтому страница выглядит корректно.
Итак, в заключение: как можно отключить определение возможностей для Googlebot (или, если проще, для всех краулеров/ботов)?
Редактирование: На случай, если я ошибся в терминологии: когда в Meta упоминается «определение возможностей» (feature detect), имеется ли в виду определение браузера? (возможно, с файлами вроде browser-detect.js и другими зависимостями)
Или же «определение возможностей» — это общий термин для того, что делает Discourse, пытаясь понять технологии, с помощью которых осуществляется доступ к приложению?
Есть ли причина, по которой вы хотите отдавать JS-версию Googlebot? Google, скорее всего, не сможет найти пагинированные списки, включая пагинированную главную страницу и темы с количеством постов выше определённого порога. В представлении для бота списки тем доступны для сканирования, но Googlebot, вероятно, не будет активировать бесконечную прокрутку.
Около сентября-октября 2019 года у нас было очень небрежное обновление сайта, и основной сайт сразу же провалился.
Мы так и не восстановились. С точки зрения SEO сайт никогда не был в таком плохом состоянии. Конечно, он не идеален, но мы опережаем некоторых конкурентов на световые годы. Сайты, использующие наши многолетние изображения и тексты, обгоняют нас на несколько страниц. Мы находимся на третьей странице, а они, возможно, на вершине второй.
Я прочитал бесчисленное количество блогов о SEO, посмотрел видео, изучил посты и даже переписывался с Джоном Мюллером (на Reddit).
Самое большее, что я от него услышал, — это то, что проблема может быть в «вопросах качества». Мы значительно улучшили основной сайт с 1 января этого года, но органический трафик даже не дрогнул.
Discourse: Я установил его ещё в 2013 году и забыл о нём. Почти не проверял его трафик.
Если посмотреть на аналитику основного сайта, вы увидите резкое падение в конце графика. Это произошло именно тогда, когда я начал работать над Discourse.
Когда я попробовал prerender.io для Discourse, позиции основного сайта скакали. Иногда они прыгали на 10–15 мест вверх за ночь, а потом возвращались назад. (Я позже прекратил использовать prerender, так как они не могли рендерить главное меню, вход и т. д.).
Согласно тому, что я читал в интернете, это признак того, что Google не знает, где разместить вас в результатах поиска. Они говорят, что нужно лишь немного «больше», чтобы попасть на хорошую сторону алгоритма.
Ничто из того, что мы делали за последние 3 года, не вызвало этих колебаний в выдаче (SERP).
(Использование инструмента Google Disavow, очистка кода, чистые URL, структура сайта, внутренняя перелинковка, социальные сети, контент и т. д.)
Вы можете возразить: почему Google не наказал вас в 2018 году? (Тогда у вас тоже был Discourse на поддомене).
Ну, я думаю, это было сочетание факторов, уникальных для сайта, его истории и профиля ссылок, что привело к падению в конце 2019 года. Похоже, что Google перераспределил ранжирование сайта и, возможно, придал ссылкам Discourse больший вес, чем раньше.
И вот что важно… Я люблю Discourse. Особенно сейчас, когда я больше участвую в Meta, узнал о всех этих крутых плагинах и функциях, о которых даже не подозревал: Wiki, платные подписки, оглавление и теперь чат!!
Поэтому отказ от Discourse сейчас не вариант — слишком много вложено.
Я обдумывал это и готов рискнуть. Я знаю, что это не будет идеально, но, судя по тому, что я читал и смотрел, Google в последнее время стал очень хорош в понимании JavaScript.
Итак, план состоит в том, чтобы отдавать приложение Google, сделать всё возможное для устранения любых возникающих проблем с SEO и насладиться всплеском трафика.
Затем я смогу сообщить о результатах на Meta и аргументировать, что Discourse следует рассмотреть возможность оптимизации JavaScript для Google.
Прежде чем я вообще начал отправлять JS-версию в Google, я экспериментировал с ней.
Я тестировал отправку JS-версии в Google примерно в начале апреля. Помню, что в большинстве случаев она возвращала результат (даже если он выглядел сломанным). Я использовал мобильный инструмент Google.
Мне казалось, что проблема может быть в этом коммите might be this commit — я внес правки в код, перезагрузил сервер, но поведение осталось прежним.
Возможно, кто-то помнит PR или коммит за последние пару месяцев, которые могли изменить определение браузера и/или поискового робота?
Редактирование Извините за все обновления, чем больше информации, тем лучше, верно?
Когда в прошлом месяце я пытался использовать prerender, Google добавил 2000 URL-адресов в охват форума. ( в основном эти URL-адреса )
Все они обслуживались за 0,005 секунды: prerender кэшировал URL-адреса и был готов предоставить их роботу Google. Поэтому робот быстро обработал их все.
Суть в том, что, возможно, поисковый робот «очень привык» к версии без JS и выделил ресурсы для обработки этих 2 тысяч страниц.
Теперь он обращается к сайту именно таким образом, пока не разберётся во всём (и не поймёт, что нужно обращаться с включённым JS). Это лишь теория.
Вы занимались чем-то, что изменило способ индексации Discourse поисковыми системами? Например, пробовали использовать prerender?
Если проверить отчёт о целевых страницах в GA, даст ли он какие-либо подсказки о том, какая часть сайта пострадала?
Что касается основного сайта: если Джон Мюллер предположил наличие проблем с качеством, стоит изучить их документацию по качеству и задать себе вопрос, применимы ли какие-либо из этих пунктов к вашему случаю.
Одной из возможных причин внезапного штрафа является то, что URL-адреса с сайта 2019 года содержат 6 редиректов, тогда как Google рекомендует держать их «менее 5», иначе он может не следовать по ним. Это могло создать у Google впечатление, что старые страницы исчезли из сети.
Хорошо подмечено. И хотя реализация была неидеальной и заняла много месяцев, похоже, Google всё же разобрался, какие страницы соответствуют каким.
Другими словами, со временем я начал видеть всё больше страниц, на которые я сделал 301-редирект с ключевыми словами, использовавшимися на старых страницах.
Это имеет большой смысл. Посмотрю, как это можно реализовать. В настоящее время в Search Console не видно, что сканер часто получает 301-ответы. Кажется, что по мере улучшения ранжирования они начинают чаще следовать за 301-редиректами. Возможно, это причинно-следственная связь без корреляции.
Это вовсе не критика Discourse — я просто не склонен легко верить утверждениям вроде «тысячи пользователей Discourse имеют отличный органический трафик».
Google тоже не станет нам ничего объяснять.
Всегда нужно помнить: Google — это алгоритм, он не смотрит на вещи человеческими глазами.
Хотя обе версии содержат схожий контент, и Google знает, что это не злонамеренное скрытие текста, ему всё равно приходится корректировать ранжирование.
Одна версия выглядит намного лучше, работает лучше и даёт представление о структуре внутренних ссылок. Другая же — просто glorified RSS-лента.
Google не знает, что у меня есть этот стильный форум, работающий на всех [современных] устройствах, действительно поощряющий обсуждение, и являющийся одним из самых крутых творений интернета.
Я всегда люблю использовать ссылку do-follow с текстом «Powered by Discourse» в версии для сканеров (просто потому, что это легко).
Опять же, я понимаю, что это не злонамеренно, но нужно смотреть на это глазами Google. Вы, FlyNumber (не https://community.cloudflare.com/), предоставляете сканерам эту версию с внешней ссылкой, которую вы не показываете обычным пользователям.
Алгоритм вполне может заметить, что происходит, и проигнорировать внешнюю ссылку на домен Cloudflare (поскольку это такой авторитетный домен).
То, что Google применяет к Cloudflare, не обязательно применится ко мне.
Возможно, вопрос в том, платили ли вы за эту внешнюю ссылку, которую вы показываете ботам (но не хотите показывать обычным пользователям?). Это больше о том, как они могут воспринимать сайт. Я не утверждаю, что так и есть, но это возможность, которую стоит исключить.
Если говорить проще: версия для сканеров не имеет меню или какой-либо реальной структуры.
Именно этот контент алгоритм считает тем, что вы хотите показать конечным пользователям.
С очень общей точки зрения, я не вижу, чтобы алгоритм поощрял такое.
Возможно, пришло время начать рассматривать серьёзный пересмотр версии для сканеров. Хотя бы добавить главное меню и рекомендуемые темы внизу.
Интересное обновление: Google добавил «JSON» в список «типов файлов» в статистике сканирования для моего экземпляра Discourse. «Javascript» — это отдельный «тип файла».
Я начинаю думать, что моя логика была ошибочной с самого начала. Это объясняет, почему никто не отреагировал — возможно, ничего не сломано.
Вот свежая статья о том, что для Google нормально показывать белую страницу в скриншоте:
Теперь я вижу «проиндексированный» HTML для главной страницы — это индексированная версия, а не из «Live test». Она показывает полную страницу. Имейте в виду, что Google разобрался с этим, обслуживая полное JS-приложение.
Интересно, что они дошли примерно до 27-го поста на главной странице с точки зрения индексации. Таким образом, функция бесконечной прокрутки понятна Google.
Не уверен, помогло ли это, но я снял галочку с настройки AJAX в административных настройках. Из-за этого Google начал находить URL-адреса, подобные нижеследующему (и обслуживать версию для краулеров). Я снял галочку, и теперь этот URL будет показывать JS-версию:
Итак, после примерно месяца работы SPA-версии (полностью на JavaScript) Discourse я вернулся к версии с краулером.
Вы можете посмотреть историю моих постов: я утверждал, что Google, возможно, лучше понимает JS-версию и ставит её выше, чем версию с краулером. Я ошибался.
Привет, @j127, вы были правы! (Напишу вам в личные сообщения, сэр).
Похоже, Google действительно разобрался с сайтом, но ранжировал его примерно так же (если не чуть ниже).
Версия с краулером также была обновлена в апреле-мае: цвета ссылок, формат и так далее — это тоже неплохо.
По моему мнению, если добавить простое меню и блок «Предлагаемые темы» в версию с краулером, это существенно улучшит SEO для всех.
В остальном я просто хотел поделиться этим, на случай, если кому-то интересно.