Генерация XML для импорта в wordpress – создаем сателлит

Схема XMLВ своей записи о размножении контента для создания сателлитов или продвижения сайта с использованием бесплатной программы для клонирования статейArticle Clone Easy” я отмечал теги, которыми размечаю размноженные статьи и обещал рассказать, для чего мне это нужно, а также выложить скрипт, которым в дальнейшем обрабатываю результаты клонирования:

“Вы наверняка обратили внимание на теги, которыми я оформляю заголовок, тело, порядковый номер и метки стать. Остановлюсь на них…”

С удовольствием исполняю обещанное 🙂
Итак, исходная статья успешно размножена (шаблон с примером по-прежнему доступен) и из нее получено N новых уникальных статей. WordPress правильной сборки установлен и настроен. Дело за малым – загрузить наш свежесозданный контент в слог и наслаждаться результатом!

В одиночный сателлит (скрипт для массовой публикации в блоги wordpress тоже будет опубликован, не пропусти!) контент проще всего, по-моему, загрузать, используя импорт XML, встроенный в движок wordpress. Именно этим путем я и намерен двигаться.

Что мы имеем на входе? На входе мы имеем файл, состоящий из множества записей вида:

<article_id>1</article_id>
<header>Yandex</header>
<body>Яndex — IT-фирма из Росии, являющая владельцем одноимённой системой поиска в Сети и интернет-порталом. <strong>Поисковая</strong> <strong>система</strong> «Яндекс» является 2-м по значимости неанглоязычным поисковым сервером после китайского Baidu и восьмой среди крупнейших <strong>поисковых</strong> <strong>сайтов</strong> мира по количеству обработанных <strong>поисковых</strong> запросов.</body>
<tags>yandex,поиск,яндекс,поисковая система</tags>
<category>Поиск,СЕО</category>

Примечание: тег “<article_id>” в данном способе массовой загрузки статей в wordpress не используется, но удалять его не слудует. Он нам ещё понадобится.

Данный файл, а точнее – записи из него нам нужно импортировать в наш wordpress-сателлит. Для решения указанной задачи и предназначен мой бесплатный скрипт под названием ACE-WPXMLCreator (домашняя страница).

Порядок работы с ним таков:


  1. Перекодировать исходный файл со статьями в Юникод  без использования BOM (UTF-8 without BOM). Под *nix это естественней всего будет сделать при помощи iconv:
    iconv FILE -f CP1251 -t UTF8 -o utf8-FILE
    ну а под windows рекомендую использовать бесплатный текстовый редктор “Notepad++“.
  2. Запускаем скрипт, указав в опциях вызова путь до исходного файла, а также, при желании, некоторые необязательные параметры:
    perl ACE-WPXMLCreator.pl articles_example.txt example_satellit.xml 2 open close
    (на опциях запуска подробней остановлюсь дальше).
  3. Импортируем получившийся в результате работы скрипта xml-файл при помощи штатного инструмента импорта wordpress.

А теперь – подробности.

Опции запуска следует указывать в таком порядке:

1. Обязательные опции:

articles_example.txt – имя исходного файла со статьями для сателлита;

2. Необязательные опции:

example_satellit.xml – имя выходного файла, называйте как захочется;
2 – количество статей, которые должны быть опубликованы за одни сутки, время публикации берется случайным образом. Данная опция позволит придать “человечность” вашему сателлиту, т.к. встроенный механизм отложенной публикации wordpress будет публиковать все запланированные статьи при наступлении указанного времени публикации.
Например, если у вас 5 статей и вы укажете публиковать по 2 за сутки, то на первые сутки будут запланированы к публикации 2 статьи, на вторые сутки – 2 статьи, на третьи сутки – оставшаяся 1 статья;
open – статус комментариев. open – разрешены, close – запрещены;
close – статус “пингбеков”. аналогично предыдущему.

Импорт статей в сателлит тоже несложно сделать:

1. Заходим в админку, далее Инструменты – Импорт – WordPress;
2. Выбираем созданный скриптом xml-файл со статьями для сателлита, жмём “Загрузить и импортировать файл“:

Загрузка XML3. Указываем, за чьим авторством будут числиться импортированные статьи. Можно создать нового автора, можно назначить уже существующего. Поддержки импорта вложений пока нет – соответственно галку можно не ставить. Нажимаем “Подтвердить“:

Назначение автора4. Вопреки радостной надписи, советующей “наслаждаться”, мы ещенемного поработаем 🙂

Блог успешно импортированА именно – идём в “Записи – Редактировать“. Необходимости в этом нет, но лично я предпочитаю лишний раз убедиться в правильности произведенных манипуляций. Убеждаемся, посмотрев на дату публикации записей:

Проверяем записиЗаписи запланированы для публикации и будут опубликованы автоматически, ваше участии более не требуется 🙂

Фактически, мы только что создали сателлит на wordpress за 5 минут!

В чём минус такого подхода (разового импорта контента в wordpress через xml)? Да в том, что весь контент (по крайней мере – большая его чатсть) должен быть готов заранее. Второй скрипт массовой публикации в блоги, который я обещал опубликовать, избавлен от этого недостатка.

В планах:

  1. Импорт картинок, находящихся в одной директории с исходным файлом;
  2. Разбивка итоговых файлов на части размером менее 2-х Мб (столько максимально позволяет за один раз импортировать движок wordpress);
  3. Заставить работать раскладку по категориям.

И как обычно, в завершение вы можете скачать сам скрипт для создания XML-шаблонов wordpress. В архиве находятся три файла:
ACE-WPXMLCreator.pl – исполняемый файл скрипта, для работы требует установленного интерпретатора Perl (например ActivePerl). Не забудьте выставить правильные права доступа к исполняемому файлу, в случае *nix-систем;
articles_example.txt – пример исходного файла со статьями для сателлита;
wp-satellit.xml – результат работы скрипта.

Онлайн-версия WPXMLCreator!
Удачи! 🙂

68 мыслей о “Генерация XML для импорта в wordpress – создаем сателлит”

  1. Привет! С удовольствием почитал Ваш блог. Хочу также поздравить Вас и всех читателей этого блога с новым 2010 годом. Удачи всем, новых жизненных побед и исполнения всех ваших замыслов. 🙂

  2. Приветствую автора блога. Немного не разобралась со скриптом, а именно с форматом указываемых опций (
    Заполняла по-разному:
    $infile = shift ‘\articles_example.txt’;
    $infile = shift ‘articles_example.txt’;
    $infile = shift || ‘\articles_example.txt’; и др.варианты, ОДНАКО УВЫ

    но никак не получается
    к примеру если файл лежит на рабочем столе, то в каком формате в настройках указывать путь?
    Или может запускаю скрипт не через ту прогграмму, я в этом в принципе нуб 🙂
    запускаю через ActivePerl (вернее пытаюсь)
    что я делаю не так?

    1. В самом файле скрипта этого указывать не нужно. Если на рабочем столе – достаточно сделать так:
      wpxmlcreator.pl "c:\documents and settings\%username%\Рабочий стол\имя_файла.txt"
      А вообще для простоты советую онлайн-версию генератора попробовать, у неё и возможностей больше.
      P.S. А если доп. возможности не нужны, а с указанием пути разобраться не получается – положите скрипт и нужный файл со статьями в одну папку и запускайте так:
      wpxmlcreator.pl имя_файла.txt

  3. Прошу прощения за возможно архиглупый вопрос, но что значит:
    “запускайте так:
    WPXMLCreator.pl articles_example.txt”?

    где указывать этот… парметр чтоли

    1. В консоли запускать. “Пуск-Выполнить-ввести cmd“.
      Если положите скрипт и файл со статьями в одну папку, то можете и внутри скрипта поменять:
      $infile = shift || ‘articles_example.txt’;
      и запускать двойным щелчком.

      Из консоли лучше тем, что после выполнения окно не закроется и можно будет увидеть, всё ли успешно прошло.

  4. Благодарю автора за терпение.
    Скрипт уже генерирует xml файлик 🙂
    правда к сожалению из файла с 20 постами он почему то берёт только первый для записи в xml 🙁
    Подозреваю, что дело тут в каком-то разграничителе между постами, который я упускаю:

    ?что должно быть здесь?

    1. в сообщении не отобразился код:

      “header/header
      body/body
      tags/ags
      categorycategory
      ?что должно быть здесь?
      header/header
      body/body
      tags/ags
      categorycategory”

        1. Это радует 🙂 А то я со вчерашнего вечера голову ломаю, в чём дело может быть и что вообще у вас сбивается.

  5. Malformed multipart POST – ошибку выдает онлайн скрипт. ошибка в скрипте или особенность моего файла на импорт?

    1. В принципе это ошибка скрипта и апача, но если она разовая, то её можно отнести на счёт случайного сбоя. Мне такую ошибку у скрипта вызвать не удаётся, так что если у вас она встречается постоянно – проблема может быть в том числе и в вашем файле.

  6. подскажите, если я генерирую файл, который будет входящим для вашего скрипта, как лучше указать переход на новую строку? или это не важно и можно кидать одну строку head,body,tags,categories?

    1. Кидать в одну строку нельзя – перевод строк между блоками статьи, заключёнными в теги, должен быть.
      Первую часть вопроса я не понял. Технически перевод строки должен быть в unix-стиле – “\n”, без возврата картеки.
      Если что – посмотрите справку к онлайн-версии генератора. Там же есть исходный файл с примером разбивки.

      1. вы ответили на мой вопрос 🙂
        у меня как раз была предыдущая ошибка из-за того(как мне кажется) что у меня перевод был с возвратом каретки \n\r

        1. Да, возврат каретки не обрабатывается (может и зря, но привычка работы в linux сильна 🙂 ).
          Прекрасно, что проблема решена.

          1. насчет работы – еще проверим.. я вам письмо отослал, хочу попробовать advanced версию 😉

  7. Привет. Вчера приобрел прогу. не могу разобраться как её запустить. вожусь уже 2 час. хелп!

    работаю с исходными файлами.
    программу пытаюсь запустить через пуск-выполнить-cmd
    прописываю полный путь.

    нажимаю ентер. процесса нет

    1. Мануал по установке ActivePerl? Не знаю даже. По-моему там достаточно периодически нажимать “Далее” в процессе установки и только.

Добавить комментарий для Макс Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *