Content Syndicator – CyberSEO Pro

CyberSEO Pro Content Syndicator

Content Syndicator

CyberSEO Pro Syndicator

The CyberSEO Pro Syndicator offers exceptional flexibility in terms of content source parsing. It can handle various formats such as RSS, Atom, JSON, CSV, and raw text dumps. To add a new content source, simply choose the relevant window (feed or CSV), enter the source’s URL or paste the CSV/text dump, and submit it to CyberSEO. Once done, you can customize the source’s settings. All supported sources are treated as XML feeds, which means they share the same options.

Moreover, you can also import social media resources from Twitter, TikTok, Instagram, Telegram, and Reddit, as well as links to Amazon product search pages or Sitemap XML’s, all from the same menu. Depending on the source, you may need to select a preset or the type of content will be detected and processed automatically.

RSS/Atom, XML, JSON and CSV feeds, social networks, tubes, marketplaces

CyberSEO Pro Syndicator Basic

CSV files and raw text dumps.

To import CSV files into CyberSEO Pro, there are two methods available. The first method allows you to import large, dynamically updated CSV files with headers directly from a remote host. To use this method, simply enter the file’s URL into the “RSS/XML/HTML/JSON/CSV source” box and enable the “Treat as CSV” option. This method does not use your server memory or database to store the source data, making it ideal for importing large product CSV sheets from online marketplaces like AliExpress or Admitad.

The second method is suitable for importing CSV or comma/semicolon/pipe delimited raw text dumps without headers. To use this method, copy and paste the CSV content into the “CSV or text dump” box, select the delimiter type, and assign the desired post element names such as title, content, description, link, thumbnail, date, and so on. However, it’s important to note that this method can only be used with static data and uses your server memory to store all the content, so it’s not recommended for importing large product lists.

Once you have selected your desired method, simply choose the appropriate dump format and the desired post structure.

CyberSEO Pro: CSV files and raw text dumps. Here you have to select the dump format and the desired post structure

Generating WordPress posts based on a CSV file with article topics

Quick override default settings

To temporarily modify default settings for the CyberSEO content syndicator, use this form before adding a new feed URL. You can customize settings such as a fake user agent and post headers for the specific feed. These options apply only to the next feed that you add and will not be stored in the database like the default settings for feeds.

Mass modify selected feeds

Modifying options for multiple feeds in CyberSEO Pro Syndicator can be a hassle, but the “Modify selected feeds” button makes it easy. Simply select the feeds you want to modify, and click the button. To apply an option to all selected feeds, check the red checkbox to the left of that option. Unchecked options will not be modified. With this feature, you can easily make changes to multiple feeds at once, saving you time and effort.

Batch feed settings import/export

To easily transfer your selected feed settings to other sites, use the menu at the bottom of the “Content Syndicator” page to batch import and export them from/to a text file. This feature allows you to conveniently save your feed settings and import them into other instances of CyberSEO Pro Syndicator, saving you time and effort in setting up new feeds.

Basic Settings

CyberSEO Pro Syndicator Basic

Preview mode

On the feed settings page, you’ll find the “Preview mode” drop-down menu in the top left corner. This menu allows you to switch between different post preview modes, which may include:

  • Post content
  • Full text article
  • Attachment
  • XML structure

Since CyberSEO Pro converts all content sources into XML, the XML structure preview mode is always available. However, the other three preview modes may or may not be available depending on the source content. For example, if the plugin is unable to extract the full text article, the corresponding option won’t be shown. If there is no media attachment, the “Attachment” option will be hidden. Similarly, if there is no <description> or <content> XML section, the “Post content” option won’t be available.

Using the “Preview mode” drop-down menu, you can examine the content source you’re syndicating. You can see its XML structure, any attached media (if applicable), and you can compare the original article from the feed to its full version scraped directly from the website. This can help you decide which version of the article you want to import.

Feed title

You can modify/assign the feed title, which will be shown in the list at the main CyberSEO Pro Syndicator page.

Feed URL

Here you can alter the actual URL of the feed or an unique ID in case of CSV file.

Parse WordPress archives

If enabled, CyberSEO Pro can extract all published posts from a WordPress blog, regardless of whether they are available in the syndicating RSS feed or not. This feature, called “Parse WordPress archives,” allows the plugin to parse through the blog’s archives and import every single post available, even if the blog has been active for many years and has thousands of posts. This feature sets CyberSEO Pro apart from other content curation plugins and is a powerful tool. However, please use it responsibly and only import content with the owner’s permission to avoid legal issues related to copyrighted material.

When all posts will be imported, the “Parse WordPress archives” option will be automatically disabled.

Shuffle feed items

Enable this option to shuffle the XML entries to make them added in a random order.

Check for duplicate posts by

Use this option to specify how CyberSEO will detect and avoid importing duplicate posts:

  • Link and title: The post will not be imported if either its source link or title matches an existing post.
  • Link only: The post will not be imported if its source link matches an existing post.
  • Title only: The post will not be imported if its title matches an existing post.
  • Don’t check for duplicate posts: The uniqueness of the post will not be checked, and it may be imported even if it is a duplicate.

Post type

Select the desired post type such as post, page, attachment, revision, nav_menu_item, custom_css, customize_changeset, user_request or any custom post type, such as WooCommerce product etc.

Custom post template

Here you can select a custom template for posts belonging to custom post types.

Custom taxonomies

Custom taxonomies can be assigned to a selected post type in CyberSEO Pro Syndicator by using the “Assign custom taxonomies” option. To do this, simply enter the desired taxonomy tags separated by commas.

For advanced users, custom taxonomies can also be assigned using PHP code. For example, the code “$post[‘custom_taxonomies’][‘my_custom_taxonomy’] = ‘tag1, tag2, tag3’;” would assign the “my_custom_taxonomy” to the selected post type with the tags “tag1,” “tag2,” and “tag3.”

Advanced users may also do it by means of PHP code. E.g.:

$post['custom_taxonomies']['my_custom_taxonomy'] = 'tag1, tag2, tag3';

In the example above, my_custom_taxonomy must be defined for the selected post type. It is recommended to use a plugin like Custom Post Type UI to manage custom post types and taxonomies more easily.

Post format

Select the desired post format default, aside, gallery, link, image, quote, status, audio, video or chat.

Post author

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


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

Undefined categories

When none of the post categories match the predefined ones, the “Undefined categories” option in CyberSEO Syndicator comes into play. You can choose from the following four actions:

  • Use XML syndicator default settings: The default XML syndicator rules will be applied. You can assign these rules by clicking the “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, and 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 the blog.

Create tags from category names

Creating WordPress tags from the categories specified by the <categories> tag of the syndicating post is easy with the CyberSEO Pro plugin. When this option is enabled, the plugin will automatically convert the RSS categories into WordPress tags.

But why is this necessary? Well, both RSS and Atom feeds use categories to classify articles, unlike WordPress which also uses tags. While other XML-based data formats may use tags, RSS does not. By enabling this option, you can ensure that when you import a post from a feed, its RSS categories are converted into WordPress tags. This is just one of the many helpful features that CyberSEO Pro offers for optimizing your content.

WPML language

This option is available only if the WordPress WPML plugin is installed and active. Use the “WPML language” drop-down menu to select a WPML language code.

Polylang language

This option is available only if the WordPress Polylang plugin is installed and active. Use the “Polylang language” drop-down menu to select a Polylang language code.

Post tags

You can create your own tags and assign them to all the posts that will be syndicated from the selected feed by entering them in this text field.

Auto tags

If you enable this option in CyberSEO Pro, the plugin will automatically search for tags that already exist on your website within your content and add them to the imported posts. For instance, suppose you have manually defined the following tags on your website through the Posts->Tags WordPress dashboard menu: “sport”, “weather”, “toys”, and “books”. If a post with the following content is imported, it will be automatically tagged as “weather” and “sport”:

“The weather today is very dank, which is not conducive to sport activities…”

Tags to WooCommerce

Check this option to assign importing post tags to WooCommerce product categories.

Categories to WooCommerce

Check this option to assign importing post categories to WooCommerce product categories.

Check this feed for updates every […] minutes

You can use this option to specify how often CyberSEO Pro should check the selected feeds for updates, in minutes. If you want to disable automatic updates, set the value to “0”.

Maximum number of posts

In this setting, you can specify the maximum number of posts that CyberSEO Pro can syndicate from the selected feed each time it checks for updates. It’s important to use reasonable values to avoid overloading your server and to make your self-populating site appear more natural. Search engines tend to dislike sites that add a large number of posts all at once.

Re-publish existing posts

This feature may be used by some website owners to ensure that currently online content is always displayed at the top of the main index page. However, we recommend caution when enabling this option, as it may not be suitable for all types of websites.


The Delay option allows you to specify the time interval, in seconds, between adding new posts. This feature is particularly useful when dealing with third-party services such as the OpenAI GPT API, which may have rate limits. If the script calls the API too often, it may result in an error message such as “Rate limit reached for default-gpt-3.5-turbo in organization … on requests per min. Limit: 3 / min. Please try again in 20s“.

By setting a delay, you can ensure that the script pauses for a certain amount of time before adding a new post from the feed. This helps prevent exceeding the rate limits imposed by such services and allows for smooth and uninterrupted operation.

It is also recommended to set a delay when parsing Amazon product search pages and other resources that don’t like frequent requests and may temporarily ban your host IP for it.

Feel free to adjust the delay according to the rate limits and requirements of the third-party service you are using.

Post status

This drop-down menu allows you to select the status of syndicated posts. There are four options:

  • Publish immediately: The syndicated post will be published immediately, without any further review or editing.
  • Hold for review: The syndicated post will be saved as a pending review, which means it won’t be published until it is approved by a user with the appropriate permission.
  • Save as draft: The syndicated post will be saved as a draft, which means it won’t be published until it is edited and published manually.
  • Save as private: The syndicated post will be saved as a private post, which means it won’t be visible to anyone except the site administrator and users with the appropriate permission.


This option allows you to control whether comments are enabled or disabled on syndicated posts. Enabling comments can encourage user engagement and discussion on your site, but it can also lead to spam and other unwanted content. Disabling comments may be preferable if you do not have the resources to moderate them or if you want to keep the focus solely on the content of the syndicated post.


Ping is a mechanism used by WordPress to notify other websites that your blog has been updated with a new post. If you enable this option, your blog will notify other websites every time a new post is syndicated from the selected feed. If you disable it, no notifications will be sent. It’s recommended to keep this option enabled as it helps to increase visibility and attract more traffic to your site.

Shuffle paragraphs

By enabling this option, CyberSEO Pro will shuffle the paragraphs of the syndicated posts. This can be useful for creating unique content and avoiding duplicate posts.

UTF-8 encoding

The UTF-8 encoding option can convert an ISO-8859-1 string into UTF-8, which may be necessary for parsing XML/RSS feeds that contain illegal UTF-8 start bytes (such as <0x92>). This option can be useful for aggregating even invalid feeds that cannot 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, ISO-8859-1) to automatically convert it into UTF-8.

Base date

The Base date option allows you to choose the date that will be assigned to the syndicating posts.

If you select “Get date from post”, the new posts will have the same dates as the original posts in the RSS/XML feeds (provided the dates are specified there).

If you select “Use syndication date”, the new posts will have the actual date of their syndication.

Post date adjustment

The “Post date adjustment” option allows you to adjust the publication dates of syndicated posts by a specified range of minutes. By default, the posts are published with the syndication date or with the same dates as specified in the RSS/XML feeds. However, you can use this option to randomize the publication dates of the posts, which can be useful for preventing all posts from appearing on your site simultaneously.

For example, if you set the adjustment range to [-60] .. [60], the post dates will be randomly spread between 60 minutes before and after the syndication date or the actual date in the feed. You can also use this option to set the publication dates of posts to the past or schedule them for the future. For instance, if you set the adjustment range to [-1440] .. [-60], the posts will be scheduled to publish within a 24-hour period from 60 minutes to 24 hours before their original publication date. Similarly, if you set the adjustment range to [60] .. [1440], the posts will be scheduled to publish within a 24-hour period from 60 minutes to 24 hours after their original publication date.

Post lifetime

This option allows you to set the maximum period of time in hours for which the syndicated posts will be kept on your site. After this time has elapsed, the posts will be automatically deleted. If you don’t want to limit the post lifetime, simply set this parameter to 0.

This feature can be particularly useful for online shops or similar projects where you need to keep your content constantly updated. By setting a post lifetime, you can ensure that old or outdated products or information are automatically removed from your site, keeping it fresh and up-to-date.

Advanced Settings

CyberSEO Pro Syndicator Advanced

Extract full text articles

The CyberSEO Pro plugin can automatically attempt to extract the full text of articles from shortened RSS feeds, if this option is enabled.

This feature can be useful if you want to have complete articles displayed on your site, rather than just snippets or summaries. It can also help ensure that your site’s content is unique and not just duplicating what is already available elsewhere.

There are two methods to extract full text articles: using Full-Text RSS script and custom.

Full-Text RSS

The Full-Text RSS script is an optional 3rd-party GPL product, which can be used optionally via REST API. It’s not a part of the CyberSEO Pro distributive and installs separately and provided “AS IS”. The script is able to extract full text articles from almost all webpages that contain the original article. However, sometimes it could fail or extract the article without some of its parts such as embedded videos etc. So it’s important to note that not all RSS feeds will contain the necessary information for the plugin to extract the full text.

In order to use this method, just select the “Use Full-Text RSS script” in the “Extract full text articles” drop-down menu.


This method will come to your rescue when the universal Full-Text RSS script is ineffective. One drawback, however, is that it will only work with pages from a specific website where all article pages have the same fixed layout. This means you’ll need to configure it individually for each separate RSS feed you plan to import using the CyberSEO Pro plugin. Unfortunately, it also won’t work with RSS feeds from aggregators like Google News and Bing News, since their articles are located on separate websites, each with their own unique HTML layout.

In order to use this method, just select the “Use custom settings” in the “Extract full text articles” drop-down menu, to activate the additional options menu where you can configure the plugin to extract the full text articles from HTML pages according to your rules, such as:

Container tag

Enter the tag name that wraps the main content of the HTML page (e.g., article, div, section). This tag will be used to identify the element containing the full-text article.

Attributes (JSON format)

Specify the attributes and their values for the tag selected above. Use JSON format to define attribute-value pairs. E.g. {"class": "article", "id": "main"}. This will help the plugin to accurately identify the correct element containing the full-text article if there are multiple elements with the same tag name.


Check this option if you want to include the selected tag and its attributes in the extracted content. Leave it unchecked if you only want to extract the inner content of the tag.

Advanced users can leverage the flexibility of CyberSEO Pro and use their own PHP snippets to process the feeds. They can write and integrate their own custom code to parse the HTML code of the original webpage articles and extract the full-text articles. This way, they can ensure that the full text of the articles is always extracted and that no valuable content is lost in the syndication process.

⚠ When the “Extract full text articles” mode is enabled in CyberSEO Pro, the plugin will attempt to automatically extract full-text articles from the shortened RSS feed. However, if the plugin is unable to retrieve the full-text article, the post will not be added.

Extracting full text articles using container tags

HTML tags to strip

Specify a comma-separated list of HTML tags you want to remove from the generated posts, e.g.: h1, img, script, style.

Newlines to paragraphs

When the “Newlines to paragraphs” option is not enabled, newlines (LF, NL) are treated as whitespace characters by HTML standard. This means that consecutive newlines are treated as a single space, and a single newline is simply ignored.

Therefore, if the source content doesn’t have any HTML paragraphs, enabling this option will automatically convert newlines into HTML paragraphs, making the content easier to read and more structured for the reader. It is recommended to use this option only in special cases.

Sanitize content

Sanitizes the post content. When enabled, the plugin does the following:

  • checks for invalid UTF-8;
  • converts single < characters to entities;
  • strips all tags like <iframe>, <embed>, <style>, <script> etc;
  • removes line breaks, tabs, and extra whitespace;
  • strips octets.

Balance tags

The “Balance tags” option uses the WordPress API to fix redundant and unclosed HTML tags in the post content and excerpt. However, it should only be used if you can control the length of the post content. Otherwise, it may cause memory issues or other bugs.

It’s important to note that this option uses two hard-coded lists of elements for single tags and nestable tags. While WordPress uses multiple lists, they are not always kept in sync. If an element is not included in these lists or has changed its nesting behavior, it may lead to incorrect markup.

Shorten post excerpts

Use this option to set the maximum number of words to be included in post excerpts. Enter “0” to remove excerpts completely, or leave the field blank to keep the excerpts as they are.

Links handling

Links handling” refers to how the CyberSEO Pro plugin should treat links within syndicated posts. You have four options to choose from:

  • Keep links intact: This option will not modify any links within the syndicated post.
  • Remove all links:  This option will remove all links from the post.
  • Remove all links except links in images: This option will remove all links from the post, except for links contained within images.
  • Remove links from images only: This option will remove links that are contained within images, but keep any other links intact.


The CyberSEO Pro plugin provides an option to use Google, Yandex, or DeepL service to automatically translate your posts to or from over 100 languages. To use this feature, you need to set the source and destination languages and enter your service API key. Note that Google Translate and DeepL are paid services, while Yandex Translate is free. In case the translation fails, the post will not be added. Additionally, CyberSEO Pro allows users to use their own PHP snippets to process the feeds, which can be used to parse the HTML code of the original webpage articles and extract full-text articles for translation.

Built-in synonymizer

The built-in synonymizer can be enabled, disabled, or set to be applied before or after a 3rd-party spinner. You can configure the synonym table on the Synonymizer/Rewriter page.

Parse Spintax

Converts Spintax in post templates into a regular spun text.

Content spinner

This option allows you to choose a third-party spinner from the drop-down menu, and configure its specific parameters if required. The CyberSEO Pro plugin currently supports the following content spinners:

  • OpenAI GPT
  • SpinnerChief
  • SpinRewriter
  • ChimpRewriter
  • TBS
  • WordAi
  • ESpinner (Spanish)
  • X-Spinner
  • Textorobot (Russian)

CyberSEO Pro Syndicator Content Spinners

We recommend using the CyberSEO Pro’s exclusive OpenAI GPT content spinner. This spinner is built into the plugin and does not require any 3rd party service registration, except for the OpenAI API key, which you can register here. The OpenAI GPT content spinner uses the fast and high-quality OpenAI GPT 3.5 Turbo model, and it allows you to spin enormous HTML pages without the OpenAI model’s limitation on the number of tokens.

The CyberSEO Pro OpenAI GPT content spinner preserves your existing page layout including paragraphs, headings, images, embedded videos, tables, lists, and even math formulas and code blocks written in any programming language. Only the text will be rewritten. However, please note that the CyberSEO Pro OpenAI GPT content spinner works with English texts only and is not intended to spin content in other languages.

Also, please keep in mind that OpenAI GPT has some limitations on the type of content that can be processed. For example, topics related to hate speech, violence, pornography, and political propaganda are prohibited by OpenAI’s policy. Therefore, the plugin will not spin any text sections that contain such content, so they will be left intact.

Additionally, please note that the quality of the spun content will depend on the quality of the original content. If the original content is poorly written, the spun content may also be of poor quality. Therefore, it is important to use high-quality content as the input to the content spinner in order to obtain the best possible results.

The OpenAI GPT Content Spinner in CyberSEO Pro


CyberSEO Pro provides the ability to create custom HTML templates for the post title, post slug, post content, and post excerpt. These templates allow you to design the layout and structure of the posts created by the plugin according to your preferences.

The following template shortcodes are available:

  • %post_title% – post title;
  • %post_content% – post content;
  • %post_excerpt% – post excerpt;
  • %post_excerpt_notags% – post excerpt with stripped HTML tags;
  • %link% – a link to source;
  • %post_guid% – post GUID;
  • %media_description% – post media description (if media attachments are included);
  • %enclosure_url% – the enclosure URL (if attachment enclosure is included);
  • %xml_tags[name]% – an XML tag value, where name must be replaced with the actual XML tag name;
  • %params[name]% – a value of the specified feed URL parameter. E.g. if the feed URL is, the %params[_nkw]% will be replaced with “books”.
  • %custom_fields[name]% – a custom field value, where name must be replaced with the actual custom field name;
  • %custom_fields_attr[name][attr]% – a custom field attribute, where name must be replaced by the actual custom field name and attr must be replaced by the XML attribute name;
  • %media_thumbnail[n]% – a link to the media thumbnail, where n is its integer index (if media attachments are included);
  • %random_image[keyword]% – a random image URL for a given keyword from the Google Images search results with the “Creative Commons licenses” filter applied.
  • %pixabay[keyword]% – a random full-size image URL for a given keyword from the Pixabay image stock search results..
  • %youtube_video[keyword]% – a YouTube video embed code for a given keyword.

You can use shortcode inside of shortcode in CyberSEO Pro. For example, you can use the following shortcode to insert a YouTube video relevant to the current post title directly into its body:


This one will add a relevant image:


A cool feature, isn’t it?

If you want to add some text to every post title (say “Breaking news:”), you should alter the “Post title” template like this:

Breaking news: %post_title%

The “Post content” template below inserts a random image of a Christmas tree at the top of the post:

<img class="aligncenter" src="%random_image[christmas tree]%" />

Don’t need a picture of Christmas tree? Not a problem, this template will a random creative commons image found in Google for the actual post title:

<img class="aligncenter" src="%random_image[%post_title%]%" alt="%post_title%" />

This “Post content” template adds a backlink below the post content:

%post_content% <p>Source: <a href="%link%" target="_blank">%link%</a></p>.

Here is another example. Let’s say you are going to import a product XML feed which has the following items:

    the product name
    the product picture URL
    the product price

The only thing you have to do is to simply define your “Post template” like this:

<image src="%xml_tags[picture]%" />
<p><b>Price:</b> %xml_tags[price]%</p>

Be sure to check out this educational article:

How to import XML files into WordPress posts with CyberSEO Pro

WordPress Shortcodes

Shortcodes are a powerful feature of CyberSEO Pro that allow you to use WordPress-style shortcodes with additional arguments in the “Post template”. These shortcodes cannot be used in the “Post title”, “Post slug”, and “Post excerpt” templates. Unlike the standard WordPress shortcodes, they only apply when the plugin generates posts automatically, and they won’t work when you manually add or edit posts. With WordPress-style shortcodes, you can customize your posts with various arguments, making your content more dynamic and engaging.

[cyberseo_openai] shortcode

Use this the cyberseo_openai shortcode to insert OpenAI GPT generated texts into your posts. The shortcode has the following format:

[cyberseo_openai model="gpt-3.5-turbo" prompt="your OpenAI GPT3 assignment" max_tokens="3500" temperature="0.3" top_p="1.0" best_of="1" presence_penalty="0.1" frequency_penalty="frequency_penalty"]

The prompt parameter is mandatory. It contains your assignment for OpenAI GPT. All other parameters are optional and can be omitted. Please see the description of these parameters here.

[cyberseo_dalle] shortcode

Use this the cyberseo_dalle shortcode to insert OpenAI DALL∙E 2 generated images into your posts. The shortcode has the following format:

[cyberseo_dalle prompt="your OpenAI DALL∙E assignment" name="%post_title%" n="1" size="512x512" class="aligncenter"]

The prompt parameter is mandatory. It contains your assignment for OpenAI DALL∙E. The name string is be used as a filename and as an image alt attribute value. All other parameters are described here.

[cyberseo_stable_diffusion] shortcode

Use this the cyberseo_stable_diffusion shortcode to insert OpenAI DALL∙E 2 generated images into your posts. The shortcode has the following format:

[cyberseo_stable_diffusion text="your Stable Diffusion assignment" name="%post_title%" stable_diffusion_engine="stable-diffusion-512-v2-1" cfg_scale="7" clip_guidance_preset="NONE" height="512" width="512" steps="50" class="aligncenter"]

The text parameter is mandatory. Itcontains your assignment for Stable Diffusion 2.1. The name string is be used as a filename and as an image alt attribute value. All other parameters are described here.

[cyberseo_gallery] shortcode

Use the cyberseo_gallery shortcode in your post templates in order to insert an image gallery into your post. E.g.:

[cyberseo_gallery url="%link%" featured_image="first" link="file"]

The following parameters are available for the cyberseo_gallery shortcode:

  • url: the source gallery URL;
  • featured_image: use first, last, random or leave it empty if you don’t want to generate featured image at all;
  • max_images: max number of images in the gallery (default: all images);
  • cols: a number of columns in the gallery (default: 4);
  • size: specify the image size to use for the thumbnail display. Valid values include thumbnail, medium, large, full and any other additional image size that was registered with add_image_size(). The default value is thumbnail. The size of the images for thumbnail, medium and large can be configured in WordPress admin panel under Settings > Media.
  • link: can be file (links directly to image file), none (no link) or leave it empty if you want to link it to the attachment’s permalink.
  • on_fail: use the delete value to prevent import of posts which have no galleries.

⚠ Important: If you intend to use the cyberseo_gallery shortcode, make sure to set the “Post thumbnail” option to “Do not generate”. Otherwise, the thumbnail will be ignored.

[cyberseo_pixabay_image] shortcode

Use the cyberseo_pixabay_shortcode shortcode in your post templates in order to insert a full-size image from E.g.:

[cyberseo_pixabay_image "q"="keyword", "lang"=>"en", "image_type"="all", "orientation"="all", "category"="", "min_width"="0", "min_height"="0", "colors"="", "order" => "popular", "page"="1", "per_page"="200", "safesearch"="false", "editors_choice"="false", "choose"="0", "class"="aligncenter", "name"="image title"]

The following parameters are available for the cyberseo_pixabay_shortcode shortcode. Please refer to Pixabay section of this manual for details.

Remove emojis from post slugs

While funny emojis may look nice in post titles, they can be undesirable in post slugs (the post links). To prevent them from appearing in slugs, enable this option, which will safely strip them off from your post slugs.

Don’t synonymize titles

This option allows you to control whether or not the plugin should synonymize the titles of your posts. By default, CyberSEO Pro will apply the built-in synonymizer to both the post title and content. However, you may want to disable the synonymization of titles, while still applying it to the content.

To do so, simply enable this option. Conversely, if you want the plugin to synonymize both titles and content, leave this option disabled.

Post headers and post footers

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:

Post headers and post footers are customizable fields that allow you to add any text or HTML code to the top or bottom of each syndicated post. You can use these fields to add random text, quotes, or links to your website or source, among other options.

To add random text or quotes, use the <!--more--> separator string to break up each section of text. For example, if you add the following quote to the “Post Footers” box, a random Mark Twain quote will appear at the end of each syndicated post:

I was gratified to be able to answer promptly. I said I don’t know.
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.
If you tell the truth you don’t have to remember anything.
In Paris they simply stared when I spoke to them in French; I never did succeed in making those idiots understand their language.
In religion and politics, people’s beliefs and convictions are in almost every case gotten at second hand, and without examination.
In the first place, God made idiots. That was for practice. Then he made school boards.
It could probably be shown by facts and figures that there is no distinctly American criminal class except Congress.
It is easier to stay out than get out.

You can also use predefined shortcodes to automatically include post information in your headers and footers. These shortcodes are available for post title, post content, and post excerpt templates. For example, if you want to include a link to the source of your syndicated post, you can use the following line in the “Post footers” box:

<p><a href="%link%">Source</a></p>

Custom fields

In the “Custom fields” section, you can assign values from XML tags to custom fields in the syndicated post. The format for doing so is:


where “tag” is the name of the XML tag you want to select, and “name” is the name of the WordPress post custom field where you want to write the selected value. Note that the “name” parameter is case-sensitive.

For example, the following configuration would store the values of the <name> and <isbn> tags as the book_title and book_isbn custom fields, respectively:


To store the value of the image_url tag in the thumb custom field, use the following format:


You can also write a fixed arbitrary string value into a post custom field. To do so, you have to specify the sting value (Spintax is allowed) enclosed within double quotes and use it instead of the XML tag name. For example, this is how you can assign the “This is my product” string value to the product custom field:

"This is my product"->product

If you want to assign XML tag values to the standard WordPress $post array fields, enclose the $post array field name in percent symbols. For example, the following configuration assigns the value of the <name> tag to $post['post_title']:


Expert Settings

CyberSEO Pro Syndicator Expert

Proxy mode

This option allows you to enable or disable proxies from the list, specified in General Settings. The proxies are usually used to parse those services that do not allow frequent connections from the same IP.

User agent

If you encounter the “Unable to acquire” error message while trying to import an RSS feed, it could be due to the owner of the feed banning its import by automated scripts. To resolve this issue, you can try substituting the user agent so that the CyberSEO Pro plugin appears to be a web browser or another agent, such as the Google Crawler.

To avoid such restrictions, you can try using the following user agent values:

  • Mozilla/5.0 (Windows NT 10.0; WOW64; rv:97.0)
  • Gecko/20100101 Firefox/97.0/3871
  • Googlebot/2.1 (+
  • FeedValidator/1.3
  • PHP

Using a different user agent may help you import the RSS feed successfully.

HTTP referrer

This option allows you to set the URL for the referer spoofing. When set to “self”, the actual feed’s URL will be used as the referer.

Referer spoofing is a technique used to send fake HTTP referer headers in order to hide the source of traffic. In the context of the CyberSEO Pro plugin, it can be used to mimic a specific website when requesting RSS feeds.

By default, the referer value is empty, meaning that no referer header will be sent. If you encounter issues with importing certain feeds, you can try setting the referer to a specific URL or to “self”. When set to “self”, the actual feed’s URL will be used as the referer, which can sometimes help bypass referer blocking restrictions imposed by some websites.

It’s important to note that referer spoofing may violate some websites’ terms of service or even be illegal in certain jurisdictions. Therefore, it’s recommended to use this feature with caution and only when necessary.

HTTP headers

HTTP headers are additional pieces of information that are sent with an HTTP request or response to provide extra details about the request or response. These headers include information such as the type of browser being used, the encoding type, the language of the user, and many others.

The structure of an HTTP header is simple. It consists of a case-insensitive string, followed by a colon (‘:’) and a value whose structure depends on the specific header being used. Each header is separated by a new line.

XML section names (separate with commas)

When importing XML or JSON feeds into CyberSEO Pro, the plugin automatically recognizes the internal structure of the feed. However, if the feed is complicated and contains different blocks of items, you may need to define which specific block to import. In RSS feeds, for example, the content of each entry is enclosed within the <item> tags. This structure is formalized and easy to parse for content automation plugins.

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

Thus any content automation 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 XML or JSON feed of an arbitrary format, you may face a serious problem because this task can’t be done by other content automation plugins. Fortunately this is not a problem for CyberSEO which will do it automatically. However you can always override its behavior using the “XML section tag names” field.

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

    <name>DuroStar DS7200Q Remote Control Silent Diesel Generator</name>
        <img url=""><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 &amp; 220V outlets. Ground Fault Interrupter. DC 12V charging system.

The CyberSEO plugin will parse it automatically, but let’s pretend it was unable to recognize the <product> enclosing tag. In this case we need to go to CyberSEO->XML Syndicator and click the “Alter default settings” button. Now we have to locate the “XML section tag names” field, add there the new enclosure tag (in the case above it’s PRODUCT) and click “Update Default Settings”.

Done! Now the CyberSEO plugin will be able to recognize and parse any XML feed where all items are enclosed within the <product> tag.

However we still can’t pull this feed without some additional settings, because such important tags as <title> and <description> are missing there. Furthermore, there is an additional tag <price>, which we may also like to include into the post.

To solve this problem, we’ll use post templates. First of all, we have to find the “Post title” box and alter its contents as follows:


This will tell CyberSEO to use the XML value “name” as a WordPress post/page title.

Now let’s format the body of our post. Find the “Post content” box and put there the HTML template you want to be used. E.g.:

<p><strong>Price:</strong> %xml_tags[price]%</p>

After setting up the templates, you can update the feed settings and CyberSEO Pro will automatically parse the XML or JSON feed and create new posts for your website.

Disable JSON and XML item tag detection

The “Disable JSON section name detection” option allows you to disable the built-in sophisticated detection of JSON section names. And forces to plugin to use only the section names, specified in the “XML section names” box. How can it be useful? Let’s take a look at some ordinal JSON feed with the following structure:

    "feed": {
        "title": "Coming Soon",
        "id": "",
        "author": {
            "name": "iTunes Store",
            "uri": ""
        "links": [{
                "self": ""
            }, {
                "alternate": "\u0026app=music"
        "copyright": "Copyright © 2018 Apple Inc. All rights reserved.",
        "country": "us",
        "icon": "",
        "updated": "2020-10-25T02:16:04.000-07:00",

If we let CyberSEO Pro to automatically detect section names, it will take the first one, which will be <links></links>. So we won’t be able to get the necessary information about the music albums. To solve this problem, we need to explicitly set the section we want to parse. This can be easily done as shown below.

  1. Add RESULTS_ITEM tag to the “XML section names”.
  2. Check (enable) the “Disable JSON section name detection” check box.

That’s all we need to do.

Preprocess source PHP code

The Preprocess source PHP code feature in CyberSEO Pro enables you to modify the contents of a feed before it is processed by the feed parser. The original content is stored in the $content variable, which can be modified in any way to fix formatting errors, add or delete content. This feature supports any type of content source, including binary files or documents like PDF, Word documents, and Photoshop documents, among others. However, the modified contents of the $content variable must be formatted as a valid XML document.

This feature is especially useful for sites that do not have RSS feeds or XML sitemaps. By using the source code preprocessing feature, you can parse the HTML pages of such sites and convert them into a standard XML format, which can then be imported as a native RSS feed.

For example, the following code limits the syndicating RSS or Atom feeds by the first 5 items (posts) only:

$max_items = 5;
if (preg_match_all('/<(entry|item)>.*?<\/(entry|item)>/is', $content, $items)) {
    $content = '<rss><channel>' . implode('', array_slice($items[0], 0, $max_items)) . '</channel></rss>';

Yet another example of the preprocess source PHP code:

$xml = simplexml_load_string($content);
foreach ($xml->channel->item as $item) {
    if (isset($item->children('content', true)->encoded)) {
        $content_item = (string) $item->children('content', true)->encoded;
    } elseif (isset($item->description)) {
        $content_item = (string) $item->description;
    $h2_tags = [];
    $dom = new DOMDocument();
    $h2s = $dom->getElementsByTagName('h2');
    foreach ($h2s as $h2) {
        $h2_tags[] = trim(strip_tags($h2->nodeValue));
    $item->addChild('h2_tags', implode(',', $h2_tags));
$content = $xml->asXML();

This PHP snippet parses the RSS feed <content:encoded> and <description> sections for <h2> headers and adds them as comma-separated string enclosed in <h2_tags> section of the same feed item. So you can use these headers later in post templates or OpenAI assignments like as %xml_tags[h2_tags]%, which will be replaced by the actual comma-separated <h2> headers, extracted from the feed’s content.

Custom PHP code

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 elements are represented as the $post array variable. You can alter this variable in order to apply your own changes to every aggregating post. The following items are defined in the $post array variable:

  • $post[‘post_title’] – represents the post title.
  • $post[‘post_name’] – represents the post slug name.
  • $post[‘post_type’] – represents the post type.
  • $post[‘link’] – represents the post link.
  • $post[‘post_content’] – represents the post content.
  • $post[‘post_excerpt’] – represents the post excerpt.
  • $post[‘guid’] – represents the post’s Globally Unique Identifier (GUID).
  • $post[‘post_author’] – represents the post author.
  • $post[‘post_date’] – represents the post date in Unix timestamp format.
  • $post[‘categories’] – an array of post category names.
  • $post[‘media_content’] – an array of media content URLs.
  • $post[‘media_thumbnail’] – an array of media thumbnail URLs.
  • $post[‘enclosure_url’] – represents the enclosure URL.
  • $post[‘enclosure_type’] – represents the type of enclosure URL. For example, audio/mpeg.
  • $post[‘custom_fields’] – represents an array of custom fields.
  • $post[‘custom_fields_attr’] – represents an array of XML tag attributes for corresponding custom fields.
  • $post[‘custom_taxonomies’] – represents an array of custom taxonomies. For example, $post[‘custom_taxonomies’][‘taxonomy_name’] = ‘term1, term2, term3, …’;
  • $post[‘comments’] – represents an array of post comments in WordPress format.
  • $post[‘tags_input’] – represents an empty array that you can use to assign additional tags to syndicating posts via the $post[‘tags_input’] variable. For example, $post[‘tags_input’] = array(‘tag1’, ‘tag2’, ‘tag3’, ‘etc’).

You can alter the $post array to apply your changes to every aggregating post. For example, you can change the post title, insert text into the post’s body, or create your own tags according to the post’s content. Any changes you make to the $post array will be applied to the post before it is processed by CyberSEO and added to the blog.

If you do not want a particular post to be syndicated, you can assign FALSE to the $post variable in your PHP code. For example, if the post contains undesirable words. This will prevent the post from being added to the website.

CyberSEO Pro API functions


Make all post titles uppercase:

$post['post_title'] = ucwords(mb_strtolower($post['post_title']));

Add 12 hours to the post dates:

$post['post_date'] += 12 * 60 * 60;

Copy post content into post excerpt:

$post['post_excerpt'] = $post['post_content'];

Assign a random value between 1 and 100 (inclusive) to the custom field named “probability”:

$post['custom_fields']['probability'] = rand(1, 100);

Limit post content to 30 words and limit the excerpt with the first 25 words and add a link to source article below:

$max_content = 30;
$max_excerpt = 25;
$words = explode(" ", trim($post['post_content']));
if (count($words) > $max_content) {
    $post['post_content'] = implode(" ", array_slice($words, 0, $max_content)) . '<br /><a href="' . $post['link'] . '">Source...</a>';
} $words = explode(" ", trim($post['$max_excerpt']));
if (count($words) > $max_excerpt) {
    $post['post_excerpt'] = implode(" ", array_slice($words, 0, $max_excerpt)) . '<br /><a href="' . $post['link'] . '">Source.</a>';

Syndicate ONLY the posts that contain word1, word2 or word3:

if (!preg_match('/word1|word2|word3/is', $post['post_title'] . $post['post_content'] . $post['post_excerpt'])) {
    $post = false;

Do NOT syndicate the posts that contain word1, word2 or word3:

if (preg_match('/word1|word2|word3/is', $post['post_title'] . $post['post_content'] . $post['post_excerpt'])) {
    $post = false;

Add “The original article” link below every post:

$post['post_content'] .= '<p><a href="' . $post['link'] . '">The original article</a></p>';

AI article generation

The CyberSEO Pro plugin provides support for two AI engines, OpenAI GPT and Article Forge. When you select one of these engines, it will be used to generate articles from the feed. These AI engines use advanced natural language processing techniques to create high-quality articles that are similar in style and tone to those written by human authors. With CyberSEO Pro, you can easily generate high-quality content for your website without having to write it yourself.


CyberSEO Pro Syndicator OpenAI GPT

The OpenAI GPT is a service that provides access to a suite of powerful language processing models developed by OpenAI. You may already be familiar with this technology if you have heard of or used the famous OpenAI’s ChatGPT service. These models can be used to perform a wide range of language-related tasks, such as translation, summarization, and question answering.

OpenAI GPT is a language processing technology offered by OpenAI that provides a range of language-related capabilities like translation, summarization, and question answering. CyberSEO Pro allows you to use OpenAI GPT to generate new articles based on given titles or descriptions. The models provided by OpenAI are regularly updated, ensuring that you have access to the most up-to-date and accurate language processing capabilities.

It’s important to note that OpenAI GPT is a 3rd-party service, which means that content generation is performed on remote servers. Therefore, generating an article may take some time. To avoid delays, it’s recommended that you only add one article at a time, and increase your maximum PHP execution time to 400 seconds.

Post title assignment

Give an assignment for the post title, or live it blank if you want to keep the original post title intact. Examples:

“modify this title: %post_title%”

“generate a post title for the following article: %post_content%”

“translate this title to German: “%xml_tags[some_xml_tag_name]%”

Article assignment

The “Article assignments” section allows you to provide free-form instructions for the OpenAI GPT language processing model to generate articles or content based on your requirements. This means that you can write your instructions in a natural language that you would use when briefing a human writer.

There are no fixed options or templates to choose from, and you don’t have to specify the target language or style of the article. You can use the template shortcodes, such as %post_title%, %post_excerpt%, %post_content%, %custom_fields[name]%, %xml_tags[name]% and %custom_fields[name]%, to incorporate data from your feed or custom fields into your instructions.

It’s important to note that you don’t need any third-party sources like RSS feeds to generate content using OpenAI GPT. You can simply add a dummy feed with no content source and provide your instructions for generating original content. However, it’s recommended that you set a reasonable limit for the number of articles to generate at once and adjust your PHP execution time accordingly, as the content generation process may take some time.

Here is are a few examples of the OpenAI GPT assignments:

summarize this for a second-grade student:
rewrite this article using keyword "economics":
rewrite this article in a satiric Chuck Palahniuk style:
write a sarcastic article on topic, translate it to German and break it into three paragraphs:
write sarcastic article on topic, using the "technology" keyword:
write a funny story on topic and convert all movie words into emoji:
write as an ex-convict who served 18 years for armed robbery. this should be a criminal memo on "%post_title%"

As you can see, OpenAI GPT understands a regular language in as same way as a human. So don’t limit yourself when writing your assignments. Do is as if you were composing them for a living human writer.

You can set here an unlimited number of assignments, broken up with the <!--more--> separator string. Every such an assignment will generate a separate block of text, like this

Generate an introduction on the topic of:
Turn the below into a H2 header: %post_excerpt%
Generate a sarcastic article on the subject of %post_title% using one of the following keywords "weather", "mood, "outdoors" that better fit the topic of the below:: %post_excerpt%

Note that Spintax is also supported. You can use it to make random assignments. For example, if you want to ask OpenAI GPT to randomly use one of these keywords: “diet”, “fitness” and “healthy life” in the generated article, your assignment may look like this:

write an educational article on topic, using "{diet|fitness|healthy life}" keyword: %post_title%

Spintax is a syntax that allows you to define multiple variations of a text string. In the example given, the Spintax “{diet|fitness|healthy life}” will result in the generated article using one of the three keywords at random. This is a great way to add variety to your content and keep it fresh.

Templates and Shortcodes provide even more flexibility and options for creating custom assignments. You can use them to define image positions, set up dynamic scenarios with random plots, character lists, and objects, and more. This allows you to create more complex and unique content that is tailored to your specific needs.

If you’re comfortable with PHP, the possibilities for creating custom assignments are truly limitless. You can use PHP to write complex branching scripts that generate articles based on a variety of factors, such as the time of day, the weather, the user’s location, and more. With the right script, you can create highly personalized content that engages and entertains your readers.

No-source GPT autoblogging

Processing order

The processing order specified the sequence in which OpenAI GPT processes components of your WordPress post. This option allows you to specify whether the plugin should generate or rewrite the article’s title or body first.

Your content generation strategy hinges on this setting, as you must determine whether to generate the primary article based on the title or craft the article’s title based on its content.

If you select “Title first,” you will need to provide two separate assignments for generating the post title and article body using OpenAI GPT. So they could look like follows:

Title assignment

Come up with a heading for an article about resorts in Indonesia.

Article assignment

Compose an article on the following topic:

Alternatively, if you choose “Article first,” you should create assignments for the title and article body like the following:

Title assignment

Write a creative title for the following article:

Article assignment

Write an article about resorts in Indonesia.

In most instances, the “Article first” option yields more engaging articles, as it allows you to incorporate additional details in the article assignment while ensuring the title accurately reflects the article’s core message. However, the “Title first” option can be useful in specific cases, particularly when fewer tokens need to be passed to OpenAI GPT for processing.

Article position

Set the generated article position. It can be inserted above the syndicated post or below it. Alternatively the AI-generated text can be used instead of the original articled.

Model name

Currently CyberSEO Pro allows you to use the following OpenAI GPT models:

Model Description Max request
GPT-4 (gpt-4) More capable than any GPT-3.5 model, able to do more complex tasks, and optimized for chat. Will be updated with the latest model iteration. * 8,192 tokens
GPT-4 32K (gpt-4-32k) Same capabilities as the base gpt-4 mode but with 4x the context length. Will be updated with the latest model iteration. * 32,768 tokens
Turbo (gpt-3.5-turbo) Most capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. Will be updated with the latest model iteration. 4,096 tokens
Davinci (text-davinci-003) Can do any language task with better quality, longer output, and consistent instruction-following than the curie, Babbage, or Ada models. Also supports inserting completions within text. 4,096 tokens
Curie (text-curie-001) Very capable, but faster and lower cost than Davinci. 2,048 tokens
Babbage (text-babbage-001) Capable of straightforward tasks, very fast, and lower cost. 2,048 tokens
Ada (text-ada-001) Capable of very simple tasks, usually the fastest model in the GPT series, and lowest cost. 2,048 tokens

GPT-4 is currently in a limited beta and only accessible to those who have been granted access. Please join the waitlist to get access when the model is available.

GPT-4 is a large multimodal model (accepting text inputs and emitting text outputs today, with image inputs coming in the future) that can solve difficult problems with greater accuracy than any of our previous models, thanks to its broader general knowledge and advanced reasoning capabilities. Like gpt-3.5-turbo, GPT-4 is optimized for chat but works well for traditional completions tasks.

For many basic tasks, the difference between GPT-4 and GPT-3.5 models is not significant. However, in more complex reasoning situations, GPT-4 is much more capable than any of our previous models.

GPT-3.5 models can understand and generate natural language or code. Our most capable and cost effective model in the GPT-3.5 family is gpt-3.5-turbo which has been optimized for chat but works well for traditional completions tasks as well.

We recommend using gpt-3.5-turbo over the other GPT-3.5 models because of its lower cost.

Multiple models, each with different capabilities and price points. Prices are per 1,000 tokens. You can think of tokens as pieces of words, where 1,000 tokens is about 750 words. This paragraph is 35 tokens.

Max tokens

The maximum number of tokens to generate in the completion. The token count of each assignment plus Max tokens cannot exceed the model’s context length. Most models have a context length of 4096 tokens (except for the latest GPT-4 and GPT-4 32K models, which support 8,192 and 32,768 tokens, respectively).


What sampling temperature to use. Higher values means the model will take more risks. Try 0.9 for more creative applications, and 0 (argmax sampling) for ones with a well-defined answer.

Top p

An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

Best of

Generates best_of completions server-side and returns the “best” (the one with the highest log probability per token).

Presence penalty

Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model’s likelihood to talk about new topics.

Frequency penalty

Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model’s likelihood to repeat the same line verbatim.

Article Forge

CyberSEO Pro Syndicator Article Forge

Article Forge is a powerful tool that can be used to generate unique, high-quality content for your website or blog. The advanced artificial intelligence and deep learning technologies used by Article Forge ensure that the generated content is on-topic and of high quality. You can use Article Forge to automatically write entire posts or to supplement the content of posts that have been syndicated from RSS feeds or other sources.

Using the CyberSEO plugin, you can easily define a keyword for every syndicated post and set the position of the generated content within the main post. You can also choose to use the AI-generated article titles instead of the original titles. Note that if you select the option to replace the post content with the AI-generated article, the post duplication check settings will be ignored.

It is important to note that Article Forge is a third-party service, and therefore the content generation is performed on remote servers. This means that it may take some time to generate an article, so it is recommended that you do not add more than one article at a time. Additionally, you should increase your maximum PHP execution time to at least 400 seconds to ensure that the content can be generated without any issues.

Article Forge API key

In order to use the service, make sure to set your personal Article Forge API key. If you don’t have one, you can obtain it here.


A list of sub keywords separated by comma (e.g. subkeyword1,subkeyword2,subkeyword3). Article Forge has a five sub keyword limit per article. If you enter more than 5 sub keywords, Article Forge will randomly select 5. Article Forge will also ignore any sub keywords longer than 10 characters. Sub Keywords in should not contain URLs, parentheses, brackets, or too many single characters.

You can use template shortcodes here, e.g. the %post_title%.

Post tags as sub keys

When this option is enabled, the post tags (if available) will be used as subkeys for Article Forge.

Spintax view

Is useful to enable this option in order to generate the Spintax version of your article.

Article length

Select the desired article length from 50 to 750 words.

Article quality

Select the article quality: Standard, Adventurous, More adventurous, Conservative, More conservative.

Turing spinner

Enable or disable to Turing spinner.

Article position

Set the generated article position. It can be inserted above the syndicated post or below it. Alternatively the AI-generated text can be used instead of the original articled.

Image probability

The probability of adding an image into the article in percents.

Video probability

The probability of adding a video into the article in percents.

Article title

You can choose to leave the original post article or to use the Article Forge-generated one.

Image generation

CyberSEO Pro image generation

CyberSEO Pro offers integration with both DALLE∙2 and Stable Diffusion AI image technologies, allowing you to generate unique and high-quality images for your posts without the need for manual image creation or stock photo sourcing.

All you need to do is write a text description in ordinary human language, and the AI image technology will generate an image that corresponds to the description. You can use this feature to add custom images to your posts, create visual representations of complex concepts, or simply add some eye-catching visuals to your content.

With DALLE∙2 and Stable Diffusion AI image technologies, the possibilities are truly endless, and you can create images that are unique, visually stunning, and perfectly suited to your content.


DALL∙E 2 is a deep learning model developed by OpenAI that uses a modified version of GPT to generate images. With the CyberSEO Pro plugin, you can use all the features of DALL∙E 2 to generate unique images based on your natural language assignments. These assignments can include Spintax sentences and post template shortcuts, such as %post_title%, %post_excerpt%, and more.

Image position

This drop-down list allows you to enable the DALL∙E 2 engine and specify position in the generated picture in article.

Image assignment

Put your free-form assignment for For the DALL∙E 2 AI image generator. You can use a normal human language To describe what kind of image you want to get created. The assignment is limited by 1000 characters and your imagination only.

You can use template shortcodes here, e.g. the %post_title%.

Image size

The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024.

Image class

Define the CSS class you want to use to display the generated image in order to set its size, align it or apply some visual effects to it.

Stable Diffusion

A text-to-image model is a machine learning model which takes as input a natural language description and produces an image matching that description. Such models began to be developed in the mid-2010s, as a result of advances in deep neural networks. In 2022, the output of state of the art text-to-image models, such as OpenAI’s DALL∙E 2, Google Brain’s Imagen and StabilityAI’s Stable Diffusion began to approach the quality of real photographs and human-drawn art.

Text-to-image models generally combine a language model, which transforms the input text into a latent representation, and a generative image model, which produces an image conditioned on that representation. The most effective models have generally been trained on massive amounts of image and text data scraped from the web.

The CyberSEO Pro plugin uses the Stable Diffusion 2.1 model by Stability.AI which allows you to use all features of Stable Diffusion to generate unique images, according to your natural language assignments. The assignments may include Spintax sentences and post template shortcuts, such as %post_title%, %post_excerpt%, and others.

Image position

The “Image position” setting in the Stability Diffusion section of the CyberSEO Pro plugin allows you to specify where in the post the generated image will be placed. You can choose to have the image appear “above content,” “below content,” or “none,” which means it won’t be generated or inserted into the post at all.

Image description

The free-form image description for the Stable Diffusion image generator allows you to describe in natural language the type of image you want to be generated. This can be as simple as “a sketch-style picture for %post_title%”, where %post_title% is a shortcode that contains the title of the syndicating post. This is particularly useful when you need to generate an image for an unknown topic to illustrate an article.


Set the Stable Diffusion engine (model) to use for generation. Available engines:

  • stable-diffusion-v1
  • stable-diffusion-v1-5
  • stable-diffusion-512-v2-0
  • stable-diffusion-768-v2-0
  • stable-diffusion-512-v2-1
  • stable-diffusion-768-v2-1
  • stable-inpainting-v1-0
  • stable-inpainting-512-v2-0

Clip guidance preset

CLIP guidance preset, use with ancestral sampler for best results. If preset is not selected “NONE”, Stable Diffusion will select one automatically. The following clip guidance presets are available:

  • SLOW

cfg scale

This value [0..35] defines how strictly the diffusion process adheres to the prompt text (higher values keep your image closer to your prompt). Default: 7.


Number of diffusion steps to run: [10..150]. Default: 50. Affects the number of diffusion steps performed on the requested generation.

Image size

Width [512..2048 ] and height [512..2048 ] of the image (note: height * width must be <= 1 Megapixel).

Image class

Define the CSS class you want to use to display the generated image in order to set its size, align it or apply some visual effects to it.

Stable Diffusion

Pixabay is a free stock photography and royalty-free stock media website. It is used for sharing photos, illustrations, vector graphics, film footage, and music, exclusively under the custom Pixabay license, which generally allows the free use of the material with some restrictions. The overall quality of the photos on the service has been described as “mediocre for the most part” and “variable”, but covering a “wide range of subjects.

The CyberSEO Pro plugin allows you to import free full-sized images from Pixabay’s 2.1 million image collection. Using the Pixabay search API functionality, you can search for images using specific keywords. While the search API does not recognize natural language, you can use Spintax sentences to generate a more varied set of search results.

Image position

This drop-down list allows you to enable the Pixabay API and specify position in the retrieved picture in article.


This field is used to enter a specific keyword that will be used by the Pixabay API to search for an appropriate image. It is important to note that Pixabay is not a search engine like Google, and will only provide images that exactly match the keyword entered in the Query field. You can use shortcuts in this field, but it is recommended to use simple and specific keywords such as “car”, “beach sunset”, “coffee cup”, etc. Complex or vague keywords may not provide accurate search results.

Query language

Select the language code of the language to be searched in. Available values: cs, da, de, en, es, fr, id, it, hu, nl, no, pl, pt, ro, sk, fi, sv, tr, vi, th, bg, ru, el, ja, ko, zh.


Filter results by image type. Available values: “all”, “photo” and “illustration”.


Select whether an image is wider than it is tall, or taller than it is wide. Available values: “all”, “horizontal” and “vertical”.

Min width

Minimum image width in pixels.

Min height

Minimum image height in pixels.

Pixabay image number to choose

Set the image number from 1 to 200, to be chosen from the Pixabay search results. Use 0 to get a random one.

Image class

Define the CSS class you want to use to display the generated image in order to set its size, align it or apply some visual effects to it.

Media handling

CyberSEO Pro Syndicator Media Handling

Store images locally

The “Store images locally” option in CyberSEO Pro allows you to save all images from the syndicating feeds on your server. Enabling this option can improve the loading time of your site and also ensures that posts containing hotlink-protected images can still be syndicated properly. However, please note that some websites do not allow hotlinking of their images, so enabling this option is necessary to ensure that the images are displayed on your site. If this option is not enabled, the posts may appear without images. Additionally, it is important to ensure that your /wp-content/uploads folder is writable in order for the images to be saved locally.

Store base64-encoded images

if this option and Store images locally are enabled, all the base64-encoded images will be saved as regular image files (.jpg, .png, .gif etc).

Add to Media Library

The “Add to Media Library” option is a convenient feature that automatically adds all post images into the Media Library, making it easier for users to manage their media content. Users can then access the Media Library by clicking on “Media” in the WordPress dashboard. This option is particularly useful for those who frequently work with media content and want to have all their images organized in one place.

⚠ Do not enable the “Add to Media Library” option without a reason. Usually this option must be disabled, as it forces WordPress to generate thumbnails of various sizes for every picture in a post. This is a very time-consuming operation and it wastes your server disk space.

Media attachments

Media attachments, such as images, videos, and audios, can be included in some RSS feeds as media enclosures within media:content, media:thumbnail, and <enclosure> tags. The “Media attachments” drop-down menu allows you to choose what to do with these attachments:

  • “Do not insert attachments” will ignore the attachment and it won’t be inserted into the post.
  • “Insert attachments at the top of the post” will place the attachment at the top of the post.
  • “Insert attachments at the bottom of the post” will place the attachment at the bottom of the post.

If you choose to insert the attachments, they will be wrapped in <img> tags, allowing you to apply custom styling.

Post thumbnails

When you enable the “Post Thumbnails” option in CyberSEO, it will automatically generate a featured image (also known as a post thumbnail) for your post. You can choose one of the following sources for generating the post thumbnail:

  • Do not create
  • Create from the first post image
  • Create from the last post image
  • Create from a random post image
  • Create from the image media attachment
  • Create from the “thumb” custom field

If no images are found in the post content, CyberSEO will search for an embedded YouTube video and use its poster image as the post thumbnail.

Why featured image appears twice in CyberSEO posts and how to fix it?


When enabled, the post thumbnail won’t be stored locally. It will be hotlinked and displayed by the FIFU “Featured Image from URL” plugin, which must be installed and activated.

⚠ Some sites don’t allow to hotlink their images. In this case FIFU must be disabled and all these post images must be uploaded to your server (stored locally). Otherwise your posts will come up without featured images.

Alternative thumbnail source

The alternative post thumbnail source for the case if the source image was not found. You can set here your default image URL or use the %pixabay[]% and %random_image[]% shortcodes. For example, use the %pixabay[blue sky]% shortcode for a random image of the blue sky from Pixabay, or %random_image[%post_title%]% for an image, found by Google Images according to the current post title. This field will be ignored if the “Post thumbnails” option is set to “do not generate”.

Thumbnail source size

Set minimum and maximum thumbnail source image size in pixels. If the source image is smaller than a minimum limit or larger than a maximum one, the post thumbnail will not be generated. This helps you to sort out the posts with very small images when the post thumbnail is required. Use 0 if you don’t want to limit the thumbnail source image by size.

Post thumbnail is required

If the plugin will not be able to create post thumbnail as specified above (e.g. the source image is missing or broken), the post will not be added. So if you are going to enable the post thumbnail generation, please make sure that images are available in your content source.

This field will be ignored if the “Post thumbnails” option is set to “do not generate”.

Store videos locally

If enabled, all videos from the syndicating feeds will be copied into the default uploads folder of your site. Make sure that your /wp-content/uploads folder is writable. This my speed up the site loading time. Note that this operation may take some time, so the video content may not be immediately accessible. The following video file extensions are supported: mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2.

Use “video” custom field

When enabled, the contents of the video custom field will be embedded into the post. The custom field may contain a direct link to a video file (.mp4, .webm ect) or an embed code (<iframe>). The following options are available:

  • Do not embed video – the attachment will be ignored and won’t be inserted into the post.
  • Embed video at the top of the post – the video player will be placed at the top of the post.
  • Embed video at the bottom of the post – the video player will be placed at the bottom of the post.

⚠ Do not enable this option if the “video” custom field is not defined in the “Custom fields” box.

Embed videos

Inserts tube video embeds into the post. Supported feed sources: YouTube, Vimeo, Flickr, IGN, DailyMotion. Supported RSS feed link examples:

⚠ This option is added for compatibility with CyberSEO Lite. In CyberSEO Pro it’s recommended to use presets instead. Also do not enable it if you don’t pull a feed from,, or

Content filtering Settings

This section of the feed settings page allows you to filter syndicated content by keywords and phrases (separate them with commas), tags, publication date and text length.

CyberSEO Pro Syndicator Content filtering