Sheensay → Вебразработка → Как добавить сайт в Яндекс Дзен

Как добавить сайт в Яндекс Дзен

21.04.2019


Что такое Яндекс Дзен

Яндекс Дзен — это сервис, который создаёт индивидуальную подборку материалов для конкретного пользователя на основе его предпочтений. По сути, Яндекс Дзен чем-то напоминает ленту любой социальной сети — новостные тизеры или краткие посты, изображения и видео, анонсы событий, обзоры мероприятий, статей и иных материалов, которые, возможно, будут интересны пользователю.
С точки зрения вебмастера, сервис позволяет сайту получать дополнительную аудиторию и трафик, а также монетизироваться за счёт пользователей, которые используют:

  • Яндекс Браузер — подборка Дзен отображается при открытии новой вкладки в клиенте для дестопа, iPhone, смартфонов и планшетов на базе Android;
  • мобильное приложение Яндекс и Yandex Launcher;
  • браузер Mozilla Firefox для компьютера, если в нем установлены Визуальные закладки;

Какие преимущества даёт Яндекс Дзен авторам

Яндекс Дзен позволяет авторам получать дополнительную аудиторию и трафик на свой сайт, который, к тому же, можно дополнительно монетизировать. Подробнее:

Расширение и вовлечение аудитории
Пользователи, которые регулярно пользуются Яндекс Дзен, а также подписаны на канал, чаще видят новые публикации, по сути, становясь постоянными подписчиками.
Если канал становится популярным, его начинают видеть новые пользователи.
Монетизация канала
Если ваш канал собирает больше 7 тысяч дочитываний статей в неделю, то он получает возможность дополнительной монетизации.
Также, каждый месяц самые популярные каналы Дзена получают дополнительную поддержку в продвижении и возможность подать заявку на спонсорский грант от Яндекса в размере полумиллиона рублей.

Как добавить свой сайт в Яндекс Дзен

Чтобы добавить свой сайт к каналу Яндекс Дзен, Вам нужно:

  1. Cоздать свой канал;

    Канал будет привязан к тому аккаунту, под которым вы авторизованы в Яндексе. Рекомендую для отдельного проекта завести отдельный аккаунт.

  2. Подготовить специально размеченную ленту RSS (ниже есть плагин для WordPress);
  3. Добавить сайт в Яндекс Вебмастер из-под того аккаунта Яндекса, который является владельцем канала Дзен. Для этого, клик на логотип канала слева сверху, слева откроются настройки;
    Прикрепление сайта к каналу Яндекс Дзен
  4. Если сайт ещё не зарегистрирован, переходите в Яндекс Вебмастер и добавляете его;
    Добавление сайта в Яндекс Вебмастер
  5. Подтверждаете право владения. Самый простой вариант — загрузить HTML-файл в корень сайта;
    Подтверждение прав владения сайтом
  6. Также, если сайт уже добавлен в Яндекс Вебмастер на другом аккаунте, просто делегируйте права на него на тот аккаунт, который является владельцем канала Яндекс Дзен;
    Делегирование прав на сайт
  7. После успешного подтверждения прав владения сайтом переходите обратно в настройки канала и отправляете сайт на модерацию. Она может занять от 7 дней до нескольких недель.
    Проверить сайтСайт на модерации

Как настроить Яндекс Дзен для сайта

Чтобы пройти модерацию в Яндекс Дзен, нужен функционал или плагин, который создаст RSS-ленту.

Требования к оформлению

  • Наличие не менее 50 публикаций в ленте;
  • Каждая публикация должна иметь не менее 1 изображения с шириной не менее 400 пикселей;
  • Рекомендуется вырезать из контента, попадающего в ленту, элементы с тегами, не поддерживающимися стандартами RSS, например <iframe>, <style>, <script>. Сюда же относятся блоки вставки из соцсетей: Facebook, Twitter, Instagram и других, а также видеороликов из YouTube и Vimeo (их нужно оборачивать в тег <video>).

Список тематик Яндекс Дзена

  • Авто
  • Война
  • Дизайн
  • Дом
  • Еда
  • Здоровье
  • Знаменитости
  • Игры
  • Кино
  • Культура
  • Литература
  • Мода
  • Музыка
  • Наука
  • Общество
  • Политика
  • Природа
  • Происшествия
  • Психология
  • Путешествия
  • Спорт
  • Технологии
  • Фотографии
  • Хобби
  • Экономика
  • Юмор

Плагин WordPress для создания RSS для Яндекс Дзен

<?php
/*
  Plugin Name: Sheensay Zen Yandex RSS Generator
  Plugin URI: http://sheensay.ru.ru/?p=3478
  Description: Генератор RSS для <a href="https://yandex.ru/support/zen/publishers/rss.html" >Яндекс Дзен</a> | <a rel="nofollow" target="_blank" href="/feed/zen">Ваша лента RSS тут</a>.
  Version: 1.1.1
  Author: Sheensay
  Author URI: http://sheensay.ru.ru/?p=3478
  License: GPLv2
  Tag: sheensay_zen_yandex
 */
defined( 'ABSPATH' ) or exit;

final class Sheensay_Zen_Yandex {

	// Рубрика
	private $category = 'Общество';

	// Указываем, что контент для всех возрастов
	private $is_adult = 'nonadult';

	// Текст копирайта под изображениями
	private $copyright = '';

	// Число записей в ленте RSS для Яндекс Дзен
	private $posts_per_page = 50;

	// Отсортируем посты по дате публикации
	private $orderby = 'date';

	// Исключённые рубрики
	private $category__not_in = array(); // Указывайте ID рубрик через запятую, например array( 1, 3 )

	// Типы записей, по умолчанию post
	private $post_types = array( 'post' );
	//private $post_types = array( 'post', 'page' );  
  
	// Ярлык ленты RSS для Яндекс Дзен
	private $feed_url = 'zen';

	function __construct() {

		// Добавляем текст копирайта под изображениями
		$this -> copyright = 'c ' . get_bloginfo( 'name' );

		// Инициализатор RSS
		add_action( 'init', array( $this, 'zen' ) );

		// Метабоксы
		add_action( 'add_meta_boxes', array( $this, 'metabox' ) );
		add_action( 'save_post', array( $this, 'save' ) );
	}

	function metabox() {
		$screens = $this -> post_types;
		foreach ( $screens as $screen )
			add_meta_box( 'is_in_zen', 'Отображать ли в Яндекс Дзен', array( $this, 'is_in_zen' ), $screen, $context = 'side', $priority = 'high' );
	}

	function is_in_zen() {

		global $post;

		$checked = get_post_meta( $post -> ID, 'is_in_zen', 1 );

		// Используем nonce для верификации
		wp_nonce_field( plugin_basename( __FILE__ ), 'is_in_zen__nonce' );

		// Поля формы для введения данных
		echo '<label for="is_in_zen">' . __( "Отметьте галочкой, если хотите отображать эту запись в Яндекс Дзен" ) . '</label> ';
		echo '<input type="hidden" value="off" name="is_in_zen" />';
		echo '<input type="checkbox" id="is_in_zen" name="is_in_zen" ' . checked( 'on', $checked, 0 ) . ' />';
	}

	function save( $post_id ) {

		// Если нет данных $_POST - пропускаем
		if ( empty( $_POST ) )
			return;

		// Если текущий тип записи нас не интересует, пропускаем
		if ( !in_array( $_POST['post_type'], $this -> post_types ) )
			return;

		// Проверка безопасности
		if ( !wp_verify_nonce( $_POST['is_in_zen__nonce'], plugin_basename( __FILE__ ) ) )
			return;

		// Автосохранение пропускаем
		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
			return;

		// Проверка полномочий текущего пользователя
		if ( !current_user_can( 'edit_' . $_POST['post_type'], $post_id ) )
			return;

		// Обновляем данные по Яндекс Дзен в метаданных записи
		if ( $is_in_zen = $_POST['is_in_zen'] ) {

			update_post_meta( $post_id, 'is_in_zen', $is_in_zen );
		}
	}

	function zen() {
		add_feed( $this -> feed_url, array( $this, 'zen_feed' ) );
	}

	function zen_feed() {

		header( 'Content-Type: ' . feed_content_type( 'rss-http' ) . '; charset=' . get_option( 'blog_charset' ) );

		$p = get_posts( array(
			'posts_per_page' => $this -> posts_per_page, // Максимальное количество записей для отображения в фиде
			'category__not_in' => $this -> category__not_in, // Массив с исключёнными рубриками
			'post_type'		 => $this -> post_types, // Проходят только записи только нужного типа (по умолчанию, "Записи")
			'orderby'		 => $this -> orderby, // Отсортируем посты в ленте по дате публикации, модификации или ещё чего-то
			// Ниже блок, который позволяет отбирать только те записи, в метаданных которых присутствует 'is_in_zen' = 'on'
			// Вы можете удалить его, тогда в ленту Дзена автоматически будут попадать все опубликованные записи
			'meta_query'	 => array(
				array(
					'key'	 => 'is_in_zen',
					'value'	 => 'on',
				)
			),
				// Конец блока, дальше не удалять
				) );

		if ( $p ) {
			echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>';
			?>
			<rss version="2.0"
				 xmlns:content="http://purl.org/rss/1.0/modules/content/"
				 xmlns:wfw="http://wellformedweb.org/CommentAPI/"
				 xmlns:dc="http://purl.org/dc/elements/1.1/"
				 xmlns:media="http://search.yahoo.com/mrss/"
				 xmlns:atom="http://www.w3.org/2005/Atom"
				 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
				 xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
				 <?php do_action( 'rss2_ns' ); ?>>
				<channel>
					<title><?php bloginfo_rss( 'name' ); ?></title>
					<link><?php bloginfo_rss( 'url' ) ?></link>
					<description><?php bloginfo_rss( 'description' ) ?></description>
					<language>ru</language>
					<?php
					foreach ( $p as $post ) {
						setup_postdata( $post );
						?>   
						<item>
							<?php
							$title = get_the_title( $post );

							// nbsp в пробел
							$title = str_replace( '&nbsp;', ' ', $title );

							// mdash в тире
							$title = str_replace( '&mdash;', '—', $title );
							?><title><?= $title; ?></title>
							<link><?= get_the_permalink( $post ); ?>?utm_source=zen_yandex</link>
							<pubDate><?php echo get_post_time( 'D, d M Y H:i:s +0000', $gmt = TRUE, $post, $translate = FALSE ); ?></pubDate>
							<media:rating scheme="urn:simple"><?= $this -> is_adult ?></media:rating>
							<author><?= get_the_author(); ?></author>
							<category><?= $this -> category; ?></category>
							<?php
							$gallery = get_attached_media( 'image', $post );
							foreach ( $gallery as $img ) {
								echo '<enclosure url="' . $img -> guid . '" type="' . $img -> post_mime_type . '" />';
							} unset( $img );

							// Если прикреплённых к записи медиафайлов нет, вытаскиваем и вставляем изображения из контента
							// Если изображения не прикрепляются к записям, то стоит это условие убрать. В таком случае, возможно дублирование изображений в <enclosure, но лучше продублировать, чем пропустить
							if ( empty( $gallery ) ) {

								// Если в контенте есть изображение
								if ( FALSE !== strpos( $post -> post_content, '<img' ) ) {

									preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post -> post_content, $matches );

									// Выводим все изображения
									foreach ( $matches[1] as $src ) {

										// По-хорошему, надо определять mime-type изображения, но по дефолту сгодится и image/jpeg
										$mime = 'image/jpeg';

										echo '<enclosure url="' . $src . '" type="' . $mime . '" />';
									} unset( $src );
								}
							}
							?>

							<description><![CDATA[<?= get_the_excerpt( $post ); ?>]]></description>
							<content:encoded><![CDATA[
								<?php
								$content = apply_filters( 'the_content', get_the_content() );

								$pattern = '/(<img([^>]*)>)/i';
								$replacement = '<figure>$1<figcaption>
                            ' . get_the_title( $post ) . '
                            <span class="copyright">' . $this -> copyright . '</span>
                            </figcaption>
                            </figure>';

								$content = preg_replace( $pattern, $replacement, $content );

								// Удаляем лишние парные теги и их содержимое
								$r = array( 'script', 'iframe', 'style', 'ins' );
								foreach ( $r as $_ ) {
									$content = preg_replace( '#<' . $_ . '.*?>(.*?)</' . $_ . '>#is', '', $content );
								} unset( $_ );

								// Удаляем все пустые парные теги
								$content = preg_replace( '#<\w+[^>]*>(\s*(&nbsp;)?\s*)<\/\w+>#i', '', $content );

								// Удаляем лишние символы
								$r = array( '&nbsp;', );
								foreach ( $r as $_ ) {
									$content = str_replace( $_, ' ', $content );
								} unset( $_ );

								// Отображаем контент
								echo strip_tags( html_entity_decode( $content ),'<p><span><img><figure><figcaption><h2><h3><h4><h5><h6><dd><dt><dl><ul><ol><li><b><i><strong><em>' );
								?>]]></content:encoded>
								<?php rss_enclosure(); ?>
						</item>
					<?php } wp_reset_postdata(); ?>
				</channel>
			</rss>
			<?php
		}
	}

}

new Sheensay_Zen_Yandex();

  1. Этот код я рекомендую вставить как MU Plugin (создать каталог /wp-content/mu-plugins/, в нём создать файл sheensay_zen_yandex.php, туда скопировать код).

    Файл нужно сохранять строго в кодировке UTF-8

  2. Затем отправиться в Настройки — Постоянные ссылки (http://example.com/wp-admin/options-permalink.php), и, ничего не меняя на странице, нажать Сохранить;

Теперь, на страницах записей появится метабокс:
Метабокс, отметив который, мы отправляем запись в ленту Яндекс Дзен

Лента RSS для Яндекс Дзен доступна по адресу http://example.com/feed/zen/

Браузеры жёстко кешируют страницу с фидом. Если вносите изменения в код или просто проверяете фид, не забывайте обновлять вкладку с фидом, очищая кеш, с помощью Ctrl+F5.

Как отправить все записи в RSS разом

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

'meta_query' => array(
	array(
		'key' => 'is_in_zen',
		'value' => 'on',
	)
),

Если нужно, чтобы в Дзен попадали только избранные записи, вышеуказанный блок кода удалять не надо. А чтобы не отмечать все статьи, которые хочется добавить в ленту RSS для Дзена, вручную, Вы можете воспользоваться следующей инструкцией:

<?php
/**
 * Манипуляции с метаданными записей для их подготовки в RSS Яндекс Дзен
 * http://sheensay.ru/?p=3478
 */
defined( 'ABSPATH' ) or exit;

add_action( 'admin_action_zen_update_post_meta', 'admin_action_zen_update_post_meta' );

function admin_action_zen_update_post_meta() {
	
	// Только админ имеет возможность отправки запросов
	current_user_can( 'manage_options' ) or exit;

	// Получаем все записи
	$p = get_posts( array(
		'posts_per_page' => -1,
		'post_type' => array( 'post' ),
		'post_status' => array( 'publish', 'future' ),
			) );

	// Перебор записей
	foreach ( $p as $post ) {
		setup_postdata( $post );

		// Прописываем записям метаданные, чтобы они попадали в RSS-ленту Яндекс Дзен
		update_post_meta( $post -> ID, 'is_in_zen', 'on' );
		
		// Удаляем метаданные, чтобы записи НЕ попадали в RSS-ленту Яндекс Дзен
		// delete_post_meta( $post -> ID, 'is_in_zen' );
		
	} wp_reset_postdata();

	echo 'Done';

	exit;
}

  1. Код выше копируете и вставляете в файл /wp-content/mu-plugins/zen_update_post_meta.php;
  2. Затем, запускаете следующий URL: http://example.com/wp-admin/admin.php?action=zen_update_post_meta (example.com меняете на свой домен);
  3. Страница может загружаться долго. Когда увидите надпись Done, значит всё готово, и все записи отмечены.

Настройка канала Яндекс Дзен

В этом разделе собраны решения по настройке канала.
Все настройки находятся в одном месте. Как туда попасть:

  1. Авторизоваться в Яндекс Дзен;
  2. В левом верхнем углу найти лого канала, нажать на него;
  3. Провести нужные манипуляции;
  4. Сохранить изменения.

Ниже приведены варианты, что можно настроить.

Как изменить URL канала Яндекс Дзен

По умолчанию, при регистрации Дзен, каналу даётся циферный неудобчитаемый адрес https://zen.yandex.ru/id/59706d883c50f7cc7f69b291. Чтобы заменить цифры на уникальный ярлык, например https://zen.yandex.ru/zenmag, нужно

  1. По инструкции выше перейти в настройки канала;
  2. Нажать кнопку Создать короткий адрес. Использовать можно латиницу, цифры и _.

    Если кнопки нет, значит, Ваш канал ещё не набрал необходимые 10 000 просмотров в неделю

  3. Сохранить изменения.

Сменить адрес можно только 1 раз за существование канала.

Подробности.

Как собирать статистику канала Дзен

Теперь можно подключить Яндекс Метрику, чтобы собирать аналитику канала.

  1. По инструкции выше перейдите в настройки канала;
  2. Перейдите в Метрику и добавьте новый счётчик, сохраните его уникальный номер (его можно найти на странице со списком всех счётчиков;
    Добавление нового счётчика в Яндекс Метрику
  3. Потом после создания счётчика вернитесь в настройки канала, и привяжите номер нового счётчика;
    Привязать № счётчика Яндекс Метрики к Яндекс Дзен
  4. Привязать № счётчика Яндекс Метрики к Яндекс Дзен
    счётчик Яндекс Метрики к Яндекс Дзен привязан



Так себеНеплохоНормальноХорошоОтлично (7 оценок, в среднем: 4,86 из 5)
Загрузка...


  • Добавить в избранные закладки для всех браузеров
  • HTTP — заголовки. Что это такое и зачем они нужны
  • Adblock Plus — как убрать рекламу из браузера
  • Вебмастер Яндекс — Оригинальные Тексты и WordPress
  • Disqus — система комментирования, соцсеть и плагин комментариев WordPress

Вебразработка

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие комментарии

  • Sheens к записи Что такое SSL и TLS, как установить и настроить
  • Геомант к записи Что такое SSL и TLS, как установить и настроить
  • Sheens к записи Last-Modified в WordPress
  • Артур к записи Last-Modified в WordPress
  • Sheens к записи EWWW Image Optimizer — плагин для сжатия png, jpeg, gif анимации без потери качества
  • Telegram
  • Вконтакте
  • Facebook
  • Twitter
  • Google+
  • Одноклассники
  • Мой Мир Mail.ru
  • RSS

Copyright © 2025 · Sheensay on Genesis Framework · WordPress · Log in