Создаем свой RSS канал с помощью Google Apps Script. RSS лента за десять минут

Вы наверняка знаете, что RSS лента WordPress (канал) отличается от сайта, и на один сайт можно создать сколь угодно различных RSS каналов. Не знаете? Читаем дальше.

RSS лента WordPress

RSS лента (канал, фид) это динамический файл формата XML, привязанный к домену сайта, формирующийся по определенным правилам. При публикации нового материала RSS лента этого типа материала дополняется и обновляется.

Если мы откроем файл RSS ленты сайта в браузере, то не увидим визуально понятной информации. Выглядит он так:

Чтобы сделать RSS канал читабельным, существуют, так называемые, RSS агрегаторы.

Важно! RSS агрегатор создаст из нечитабельного фида, отдельную rss ленту главной страницы сайта. Часто такие ленты называют «Новостная лента формата RSS».

Так как агрегаторов много, то можно создать сколь угодно RSS лент главной страницы сайта. У каждой ленты будет свой адрес в сети. Кроме этого, можно создать RSS канал не только для главной страницы сайта, но для различных разделов и новых комментариев.

Например , у вас интернет магазин на WordPress и все появление новых товаров вы отражаете в отдельном разделе «Новинки». Используя адрес фида этого раздела, вы можете создать новостную rss ленту раздела «Новинки». Эта лента будет нужна для создания новостной рассылки магазина.

Еще пример. У вас информационный блог WordPress и все новые статьи вы публикуете на главной странице. В этом случае достаточно создать rss ленту главной страницы блога, который будет пополняться материалом при выходе новой статьи или публикации новости на главной странице блога.

Адреса rss лент WordPress

CMS WordPress по умолчанию создает несколько RSS каналов сайта. Из них важны два главных (указаны относительные URL).

RSS лента WordPress в формате RSS2

  • Фид последних записей /feed/rss/
  • Фид свежих комментариев /comments/feed/rss/
  • Фид последних записей /feed/rss2/
  • Фид свежих комментариев /comments/feed/rss2/

В формате Atom

  • Фид последних записей /atom/
  • Фид свежих комментариев /comments/atom/

В формате RDF

  • Фид последних записей /rdf/
  • Фид свежих комментариев /comments/rdf/

В ядре системы есть файлы, которые выводят каждый из перечисленных фидов. Все лежат в каталоге wp-includes .

Для записей:

  • feed-atom.php (лента в формате atom)
  • feed-rdf.php (лента в формате rdf)
  • feed-rss.php (лента в формате rss) устарел
  • feed-rss.php (формат ленты rss2)
  • feed.php (функции фид-лент )

Примечание: Файл feed.php это RSS-контейнер для функции bloginfo. С помощью функции get_bloginfo () Вы можете получить преобразованную информацию лишенную тегов и символов для использования в фидах сайта.

Комментарии

  • feed-atom-comments.php (лента комментариев в формате atom)
  • feed-rss2-comments.php (лента комментариев в формате rss2)

Значок фида на сайте

В последних версиях WordPress, этот виджет убран из коробочной версии. Теперь этот виждет можно найти на системном плагине «JetPack» под названием «ссылки RSS JetPack».

Настроить, что показывать в фиде сайта WordPress, можно и нужно в консоли на вкладке «Написание», пункты:

  • В RSS-лентах отображать последние…
  • Показывать в ленте…, анонс или полное содержание.

Вывод 1

  • Главных RSS каналов (они же фид-ленты или фиды) сайта два: главной страницы и последних комментариев;
  • RSS лента WordPress имеет четыре формата: rss (устарел), atom, rss2, rdf;
  • С помощью rss-агрегаторов можно создать сколько угодно новостных rss-лент сайта.

Практика применения знаний о фидах WordPress

Для практического использования фид-лент сайта вам понадобится URL главного фида (/feed/) или URL новостного раздела, о котором я говорил в начале статьи (/category/name-category/feed/). feed можно поменять на нужный формат. Префикс category в URL используется в настройках по умолчанию.

Проверка фида

Для проверки фида сайта, нужно полный URL фида вписать в адресную строку браузера и проверить, как RSS лента WordPress отражается в браузере.

При желании или необходимости, можно проверить валидность фид-ленты на сервисе: http://validator.w3.org/feed/

Использование RSS ленты

Имея адрес фид-ленты сайта вы можете:

  • Показать новости сайта на другом WordPress сайта используя виджет «RSS», записи из любой ленты RSS или Atom;
  • Создать новостную рассылку на сервисе FeedBurner. Красивая рассылка со своей формой подписки;
  • Показать новости сайта в новостных каталогах, например, LiveRSS: http://liverss.ru/ ;
  • Создать новостную рассылку своим подписчикам на любом стороннем почтовом сервисе, типа MailChimp. Многофункциональная рассылка, интерфейс на английском языке, со своей настраиваемой формой подписки. Отлично интегрируется с WordPress.

Альтернативой FeedBurner и MailChimp может стать любой другой почтовый сервис: SmartResponder (умер 01-11-2016), UniSender (русс.), Aweber, а также Constant Contact, Campaign Monitor, GetResponse, ActiveCampaign, MyEmma, Mad Mimi, Infusionsoft, Feedblitz, HubSpot, MyNewsletterBuilder, Inbox First, Sailthru, Klaviyo, Vero, Pardot, Zapier, Ontraport, ExactTarget, Vertical Response, Drip, MailerLite, WhatCounts, ConvertKit, MailJet, Maropost.

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

Самый простой способ создать RSS-ленту для понравившегося сайта- воспользоваться сервисами или . Первый из них отличается рускоязычным интерфейсом и даже не требует регистрации. Второй имеет возможность перевода интерфейса на русский. Оба сервиса крайне просты в использовании. Чтобы получить RSS-ленту, достаточно указать ссылку на исходный веб-сайт. Никаких дополнительных инструментов, заводящих пользователя в тупик, не предусмотренно. Задача поиска обновляющихся элементов и оформления ленты целиком возложена на алгоритмы самих сервисов.

Более гибкие возможности редактирования собственных RSS-каналов предлагаются на сайтах и . Feedity сканирует указанную пользователем веб-страницу и составляет список всех расположенных на ней ссылок, которые ведут на новые сообщения или статьи. PonyFish имеет полезную особенность сохранение и передачи cookies, что позволяет обрабатывать страницы, для просмотра которых требуется регистрация.

Неплохие возможности генерации RSS-лент предоставляет сервис . Данный сервис, в отличие от выше рассмотренных работает в "полуавтоматическом" режиме. Пользователь может активно влиять на отбор данных для RSS-ленты и ее оформление. Еще один сервис предлагает для создания каналов новостей три режима: AnySite, MySite, Podcast. Понятно, что первый режим это создание Rss-канала для любого сайта. Второй режим предлагает самостоятельно поставить в коде своих вев-страниц теги разметки, на которые будет ориентироваться робот сервиса. И третий это возможность создания звуковых подкастов.

Если у вас уже есть RSS-лента, то в нее можно включить контекстную рекламу. Самый удачный для этого дела сервис Feedburner принадлежащий поисковому гиганту Google. Он достаточно тесно связан со службой AdSense, так, что при желании можно включить в свою ленту контекстную рекламу. Разместив уже сужествующую ленту на данном сервисе вы получаете возможностьдобавлять к ней ряд полезных сервисов, в том числе подкасты в видеофоматах.

Ну вот пожалуй и все. Воспользоваться одним их вышеприведенных сервисов для создания своей RSS-ленты не представляет из себя ничего сложного, достаточно лишь желания, а выгода для вашего сайта будет неоспоримой.

Есть у этого ресурса RSS лента последних изменений. Но вот беда - лента изменений самая минимальная. Там указано только кем, когда и какая страница редактировалась. Нет полных изменений и нет GUID у элементов ленты, поэтому некоторые RSS клиенты (например, Google Reader) не показывают большую часть новостей, считая их одинаковыми.

Для преобразования ленты в свой, удобный формат, выбор пал на такой специализированный инструмент, как Yahoo Pipes . Но тут постигла неудача. Для получения изменений странички, wiki строго требовала наличия cookie с именем «wikit_e» в http запросе, а научить Yahoo Pipes отсылать куки не получилось. Фокус с HTTP запросом GET и параметром в виде "?COOKIE=" так же не проходил.
В итоге, выбор пал на более гибкий инструмент - Google Apps Script . В итоге получился вот такой скрипт:
// Эта функция будет выполняться автоматически, при вызова скрипта как веб-приложения function doGet() { // Задаем URL исходной RSS ленты var feed = "http://wiki.tcl.tk/rss.xml"; // Определяем ID для доступа к кэшу var id = Utilities.base64Encode(feed); // Определяем кэш и пробуем забрать уже собранную ленту из него var cache = CacheService.getPublicCache(); var rss = cache.get(id); // Если в кэше лента не сохранена - переходим к ее созданию if (rss == null) { // Получаем данные RSS ленты в виде XML var data = UrlFetchApp.fetch(feed).getContentText(); var doc = Xml.parse(data); // Выбираем канал var channel = doc.getElement().getElement("channel"); // Выбираем название канала, ссылку, описание ленты var title = channel.getElement("title").getText(); var link = channel.getElement("link").getText(); var desc = channel.getElement("description").getText(); var guid, date; // Начинаем создавать свою RSS ленту, заполняем название, ссылку и описание rss = ""; rss += "" rss += "" + title + "\n"; rss += "" + link + "\n"; rss += "" + desc + "\n"; // Выбираем все элементы ленты и последовательно проходим по каждому var items = channel.getElements("item"); for (var i in items) { item = items[i]; // Выбираем из ленты заголовок, ссылку, дату новости, описание title = item.getElement("title").getText(); link = item.getElement("link").getText(); // Ссылка должна указывать на diff странички link = link.replace(/\/(\d+)$/, "/_/diff?N=$1#diff0"); date = item.getElement("pubDate").getText(); desc = item.getElement("description").getText(); // Формируем GUID для элемента ленты guid = Utilities.base64Encode(link + date); // Скачиваем diff страницы, используя при этом Cookie "wikit_e" как "rss" var fullpage = UrlFetchApp.fetch(link, {"headers":{"Cookie":"wikit_e=rss"}}).getContentText(); // Вырезаем из страницы только body var matched = fullpage.match(/]*>([\w\W]*)<\/body>/i); // Вырезаем заголовки и подвал страницы matched = matched.replace(/

Понравилась статья? Поделиться с друзьями: