Я уже давно пишу статьи про различные аспекты IT-технологий, инвестиции, автоматизацию и умные дома на разных площадках: Хабр, Т—Ж, СмартЛаб, Пикабу, VC.ru и других.
За всё время накопилось примерно 250 статей, которые по итогу свёл в таблицу. Но вот задумываться о популярности статей и их реальном эффекте стал относительно недавно.

Почему я решил собирать статистику публикаций?
Главной целью всех этих публикаций было поделиться своим опытом и при этом попытаться понять насколько вообще это важно и актуально для читателей. Однако обратная связь была не всегда очевидной: где-то комментариев вообще не было, а иногда на Хабре статьи набирали большой рейтинг при малом количестве комментариев (но это редко).
Однако очевидно одно - статистика заставляет посмотреть на материалы со стороны. Например статья про то, как я при помощи двух скриптов смог автоматически сгенерировать опись документов для 700 страниц на непрофильном Пикабу собрала три месяца назад почти 75 тысяч просмотров и 80 комментариев, а на Хабре эта же тема была не особо популярна.
Или статья про то, что читали на Хабре в 2024 году: анализ статей с Node.js, Google Sheets и каплей ChatGPT - собрала на Хабре три недели назад рейтинг +68, но «всего» 7 тысяч просмотров.
Зачем я написал Open Source скрипт?

Извлечение просмотров, комментариев, закладок и рейтинга из каждой статьи вручную занимало бы много времени, поэтому я решил пойти путём автоматизации. Написал скрипт, который скачивает эти данные по статьям и помещает сразу в одну удобную таблицу, где я вижу, какие темы стоит развивать дальше и на каких ресурсах.
Это Open Source скрипт, размещенный на Гитхабе, который состоит из Google Apps Script и Node.js частей и обе эти части работают с итоговой сводной Google Таблицей.
Если вы автор или агентство и хотите видеть полную картину популярности ваших материалов, выявлять, какие темы интересуют аудиторию, а какие требуют доработки, автоматизированный инструмент сбора данных - это то, что вам нужно. Я уже испытал это на себе и расскажу подробнее об этом в статье.
Особенности механизма парсинга сайтов, где размещены публикации
Изначально я использовал Google Apps Script внутри Гугл Таблиц для автоматизации извлечения просмотров, комментариев, закладок, рейтинга. Однако по мере того, как я расширялся на новые платформы, то обнаружил, что некоторые сайты ограничивают доступ к определенным данным, что потребовало от меня перехода на серверный язык JavaScript - Node.js.
Конкретный пример: сайт инвесторов и трейдеров Смартлаб имеет скр��тое АПИ для получения просмотров статей.
Если обращение идёт через Google Apps Script внутри Гугл Таблиц, то сервер просто не отдает просмотры, возвращая пустой ответ, потому что заголовки headers и User-Agent не поддерживаются Google Apps Script:
function fetchApiResponse() {
const url = 'https://smart-lab.ru/cgi-bin/gcn.fcgi?list=1083556&func=func8422&_=1731928577852';
try {
// Выполняем запрос к API с детализированными заголовками
const response = UrlFetchApp.fetch(url, {
method: 'get', // HTTP метод GET
muteHttpExceptions: true, // Не выбрасывать ошибки для HTTP ответов с кодами, отличными от 200
headers: {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Encoding': 'gzip, deflate, br, zstd',
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'Cache-Control': 'max-age=0',
'Sec-CH-UA': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
'Sec-CH-UA-Mobile': '?0',
'Sec-CH-UA-Platform': '"Windows"',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1'
}
});
// Проверяем HTTP код ответа
const responseCode = response.getResponseCode();
if (responseCode !== 200) {
console.error(`Ошибка: Получен HTTP код ответа ${responseCode}`);
return;
}
// Получаем содержимое в виде обычного текста
const content = response.getContentText();
// Логируем необработанный ответ для отладки
console.log('Необработанный ответ API:', content);
} catch (error) {
// Обрабатываем ошибки во время выполнения запроса
console.error('Ошибка при выполнении запроса к API:', error.message);
}
}

Если же запрос идёт через Node.js и использование User-Agent, то в ответ воз��ращается число просмотров даже без использования эмуляции браузера:
const axios = require('axios');
async function fetchApiResponse() {
const url = 'https://smart-lab.ru/cgi-bin/gcn.fcgi?list=1083556&func=func8422&_=1731928577852';
try {
// Установка заголовка User-Agent для имитации браузера Chrome
const options = {
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
};
// Выполнение запроса к API для получения просмотров
const apiResponse = await axios.get(url, options);
const responseText = apiResponse.data;
// Логируем необработанный ответ для отладки
console.log('Необработанный ответ API:', responseText);
} catch (error) {
// Обработка ошибок
console.error(`Ошибка получения количества просмотров: ${error.message}`);
return null;
}
}
fetchApiResponse();
Проблема оценки популярности статей
Обратная связь от аудитории может сильно варьироваться в зависимости от платформы, формата подачи материала и времени публикации.
Например, статья, выложенная одновременно на разных сайтах, может получить совершенно разные результаты. Уже упоминаемая выше статья "Как я при помощи двух скриптов смог автоматически сгенерировать опись документов для 700 страниц" собрала:
vc.ru:
225 / 3 / 2 / 2
Просмотры / Комментарии / Закладки / Рейтинг
Пикабу:
74 615 / 76 / 0 / 903
Просмотры / Комментарии / Закладки / Рейтинг
Хабр:
6 620 / 7 / 31 / +12
Просмотры / Комментарии / Закладки / Рейтинг
На Пикабу статья вызвала бурное обсуждение, в то время как на vc.ru аудитория осталась почти равнодушной.
Зачем собирать статистику публикаций?
Анализ метрик (просмотры, комментарии, закладки, рейтинг) помогает понять, что действительно интересует вашу аудиторию и какие темы популярны на различных ресурсах.
Просмотры: показывают, сколько людей заинтересовалось темой.
Комментарии: демонстрируют вовлечённость, обсуждения.
Закладки: отражают ценность материала для долгосрочного использования.
Рейтинг: индикатор общего одобрения.
Анализ этих данных помогают адаптировать стиль, темы и платформы для повышения эффективности публикаций.
Создание Open Source скрипта для сбора данных
За несколько лет написал Google Apps Script, а затем и Node.js, которые предназначены для автоматического сбора показателей публикаций с различных платформ.
Важно, что скрипты приспособлены к конкретной структуре каждой платформы, используя API (Тинькофф Журнал, Пикабу, Смартлаб) или парсинг HTML-кода (Хабр, vc.ru).

Различие Google Apps Script и Node.js версий
Если очень кратко, то версия на Google Apps Script проста в использовании, запускается прямо в браузере, идеальна для быстрой интеграции с таблицами Google, а Node.js версия мощнее, работает на сервере, подходит для более сложных задач и интеграций.
Google Apps Script – это облачное решение, подходящее для задач, не требующих больших вычислительных ресурсов. Он интегрирован в Google Workspace и позволяет легко работать с веб-страницами, API Google, используя встроенные функции. Однако его функционал ограничен, и он не может работать с ресурсоёмкими задачами или сложным парсингом.
Node.js – это серверная среда, использующая Javascript. Это мощное решение для сложного парсинга, работы с API, обработки больших объёмов данных и реализации сложных логик. Node.js позволяет использовать различные библиотеки (например, Axios, Cheerio, Puppeteer), расширяя возможности скрипта. Однако Node.js требует установки и настройки на сервере или локально.
Публикация скрипта на GitHub
Публикация скриптов на GitHub в рамках философии Open Source имеет несколько преимуществ. Во-первых, это позволяет другим пользователям использовать и адаптировать скрипт под свои нужды. Во-вторых, открытый исходный код способствует прозрачности и аудиту кода, что помогает обнаруживать и исправлять ошибки. В-третьих, сообщество разработчиков может помочь в улучшении и расширении функциональности скрипта, если захочет :)
Пример анализа собранной статистики для выбора будущих тем
Мне кажется немного некорректно проводить анализ собственных статей здесь и поэтому я оттолкнусь от анализа двух популярных платформ: Хабра и Смартлаба по всем их публикациям за 2024 год.

Откуда вообще я взял исходные данные для анализа всей платформы?
Исходные данные были получены мной путем парсинга двух ресурсов. Использовался автоматизированный сбор данных с использованием Node.js для парсинга HTML-страниц и последующего извлечения информации о каждой статье. Данные о просмотрах, комментариях, рейтинге и закладках позволяли оценить популярность и вовлеченность аудитории.
Фильтр по минимальному количеству просмотров (5 000 на Смартлабе, 30 000 на Хабре) и рейтингу (более 30 на Хабре) позволил отфильтровать статьи, которые не соответствовали критериям популярности.

Определение трендов и предпочтений аудитории для разных платформ: Хабр и Смартлаб.
Анализ показал, что у каждой платформы свои тренды.
Хабр более ориентирован на технические темы, такие как настройка программного обеспечения, обходы блокировок, разработка и советы по программированию. Наиболее популярные темы за 2024 год на Хабре - проблемы блокировки YouTube, решение проблем с GoodbyeDPI, уязвимости безопасности.
На Смартлабе, наоборот, доминируют темы, связанные с инвестициями, экономикой и геополитикой. Трендовые темы Смартлаба - санкции, рубль, ключевая ставка, дедолларизация, анализ рынка акций и облигаций.
Оптимизация публикаций под разные платформы: про что писать и на чём делать акценты.
Для эффективной публикации на каждой платформе важно учитывать интересы ее аудитории. На Хабре следует фокусироваться на конкретных технических проблемах и их решениях, практических советах и "человеческом" стиле. Статьи с интересными заголовками, посвященные узким, конкретным темам, вероятнее всего, получат бОльшую вовлеченность.
На Смартлабе, ключевым является анализ геополитических и экономических трендов, связанных с финансами. Оптимально создавать качественный аналитический контент, предлагающий рекомендации по инвестированию, с подкреплением фактами и экспертизой.
Выводы
Мой Open Source скрипт для автоматического сбора статистики (просмотры, комментарии, закладки, рейтинг) позволяет анализировать популярность статей на разных платформах, выявлять тренды и понять что разные платформы могут требовать разного контента.
Работа с Open Source инструментом делает этот процесс масштабируемым и полезным для других авторов и агентств.
Автор: Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»
6 января 2025 г.
