В какой день лучше всего публиковать пост на Хабре?

в 9:37, , рубрики: Блог компании Luxoft, веб-аналитика, публикации, Социальные сети и сообщества, хабр, метки: ,

Подготовили важный пост и хотите скорее рассказать о нем миру? Обидно будет опубликовать его именно в тот день, когда на хабр никто не заходит. Ровно 5 месяцев назад BitLy провел исследование, где рассказал в какое время лучше постить на Facebook, Twitter, и Tumblr (русский перевод с более наглядной инфографикой).

В какой день лучше всего публиковать пост на Хабре?

А есть ли такие дни недели, когда лучше всего публиковаться на любимом Хабре? Понедельник день тяжелый или все активно работают после выходных? Пятничное веселье проходит с друзьями за пивом или на Хабре в комментах? Ничто не мешает самим провести мини-исследование. Давайте узнаем!

Disclaimer

Исследование не претендует на объективность, содержит логические и технические погрешности, написанный код нуждается в рефакторинге, написан на скорую руку, и использует неоптимальные технологии. И все же удалось собрать достаточно полезной информации для ряда выводов.

Допущения и методика исследования

Будем обсчитывать только успешные посты, которые:

  • Содержат хотя бы один комментарий
  • Были оценены положительно

Если в понедельники Хабр особенно беспощаден и щедр на минусы, наше исследование об этом умолчит.

Как быстро понять в какой день недели больше шансов привлечь внимание к посту и много плюсов? С немалой погрешностью, которая, впрочем, уменьшается при большом количестве обработанных постов, можно считать что хороший день для поста — это когда:

  • Оставляют больше всего положительных оценок к постам
  • Оставляют больше всего комментариев

Достаточно для каждого дня недели просуммировать количество положительно оцененных статей, количество комментариев к ним, и рейтинг статей. Так мы поймем когда больше всего людей используют Хабр и часто ли они ставят постам плюсы.

Будем сканировать все доступные для нашего юзера статьи перебором их id по прямым ссылкам. Посмотрим какие примерно номера у последних постов и будем перебирать сверху вниз до какого-нибудь поста двухлетней давности. Я выбрал диапазон от 153000 до 90000, и запускал алгоритм на нескольких разных диапазонах внутри этого блока. Круто? И несложно! Поехали писать код.

Программа

Еще одна погрешность в этом исследовании: дата берется не из поста, а из первого коммента к нему. Так быстрее, потому что у комментариев доступен datetime, а дату поста пришлось бы парсить из русского языка (что тоже несложно, но зачем). Для сканирования постов я решил использовать JavaScript, чтобы разом получить и передачу сессии, и легкий поиск данных на странице напрямую через jquery. Все это может и некрасиво, но сэкономило уйму времени, и ведь код занял полчаса. Для работы кода нужно отключить same origin policy, я сделал это с помощью плагина CORS для FireFox. Я сознательно обрабатывал синхронно в один поток с небольшими паузами, чтобы не нагружать ноутбук, давать браузеру время для рендера, да и бомбить Хабр десятком запросов в секунду некрасиво, хотя это и капля в море.

Статьи, к которым нет доступа или без рейтинга — пропускаются. Так выглядит основной JavaScript:

$(document).ready(function() {
	var all = 0;
	var success = 0;
	var failed = 0;
	var daysProcessed = [0, 0, 0, 0, 0, 0, 0];
	var daysScore = [0, 0, 0, 0, 0, 0, 0];
	var daysComments = [0, 0, 0, 0, 0, 0, 0];

	function processPage(url) {
		$.ajax({url: url, success: function(data) {
			if (data.indexOf('Доступ к странице ограничен') != -1) {
				failed++;
				$('#failed').text(failed);
				return;
			}
		  	try {
		  		$('#loader').html(data);
		  	} catch(e) {}
		  	setTimeout(function() {
			    var score = $('.score:first').text();
				if (score != '' && score.charCodeAt(0) != 8212) {
					var sign = 1;
					if (score.charCodeAt(0) == 8211) {
						sign = -1;
						score = score.substr(1);
					}
					var intScore = sign * parseInt(score);

					var comments = $('#comments_count').text();
					var intComments = parseInt(comments);

					if (intComments > 0 && sign == 1) { //Do we need only positive?
						var date = $('time:first').attr('datetime');
						date = new Date(date);
						var intDay = date.getDay();

						success++;
						$('#success').text(success);

						daysProcessed[intDay]++;
						daysScore[intDay] += intScore;
						daysComments[intDay] += intComments;

						$('#processed_' + intDay).text(daysProcessed[intDay]);
						$('#score_' + intDay).text(daysScore[intDay]);
						$('#comments_' + intDay).text(daysComments[intDay]);
					} else {
						failed++;
						$('#failed').text(failed);
					}
				} else {
					failed++;
					$('#failed').text(failed);
				}
			}, 1);
		}, async: false, error: function () {
			failed++;
			$('#failed').text(failed);
		}});
	}

	var i = 153000;
	var interval = setInterval(function() {
		try {
			processPage('http://habrahabr.ru/post/' + i + '/');
		} catch (e) {
			failed++;
			$('#failed').text(failed);
		}

		all++;
		$('#all').text(all);

		i--;
		if (i < 90000) {
			clearInterval(interval);
		}
	}, 0);
});

Примитивная визуализация исключительно для удовольствия и наглядности, все любят циферки в realtime:

<html>
<head>
	<script type="text/javascript" src="http://yandex.st/jquery/1.8.2/jquery.js"></script>
	<script type="text/javascript">
		//КОД, КОТОРЫЙ ПРИВЕДЕН ВЫШЕ
	</script>
</head>
<body>
	<div>All processed: <span id="all">0</span></div>
	<div>All success: <span id="success">0</span></div>
	<div>All failed: <span id="failed">0</span></div>
	<br>
	<div>Mondays processed: <span id="processed_1">0</span></div>
	<div>Mondays total score: <span id="score_1">0</span></div>
	<div>Mondays total comments: <span id="comments_1">0</span></div>
	<br>
	<div>Tuesdays processed: <span id="processed_2">0</span></div>
	<div>Tuesdays total score: <span id="score_2">0</span></div>
	<div>Tuesdays total comments: <span id="comments_2">0</span></div>
	<br>
	<div>Wednesdays processed: <span id="processed_3">0</span></div>
	<div>Wednesdays total score: <span id="score_3">0</span></div>
	<div>Wednesdays total comments: <span id="comments_3">0</span></div>
	<br>
	<div>Thursdays processed: <span id="processed_4">0</span></div>
	<div>Thursdays total score: <span id="score_4">0</span></div>
	<div>Thursdays total comments: <span id="comments_4">0</span></div>
	<br>
	<div>Fridays processed: <span id="processed_5">0</span></div>
	<div>Fridays total score: <span id="score_5">0</span></div>
	<div>Fridays total comments: <span id="comments_5">0</span></div>
	<br>
	<div>Saturdays processed: <span id="processed_6">0</span></div>
	<div>Saturdays total score: <span id="score_6">0</span></div>
	<div>Saturdays total comments: <span id="comments_6">0</span></div>
	<br>
	<div>Sundays processed: <span id="processed_0">0</span></div>
	<div>Sundays total score: <span id="score_0">0</span></div>
	<div>Sundays total comments: <span id="comments_0">0</span></div>
	<div id="loader" style="display:none"></div>
</body>
</html>

Выглядело это так

В какой день лучше всего публиковать пост на Хабре?

Результаты

Наконец, результаты! Скрипт работал два дня на трех разных интервалах примерно одинаковой величины.

Суммарные показания по всем интервалам:
Всего обработано: 35690
Из них успешно: 21189
C ошибкой доступа: 14499
Утеряно бюллетеней: 2 :)

День недели Всего постов Плюсы Комментарии Плюсы/Посты Комменты/Посты
Понедельник 3637 136035 178084 37.40 48.96
Вторник 3719 140566 194264 37.79 52.23
Среда 3702 135767 184081 36.67 49.72
Четверг 3507 128936 178940 36.76 51.02
Пятница 3506 131063 170025 37.38 48.49
Суббота 1573 64073 85372 40.73 54.27
Воскресенье 1545 72376 91465 46.84 59.20

Выводы

  • Больше всего постов в первые три будних дня, в выходные все отдыхают (кто бы сомневался)
  • Те, кто не отдыхает в выходные — комментят на Хабре. Тоже неплохо проводят время
  • При этом по абсолютной величине больше всего комментов и плюсов в начале недели
  • Нет ярко выраженных пиков, хабр достаточно равномерен (спад в конце — предсказуем)
  • Активность в начале недели выше, что неплохо согласуется с исследованием Facebook и Twitter
  • На Хабре пик не в среду, а во вторник. Уже не понедельник, а недельный дедлайн еще далеко :)
  • Если вы хотите максимального внимания и плюсов — размещайте пост в понедельник или вторник
  • В пятницу у всех хорошее настроение, это тоже неплохой день для плюсов
  • В четверг приятно поболтать в комментариях, но на рейтинг в этот день не рассчитывайте
  • Хабр — торт еще!

Так когда все же публиковаться?

Для плюсиков — понедельник, вторник, пятница.
Для комментов — вторник, среда, четверг.

Этот пост опубликован в понедельник. Приятной недели и хороших вам постов, Хабровчане!

В какой день лучше всего публиковать пост на Хабре?

Автор: Silf

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js