XML Syndicator

Both Lite and Unlimited editions of the CyberSEO plugin are equipped with powerful XML/RSS Syndicator which allows to aggregate various types of RSS and XML feeds in order to automatically populate WordPress blogs with various content. The CyberSEO XML Syndicator works in conjunction with synonymizer/rewriter and has a rich set of options, which described below in details.

Syndicate this feed to the following categories

Here you can select the existing per-created WordPress categories where you want assign all the syndicated posts to.

Syndicate new feeds to the following categories

This option allows you to choose the author (registered WordPress user) for all posts that will be syndicated from the selected XML/RSS feed.

XML section tag names (separate with commas)

This is a very important option for syndicating and parsing of any unconditioned XML feeds. As you may know, the content of every RSS entry is enclosed within the <item> tags. E.g.:

<item>
    <title>Example entry</title>
    <description>Here is some text containing an interesting description.</description>
    <link>http://www.wikipedia.org/</link>
    <guid>unique string per item</guid>
    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
</item>

Thus any autoblogging plugin is able to properly recognize and parse the RSS feeds, since they have a very formalized structure. But if there is a need to parse an unconditioned XML feed, you may face a serious problem because this task can’t be done by other existing autoblogging plugins. Fortunately this is not a problem for CyberSEO.

Let’s consider we need to parse some XML feed which entries are enclosed within the <product> tags and have the following structure:

<product>
    <id>PRODUCT-73182373</id>
    <name>DuroStar DS7200Q Remote Control Silent Diesel Generator</name>
    <description><img url="http://static1.ostkcdn.com/images/products/P12338714.jpg"><br />Perfect for the job site or the residential user who needs back-up power Features: Electric start on panel plus remote start. Advanced direct fuel injection system for low fuel consumption. Dependable, maintenance free alternator with automatic voltage regulator. Full power panel with keyed ignition, oil alert automatic shutdown for low oil pressure, volt meter, circuit breakers, low fuel indicator and power outlets. 12 hours Continuous Operating Capability. Fully protected 12V, 120V & 220V outlets. Ground Fault Interrupter. DC 12V charging system.</description>
    <price>$1,000</price>
</product>

The first thing we need to do is to learn the CyberSEO plugin to recognize the new enclosing tags. To do so, we need to go to the “XML Syndicator” menu and click the “Alter default settings” button. Now we have to locate the “XML section tag names (separate with commas)” field, add there the new enclosure tag (e.g. PRODUCT) and click “Update Default Settings”. Done! Now the CyberSEO plugin will be able to recognize XML feeds where all items are enclosed within the <product> tag.

However we still can’t pull such feeds to the blog without some additional settings, because there is only one standard RSS tag int the example feed above. I’m talking about the <description> one. But there is no such important tags as <title> and <guid>. Furthermore, there are some additional tags (<name>, <id> and <price>) we may like to include into the post.

To solve this problem, we’ll use the “Custom Fields” and “PHP Code <?php .. ?>” options (find their detailed descriptions below). So lets’ assume that we already added the <product> tag into the list of recognized ones via the “XML section tag names” text field in the “XML Syndicator – Default Settings” page, saved the changes and added the new XML feed using the “New Feed URL:” box.

Thus we have to create post title and GUID using the data from feed. Apparently we can use the value of the <id> tag as a post GUID and the value of <name> as a post title. We also take the value of the <price> tag and place it below the product description.

First of all, we have to insert the following lines into the “Custom Fields” box:

id->guid
name->post_title
price->price

This will tell CyberSEO that the value of <id> must be assigned to the custom field “guid”, the value of <name> must be assigned to the custom field “post_title” and the value of <price> must be assigned to the custom field “price”.

On the second step, we need to assign these custom field values to the appropriate elements of the syndicating post. We can do it by placing the following code into the ”PHP Code <?php .. ?>” box:

$post['guid'] = $post['custom_fields']['guid'];
$post['post_title'] = $post['custom_fields']['post_title'];
$post['post_excerpt'] = $post['post_excerpt'] . "<br /><b>Price:</b> " . $post['custom_fields']['price'];

Now we just need to click “Update Feed Settings” and voilà – we are ready to automatically parse this unconditioned XML feed as a source of new posts for our blog!

Undefined categories

This option defines what the XML/RSS syndicator must do with the posts which categories are not per-defined in the blog. Here you can choose one of the four actions:

  • Use XML syndicator default settings – the default XML syndicator rules will be applied. You can assign these rules if you click “Alter default settings” button on the main “XML Syndicator” page.
  • Post to default WordPress category – the syndicating post will be assigned to the default category. No additional categories will be created.
  • Create new categories defined in syndicating post – all previously undefined categories, specified by the <categories> tag of the syndicating post, will be automatically created.
  • Do not syndicate post that doesn’t match at least one category defined above – if the syndicating post doesn’t meet at least one of the predefined categories, it will not be added to blog.

Create tags from category names

When this option is enabled, the CyberSEO plugin will automatically create WordPress tags from the categories, specified by the <categories> tag of the syndicating post.

Post tags

This text field allows you to create your own tags and assign them to all posts that will be syndicated from the selected feed.

Check for duplicate posts by

Use this option to define the way CyberSEO will use to detect and ignore the duplicated posts:

  • GUID and title – the post will not be added in case if either its GUID or title match one of the existing posts.
  • GUID only – the post will not be added in case if its GUID match one of the existing posts.
  • Title only – the post will not be added in case if its title match one of the existing posts.

Check this feed for updates every…

Use this option to set the time interval in minutes which defines on how often CyberSEO should check the selected feed for updates. If you don’t want to check the feed for updates automatically, simple set this value to 0.

Maximum number of posts to be syndicated from each feed at once

Here you can set the maximum number of posts that can be syndicated from the selected feed, every time when it’s checked by plugin for the updates. It is recommended to use low values to avoid the server overload. Also it will make your autoblog look like an organically growing one. Search engines don’t like those “blogs” that add 100 new posts at once…

Posts Status

This drop-down menu allows you to define the status of syndicated posts. There are four options that barely need any additional description:

  • Hold for review
  • Save as draft
  • Save as private

Comments

Use this option to enable or disable comments on the syndicating posts.

Pings

This option defines the ping status for the syndicated posts. You may either allow pings or forbid them.

Base date

Here you can choose the base date for the syndicating posts. If you select “Get date from post”, all new posts will be added with the same dates as specified in the RSS/XML feeds (in case if  the date is really specified there). But if you select “Use syndication date”, the new posts will be stamped with the actual date of their syndication.

Media Attachments

Some RSS feeds have so-called media attachments (usually thumbnail images) enclosed within <media:content>, <media:thumbnail> and <enclosure> (only the “image” type is supported) tags. The drop-down menu let’s you decide on what to do with these types of attachments:

  • Do not insert attachments – the attachment will be ignored and won’t be inserted into the post.
  • Insert attachments at the top of the post – the attachment will be placed at the top of the post.
  • Insert attachments at the bottom of the post – the attachment will be placed at the bottom of the post.

In case if you decide to insert the attachments, they will will contain in the <img> tag, so you will be able assign them some custom style.

Post links handling

Sometimes you may want to automatically remove a certain type of links from the syndicating posts. The “Post link handling” option allows you to do one of the following operations:

  • Keep links intact
  • Remove all links
  • Remove all links except links in images
  • Remove links from images only

Post thumbnail

When “Generate from the first post image” option selected, the CyberSEO plugin will generate post thumbnails (also known as featured images) using the first image found in the post content or excerpt. This feature is very indispensable when using magazine-style WordPress themes such as WP-Clear, onPlay, DelicateNews, Rebel Magazine, Arthemia, Premium News, Massive News, Zenko Magazine, Spectrum, Reflecta Magazine, Manifesto Magazine, Initiate Magazine etc.

Morph Headers and Footers

Use this option to enable or disable morphing/synonymizing of the headers and footers (see below) before their insertion into the syndicating posts.

Don’t Morph Titles

Use this option to allow or disallow synonymizing of the syndicating post titles.

Shuffle Paragraphs

Enable this option if you want to shuffle paragraphs of the syndicating posts.

Parse WordPress archives

If enabled and if the syndicating RSS feed was generated by another WordPress blog, the CyberSEO Suite will pull all the published posts from that blog, but not only those that are available in that feed. The plugin will parse through the WordPress archives, discover and aggregate every single post available there – doesn’t matter now many years the blog runs and how many posts it contains. Just enable the “Parse WordPress archives” and CyberSEO will grab the whole blog at once or do it post-by-post every given time interval. In other words, if some target WordPress blog has 1,000 posts on the board and there are only 10 recent ones in its RSS feed, the CyberSEO plugin will aggregate all 1,000.

This is an unique and very powerful function which is beyond the possibilities of other popular autoblogging scripts. So please use it wisely and DO NOT STEAL copyrighted content form other blogs without their owner’s permission! Otherwise you may face serious legal problems.

UTF-8 Encoding

This option converts an ISO-8859-1 string into UTF-8 that may be required when parsing the XML/RSS feeds containing illegal UTF-8 start bytes (e.g. <0×92>). Use it to aggregate even invalid feeds, that can not be parsed by other XML/RSS syndicators.

Convert Character Encoding

Enable this function if the selected feed contains is being delivered in some national character set (e.g. windows-1251) to automatically convert it into UTF-8.

Store Images Locally

If enabled, all images from the syndicating feeds will be copied into the default uploads folder of your blog. Make sure that your “/wp-content/uploads” folder is writable. This my speed up your blog’s loading time and also will let you to syndicate the posts containing hotlink-protected images.

Post Date Adjustment Range

Here you can set the syndication date adjustment range in minutes.
This range will be used to randomly adjust the publication date for every aggregated post. For example, if you set the adjustment range as [-60] .. [60], the post dates will be randomly spread between -60 and +60 minutes.

Post Headers and Post Footers

Everything that you put into these boxes will be added to every syndicated post at it’s top or bottom accordingly. You can use the post headers and footers to add some random text or HTML code to every syndicating post. In this case, each chunk of text must be separated with the “####more####” marker. For example, if you put the following text into the “Post Footers” box, every syndicated post will be amplified with a random Mark Twain’s quote:

I was gratified to be able to answer promptly. I said I don't know.
####more####
If you pick up a starving dog and make him prosperous, he will not bite you. This is the principal difference between a dog and a man.
####more####
If you tell the truth you don't have to remember anything.
####more####
In Paris they simply stared when I spoke to them in French; I never did succeed in making those idiots understand their language.
####more####
In religion and politics, people's beliefs and convictions are in almost every case gotten at second hand, and without examination.
####more####
In the first place, God made idiots. That was for practice. Then he made school boards.
####more####
It could probably be shown by facts and figures that there is no distinctly American criminal class except Congress.
####more####
It is easier to stay out than get out.

Custom Fields

Here you can assign the XML tag values to the custom fields of the syndicating post, using the following format:
tag->name – one line per field.
Where:
tag – the aggregating post’s tag you want to parse. This parameter is case insensitive;
name – the name of WordPress post custom field to write the value it. This parameter is case sensitive.

The example below, will store the values of <name> and <isbn> tags into the “book_title” and “book_isbn” custom fields:

name->book_title
isbn->book_isbn

Storing of the XML feeds as custom fields is necessary for syndicating of the unconditioned XML feeds (find an example in the description for “XML section tag names” field above).

PHP Code <?php .. ?>

This is the most powerful tool which is intended for advanced users who are familiar with PHP. Use it to execute your own PHP code for every aggregating post, which info is represented as the $post array variable. You can alter this variable in order to apply your own changes to every aggregating post (find an example in the description for “XML section tag names” field above). The following items are defined in the $post array variable:

  • $post ['post_title'] – title;
  • $post ['post_content'] – content;
  • $post ['post_excerpt'] – excerpt;
  • $post ['guid'] – guid;
  • $post ['post_date'] – date;
  • $post ['post_date_gmt'] – date in GMT format;
  • $post ['post_name'] – name;
  • $post ['categories'] – categories;
  • $post ['media_content'] – media content;
  • $post ['media_thumbnail'] media thumbnails;
  • $post ['enclosure_url'] – enclosure url;
  • $post ['custom_fields'] – an array of custom fields;
  • $post ['link'] – link;
  • $post['comments'] – and array may contain the post comments in the standard WordPress format.

If you modify the $post array (say change the post tittle, insert some text into the post’s body, or create your won tags according to the post’s content), your changes will be applied to the post BEFORE it will be processed by CyberSEO and added to the blog. If you don’t want some particular post to be syndicated (say it’s body contains some undesirable words etc), your PHP code must assign “false” to the $post variable.

You’ll find more examples in the special section of this site.