Автоматический импорт видео и данных с YouTube в WordPress — задача, которую часто ставят перед собой владельцы тематических сайтов и блогов. Автопостинг позволяет экономить время, обновлять сайт свежим контентом без ручного копирования, но требует гибкой фильтрации и обработки данных, чтобы избегать мусора и сохранять уникальность публикаций.
Почему важна фильтрация и обработка контента при автопостинге YouTube
Не все видео с YouTube подходят для вашего сайта целиком. Без фильтрации можно получить посты с нерелевантным описанием, плохим качеством видео или контентом, который не соответствует тематике. Обработка помогает форматировать текст, вставлять нужные метаданные, добавлять превью и оптимизировать SEO.
Кроме того, YouTube API ограничивает количество запросов в сутки, поэтому важно оптимизировать процесс, чтобы не превышать лимиты и не создавать избыточные запросы.
Ниже мы рассмотрим пример создания собственного автопостинга с фильтрацией по ключевым словам, длительности видео и обработкой описания перед публикацией.
Используемые инструменты и библиотеки
Для работы с YouTube API понадобится зарегистрировать проект в Google Cloud и получить API ключ. В WordPress можно использовать стандартные HTTP-запросы или библиотеку Guzzle для удобства.
Для удобства обработки контента и вставки видео используем собственные функции с префиксом wpsocial_. Такой подход помогает избежать конфликтов с другими плагинами и темами.
Пример кода: автопостинг видео из YouTube с фильтрацией
Ниже приведён пример функции, которая получает список видео по плейлисту, фильтрует их по длительности и ключевым словам, и создаёт новые записи в WordPress с видео и описанием.
function wpsocial_get_youtube_videos_and_post($playlistId, $apiKey) {
$apiUrl = "https://www.googleapis.com/youtube/v3/playlistItems";
$params = [
'part' => 'snippet,contentDetails',
'maxResults' => 10,
'playlistId' => $playlistId,
'key' => $apiKey
];
$response = wp_remote_get(add_query_arg($params, $apiUrl));
if (is_wp_error($response)) return;
$data = json_decode(wp_remote_retrieve_body($response), true);
if (empty($data['items'])) return;
foreach ($data['items'] as $item) {
$videoId = $item['contentDetails']['videoId'];
$title = $item['snippet']['title'];
$description = $item['snippet']['description'];
// Фильтрация по ключевым словам
$keywords = ['wordpress', 'tutorial', 'plugin'];
$match = false;
foreach ($keywords as $keyword) {
if (stripos($title, $keyword) !== false || stripos($description, $keyword) !== false) {
$match = true;
break;
}
}
if (!$match) continue;
// Получаем длительность видео через Videos API
$videoDetailsUrl = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id={$videoId}&key={$apiKey}";
$videoResponse = wp_remote_get($videoDetailsUrl);
if (is_wp_error($videoResponse)) continue;
$videoData = json_decode(wp_remote_retrieve_body($videoResponse), true);
if (empty($videoData['items'])) continue;
$durationISO = $videoData['items'][0]['contentDetails']['duration'];
// Преобразуем ISO 8601 длительность в секунды
$duration = new DateInterval($durationISO);
$seconds = ($duration->h * 3600) + ($duration->i * 60) + $duration->s;
// Фильтрация по длительности (например, только видео короче 20 минут)
if ($seconds > 1200) continue;
// Создаём пост, если такого ещё нет
if (post_exists($title)) continue;
$post_content = wpsocial_format_youtube_content($videoId, $description);
$post_id = wp_insert_post([
'post_title' => $title,
'post_content' => $post_content,
'post_status' => 'publish',
'post_type' => 'post'
]);
if ($post_id) {
// Можно добавить мета-данные или категории
add_post_meta($post_id, '_youtube_video_id', $videoId);
}
}
}
function wpsocial_format_youtube_content($videoId, $description) {
// Очищаем описание от лишних ссылок и тегов
$clean_desc = wp_strip_all_tags($description);
$clean_desc = wp_trim_words($clean_desc, 40, '...');
// Вставляем видео через iframe
$iframe = '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . esc_attr($videoId) . '" frameborder="0" allowfullscreen></iframe>';
return $iframe . '<p>' . esc_html($clean_desc) . '</p>';
}Как настроить и запустить автопостинг
1. Зарегистрируйте проект в Google Cloud Console и получите API ключ для YouTube Data API v3.
2. Вызовите функцию wpsocial_get_youtube_videos_and_post с нужным ID плейлиста и вашим ключом API. Например, через крон-задачу WordPress или вручную.
3. Настройте фильтрацию ключевых слов и максимальную длительность видео в коде под задачи вашего сайта.
4. Добавьте дополнительную обработку, если нужно — например, вставку превью, категории или теги.
Автоматизация с помощью WP Cron
Для регулярного обновления контента рекомендуется запланировать вызов функции с помощью WP Cron.
function wpsocial_schedule_youtube_import() {
if (!wp_next_scheduled('wpsocial_youtube_import_hook')) {
wp_schedule_event(time(), 'hourly', 'wpsocial_youtube_import_hook');
}
}
add_action('wp', 'wpsocial_schedule_youtube_import');
add_action('wpsocial_youtube_import_hook', function() {
wpsocial_get_youtube_videos_and_post('ВАШ_PLAYLIST_ID', 'ВАШ_API_KEY');
});Альтернативные плагины для автопостинга с YouTube в WordPress
Если хочется готовое решение с настройками через интерфейс, можно рассмотреть плагины:
- Feedzy RSS Feeds — умеет импортировать из RSS, в том числе YouTube-каналы через RSS, с фильтрацией и шаблонами.
- WP YouTube Lyte — облегчённый плагин для вставки видео с оптимизацией, но без автопостинга.
- Video Blogster Pro — платный плагин с мощным функционалом автопостинга из YouTube с фильтрацией.
Для интеграции с вашим сайтом и тонкой настройки фильтрации и обработки лучше написать кастомный код, как в примере выше.
Советы по улучшению автопостинга и SEO
• Добавьте уникальное вступление или комментарии к каждому посту, чтобы сделать контент уникальным и повысить SEO.
• Используйте мета-данные YouTube (теги, категории) для автоматического назначения категорий в WordPress.
• Оптимизируйте загрузку видео — используйте ленивую загрузку iframe или плагин, например, Clearfy Pro, для ускорения сайта.
• Не забывайте про регулярное обновление ключей API и мониторинг ошибок запросов.