Привет, друзья. Представляю вашему вниманию очень интересную тему, которую написал мой коллега Артем, — автоматизация в SEO с Zennoposter.
Как при помощи нескольких нехитрых (на самом деле, хитрых) действий сэкономить много часов времени? Пошаговая инструкция с картинками и т.д. – все прилагается.
Передаю слово Артему.
Всем привет! И сразу к делу.
Работа по оптимизации любого сайта состоит из двух основных частей.
- Аналитическая часть – интересная работа, которая заставляет думать и показывать свою креативность.
- Рутина – часть работы, которую сложно назвать интересной, она монотонна и не предполагает каких-либо вызовов.
Ниже я расскажу, как можно автоматизировать нудную работу.
Автоматизация работы с мета-тегами страниц
Давайте представим стандартную ситуацию, когда мы провели технический аудит (профессиональный seo аудит самостоятельно), проверили сайт на ошибки и обнаружили множество проблемных страниц, которые нужно корректировать. Прикидываем, что это несколько часов скучной работы, унываем и приступаем к поиску этих страниц в админке.
Но данную проблему можно решить гораздо легче и не напрягаясь!
В зависимости от наличия доступов и CMS сайта, есть несколько путей. Если у нас полный доступ к сайту (FTP, phpMyAdmin), то оптимальной будет работа напрямую с базой данных.
Рассмотрим алгоритм работы на примере какого-нибудь сайта:
- Первым делом – бекап. Даже не думайте продолжать без резервной копии. Я серьезно! Делайте, как вам удобно: через панель хостинга, панель управления сервером или специальным скриптом (я в середине 2000-х пользовался Sypex Dumper, оказывается, он жив и даже активно развивается).
- Идем в phpMyAdmin. Находим таблицу, которая содержит необходимые нам данные (в зависимости от CMS, она может иметь название: posts, post, content или что-то в этом духе, но главная отличительная черта – это самая большая таблица по размеру).
- Нашли таблицу. Переходим в нее. Видим, что таблица содержит meta-данные и уникальную часть URL, к которой можно обратится.
- Убедившись, что мы нашли все нужные данные, можно приступать к их исправлению. Для этого нажимаем кнопку «Экспорт»:
- Выбираем следующие настройки:
- Получаем таблицу, с которой можно работать и редактировать через Excel.
- Для удобства подсветим нужные ячейки, используя условное форматирование:
- Прокручивая таблицу, мы сразу видим дубликаты, страницы с пустыми дескрипшенами и тому подобное. (На заметку, заодно можно убрать мусорные символы через поиск и замену).
- Правки таким образом займут гораздо меньше времени, чем править каждую страницу через веб-интерфейс. Когда закончили, импортируем таблицу обратно таким образом:
- Проверяем сайт. А если что-то пошло не так, возвращаем все через бекап. Но если руки из правильного места, то проблем быть не должно :)
Тоже самое можно реализовать для всех типов CMS.
Пример для сайта на OpenCart
В данной CMS нас интересует таблицы:
- oc_category_description – содержит мета-теги категорий,
- oc_product_description – мета-теги товаров.
По аналогии экспортируем таблицы в CSV, вносим правки и заливаем обратно.
Можно для импорта использовать phpMyAdmin, который импортирует только формат CSV, но этот формат не всегда корректно импортируется и имеет ряд ограничений, которые не позволят применять его для больших сайтов.
Поэтому я использую более удобный софт Navicat Premium, он позволяет настроить импорт гораздо удобнее в формат XLSX, который не имеет описанных недостатков.
Пример работы с Navicat Premium
Сначала надо проверить, что подключение к БД доступно удаленно, а не только через phpMyAdmin. Это можно сделать через поддержку хостинга, либо напрямую в панели управления сервером.
Разумеется, делаем бекап.
Создаём прямое подключение к базе данных:
Если у вас вдруг возникли проблемы, например, хостер решил не помогать или существуют другие ограничения, то не проблема, — можно реализовать подключение через http-туннель.
Для этого заливаем один из указанных файлов на хостинг. Как правило, используется БД MySQL, поэтому заливать надо ntunnel_mysql.php, а если вы используете иной тип базы вы точно об этом знаете.
В настройках указываем путь (полный URL):
Проверяем подключение. После успешного подключения, мы должны увидеть структуру базы данных, как и через phpMyAdmin.
Выбираем нужную нам таблицу (в данном примере xpamxpi_post):
Делаем её экспорт:
Отключаем вывод лишних ячеек, чтобы они не мешались при редактировании. Для этого снимаем все галочки, кроме нужных нам таблиц:
Выполнение займет несколько минут.
Редактируем полученную таблицу как в первом примере. А после редактирования импортируем её обратно.
Что это даёт?
Например, у нас на сайте 500 страниц, которые имеют проблемы. Чтобы найти и отредактировать одну страницу уходит 1-3 минуты (пусть в среднем будет 90 секунд). Умножим на 500 – выходит 750 минут (или 12,5 часов).
Экспорт базы – 10 минут, редактирование – 1 час, импорт – 10 минут.
Итого: 12 против 2 часов работы!
Согласитесь, это неплохая экономия времени. Кроме того, редактировать мета теги удобнее, когда они все в одной таблице, чем повторение монотонных скучных действий.
Что делать, если доступа к базе нет?
В таком случае мы будем использовать замечательную программу, которая позволяет экономить время в промышленных масштабах – ZennoPoster.
Рассмотрим, как его настроить, чтобы он автоматически исправил все проблемные страницы через админку.
Парсим сайт через ComparseR, берем из краулера список проблемных страниц, экспортируем его в таблицу. Вот данные, которые нам нужны: URL, Title, Description. Корректируем эти данные в таблице. А теперь приступим к настройке их автоматического заполнения.
Для демонстрации работы я просто буду добавлять топоним в title. Итак.
Создаём новый проект в Зеннопостере. И сразу учим софт авторизовываться в админке, чтобы не было проблем с разлогированием. Задать заполнение формы можно через визуальный редактор, для этого кликаем по форме:
Выбираем пункт SET с атрибутом «value» и его значение (те данные которые мы хотим передать в форму) в конструкторе действий:
Кликаем кнопку «Тестировать». Если все правильно, указанное значение должно появится в выбранном поле в форме авторизации. Нажимаем на кнопку «Добавить в проект».
По аналогии поступаем и с полем пароль. Клик по полю ввода правой кнопкой, выбираем конструктор действий. Указываем параметр SET и атрибут «value».
Нажимаем «Тестировать», если все ок, и поле заполнилось, нажимаем «Добавить в проект».
Так же поступаем с кнопкой «Войти» только вместо пункта SET выбираем «Rise» и событие «click»:
Далее делаем проверку какого-нибудь уникального куска текста, который появляется после успешной авторизации, чтобы понять, вошли мы в админку или нет. Пусть у нас это будет «Главная страница панели управления»:
Кликаем правой клавишей и выбираем пункт «Проверка выделенного текста на странице»:
В мини карте появится 2 кубика «Взять текст» и логический оператор.
Таким образом, если Зенно найдёт текст на странице, то логический оператор продолжит исполнения задачи по зеленной ветке (это успешное прохождение условия). Если нет, то софт завершит исполнение задачи по красной ветке (это ошибка, что-то пошло не так, условие на сработало).
Далее мы загружаем созданную ранее таблицу, чтобы Зенно мог оперировать с данными из неё. Для этого переходим в расширенный режим. И объявляем таблицу:
Подключаем таблицу со списком проблемных страниц, которую выдал нам ComparseR. Проставляем галочки «Загрузить из файла» (указывает, что таблицу нужно загрузить из файла, а не создать в оперативной памяти), «Сохранить изменения таблицы в файл» (чтобы все изменения таблицы записывались сразу в файл), «Оставлять пустой файл» (не даёт удалить файл даже если из него удалены все строки) и «Первая строка — заголовки». Выпадающий список позволяет указать формат или текст с разделителем. Короче, проставляем галочки, как на скрине и указываем путь к файлу:
Небольшое отступление. Я перепробовал множество программ и приёмов для автоматизации действий в браузере, но Зеннопостер выигрывает тем, что он отлично работает со всеми типами данных (таблицы, текстовые файлы, базы данных) и можно неограниченно расширять его возможности, подключая дополнительные библиотеки. И эта настройка подключения таблицы тому пример.
Теперь мы можем делать обращение к таблице из визуального конструктора и оперировать этими данными. Выбираем действие с таблицей:
Выполнив кубик, мы получили три переменные, содержащие URL (из которого мы получим значение ID для формирования ссылки на редактирование новости), старый title и значение нового title.
Через пункт «Обработка текста» применяем регулярное выражение (Regex):
На переменную URL мы применяем регулярное выражение (?<=/)[0-9][0-9][0-9].*?(?=-) и говорим Зенно положить результат в переменную id.
Теперь в ссылке вида https://xpam-xpicta.ru/admin43.php?mod=editnews&action=editnews&id=10579#tabextra заменяем 10579 на переменную.
Где 10579 — наш id (нужно на место этих цифр поставить вывод переменной, которую мы получили при обработке текста {-Variable.id-}). Должно получиться:
https://xpam-xpicta.ru/admin43.php?mod=editnews&action=editnews&id={-Variable.id-}#tabextra
Надо добавить эту ссылку в кубик: Клик правой клавишей на рабочую область -> Выбрать действие -> Табы -> «Переход на страницу»:
После выполнения, мы попадаем на страницу редактирования мета-тегов.
Аналогично как мы учили софт заполнять форму авторизации, добавляем заполнение формы с title и её отправку.
Делаем исполнение цикличным и смотрим, как компьютер работает за нас!
Поначалу это кажется сложным и непонятным, но потратив пару часов на изучение, вы сможете делать это гораздо быстрее и решать множество других задач.
Например, владелец сайта планирует начать продвижение в нескольких регионах. Для этого были созданы региональные поддоменны, и залиты точные копии основного сайта. Не лучшее решение, но лучше, чем ничего.
Наша задача состоит в том, чтобы прописать топоним во всех title товаров и категориях. Потом затереть все SEO тексты, предварительно собрав размешенные для генерации заданий копирайтеру. А потом готовые переписанные тексты вернуть на прежнее место. Там 900 категорий.
Сколько, по-вашему, займёт эта работа?
Всего пару часов на настройку Zennoposter!
Настраиваем автоматическую авторизацию в админке:
Принцип тот же, что и раньше. Из админки получаем список ID разделов:
Эти данные используем для генерации ссылки на редактирование:
Вместо выделенного ID нужно подставить вывод переменной:
Через пункт «Переход на страницу» открываем форму редактирования по ссылке:
bitrix/admin/iblock_section_edit.php?IBLOCK_ID=16&type=catalog&ID={-Variable.idlink-}&lang=ru&from=iblock_section_admin&find_section_section=0
Как в примере выше настраиваем сначала получение данных для сохранения в таблице, потом их изменения:
В итоге в визуальном конструкторе мы получим кубик, который положит текст в переменную, где его уже можно обработать, как душе угодно. Мы же его сохраним в таблицу.
Теперь текст нужно затереть, поскольку он неуникальный, т.к. выводится на основном домене. Для этого делаем все, как и прежде для получения данных, но вместо Get выбираем пункт Set:
И удаляем всё из поля «Значение».
В итоге при исполнении этого кубика в значение формы будет передана пустота.
Все остальные поля, которые необходимо изменить обрабатываем по аналогии:
Потом делаем уведомление, что раздел обработан и увеличиваем счетчик цикла.
Указываем зацикливание. Запускаем и ждём пока Зенно закончит править тайтлы и дискрипшены у категорий и товарки и удалять seo-тексты.
Итак, у нас 900 разделов. За константу берем на ручную обработку одного раздела 4 минуты. Получается 60 часов рутинной работы, от которой могут повеситься даже самые стойкие контент-менеджеры. При этом не исключена вероятность ошибок.
А чтобы вернуть тексты, когда они будут переписаны, мы просто указываем не Null, а переменную с текстом, которую получаем через кубик «Получить строку» из таблицы:
Вот как-то так.
И в заключение могу сказать, что данная статья – это лишь вводная часть. Zennoposter – многофункциональный инструмент, с его помощью можно автоматизировать почти любое рутинное действие. Поэтому в будущем, если данный пост вы оцените, я постараюсь выложить сюда ещё пару полезных постов по автоматизации seo-задач.
На этом все, друзья. Артем обещал написать продолжение, если вам это интересно. Так что задаем вопросы в комментариях!
Спасибо за внимание. И до связи!
Зенка решает!! Спасибо!
Не проще реализовать экспорт/импорт мета категории? Добавить несколько полей в категории который будут содержать нужные слова и сцеплением все слепить в Ексель залить на сайт.
Ну так сцеплением можно добавить только в конец title что-нибудь, например. Для других манипуляций это не подойдет.
Саша, выше всех похвал! Честного говоря, открыл для меня глаза на новый мир. Теперь понятно, как можно массово исправлять метатеги.
Вопрос: при импорте файла его формат указывать просто "CSV"? Просто в импорте, как в экспорте, нет возможности выбора формата CSV for MS Exel.
Разница между этими двумя форматами только в том, что CSV сохраняет в utf-8, а csv for exel в win-1251. И лучше делать импорт в CSV, поскольку тогда сохранятся юникод символы, которые сейчас многие так любят добавлять в метатеги. В статье я использовал этот тип вывода, т.к. сайт был в кодировке win-1251 и никакой роли это не играло.
Хороший софт, особенно если есть прокси =)
Какие ещё задачи решаете зеннопостером?
Проверка морфологии, анализ текста на уникальность и возможность бадена, автоматический анализ конкурентов сбор структуры их текстов сравнение по вхождением слов и определения наиболее значимых вхождений по мнению ПС. и автоматический постановка ТЗ копирайтеру. Об этом я планирую следующую статью.
Да, пожалуйста продолжайте! Очень полезно. Спасибо!
Подскажите, пожалуйста, адрес почты ТП компарсера, на сайте не нашла
Саша, добавь пожалуйста на блог, дату публикации статей! Вот прям очень важно, всегда открываю, и никогда не вижу даты =(
Доброго дня. Идея хорошая, но вместо русского языка у меня в БД стоят значения вида ть ферму Как их перевести в нормальный русский? или русский в эти символы?
Потому что, если в excel файле забить просто русский, то в БД он не грузится. (При импорте файла, заполненные в excel поля остаются пустыми) Видимо, надо перекодировать язык
Это проблема с кодировкой. Тут надо обращаться к хостеру или разработчику CMS, чтобы уточнить, в чем причина и как это исправить.
Можно попробовать Notepad++
— Кодировка
— преоброзовать в ANSI
Обратно — преоброзовать в UTF-8 без BOM