CyberSEO Pro Content Syndicator

Content Syndicator

This section contains the basic documentation of CyberSEO Pro Syndicator. Here you will find descriptions of all available settings and a short guide on how to use them. It’s hard to cover all the nuances and usage strategies of the functionalities described below, as the plugin has expanded significantly since its initial release in 2006, offering almost unlimited possibilities in content curation and autoblogging. Therefore, many sections of this documentation include links to relevant articles that cover various aspects of the plugin’s features. It is highly recommended that you read these articles for a deeper understanding of the settings described below. In addition, visiting the public support forum for CyberSEO Pro can be very helpful as it contains a wealth of useful information and answers to potential questions. These descriptions also apply to the RSS Retriever plugin, provided the settings described here are present in it.

Main Screen

Basic Settings

Post Templates

Advanced Settings

Expert Settings

AI article generation

Media Enrichment

Media handling

Content Filtering Settings

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.

CyberSEO Pro allows you to import RSS, Atom, XML and JSON feeds compressed in the following formats: ZIP, Gzip and Bzip2.

Moreover, you can also import social media resources from YouTube, Instagram, Pinterest 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.

New feed URL

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 “New feed URL” 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.

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

Alternatively, instead of the actual CSV file or text dump, you can insert its remote URL, so that the contents of your dump file will look like this

https://www.mysite.com/myfile.csv

or

https://www.mysite.com/myfile.csv.zip

CyberSEO Pro allows you to import remote CSV files and text dumps compressed in the following formats: ZIP, Gzip and Bzip2.

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.

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.

Shuffle update times

The last update dates of the selected feeds are changed randomly. This allows you to quickly distribute the update periods of feeds to prevent them from being processed at the same time.

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.

Skip the 2nd check

Enable this option if your custom PHP code does not modify the post title or source link. It will improve the performance of the plugin.
⚠️ See the CyberSEO Pro Workflow section of the manual.

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.

Here you can use placeholders to assign a custom field or xml tag value to a given custom taxonomy. For example: %post_tags%, %xml_tags[name]%, %custom_fields[name]% etc.

For advanced users, custom taxonomies can also be assigned using PHP code. For example, the following code will assign “Mavic 3 Pro” to the custom taxonomy “model”:

$post['custom_taxonomies']['model'] = 'Mavic 3 Pro';

In the example above, model 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.

WordPress custom taxonomies

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.

Categories

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.

Delay

The Delay option allows you to specify the time, in seconds, between adding new articles and each article section generation performed by the [gpt_article] shortcode. 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.

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.

Comments

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.

Pings

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.

How to command time in CyberSEO Pro?

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.

Post templates

CyberSEO Pro Post Templates

CyberSEO Pro introduces a dynamic and robust feature, allowing you to construct custom HTML templates for diverse segments of your posts. This capability hands you the reins over your content’s presentation and structure. You’re empowered to tailor aspects such as the post title, slug, content, excerpt, meta title and meta description. These custom HTML templates are your toolset for forging distinct and engaging posts, perfectly tuned to your SEO tactics and enriching the user’s experience on your site.

Consider post templates as the foundational HTML framework for all your generated posts, stored within the WordPress database. Create a scenario where your WordPress post content template is as follows:

<p>Hello, I'm a <strong>WordPress</strong> post!</p>

In this case, every post created by the plugin for that feed will uniformly feature the text:

Hello, I’m a WordPress post!

Placeholders

Initially, the post template contains only one single placeholder – %post_content%, set to substitute with the content fetched from and external content feed. Remove everything from the post template and all posts generated by the plugin will have no content at all – they will be empty!

In essence, a template acts as the HTML blueprint for all posts tailored to a specific feed. This blueprint can either be static, producing posts with identical content each time, or dynamic, incorporating varied information sourced externally or crafted via tools like Spintax, AI engines, etc. To use this dynamic nature, your HTML template needs to incorporate specific shortcodes and placeholders, detailed in the subsequent sections.

The list of available template placeholders includes:

  • %post_title% – post title;
  • %post_date% – post date and time of the post in the DATE_RSS format: “YYYY-MM-DD HH:MM:SS”;
  • %post_date[format]% – post date and time of the specified datetime format, e.g.: %post_date[Y-m-d]%;
  • %post_content% – post content;
  • %post_content[max_words]% – the post content in HTML format, with the maximum specified number of words. The post content is shortened to the specified number of words;
  • %post_content_notags% – post content with stripped HTML tags;
  • %post_content_notags[max_words]% – the post content with stripped HTML tags. The post content is shortened to the specified number of words;
  • %post_excerpt% – post excerpt;
  • %post_excerpt[max_words]% – the post excerpt in HTML format, with the maximum specified number of words. The post excerpt is shortened to the specified number of words;
  • %post_excerpt_notags% – post excerpt with stripped HTML tags;
  • %post_excerpt_notags[max_words]% – the excerpt content with stripped HTML tags. The post excerpt is shortened to the specified number of words;
  • %post_tags% – post tags as a coma-delimited text string;
  • %categories% – post categories as a coma-delimited text string;
  • %link% – a link to source;
  • %post_guid% – post GUID;
  • %gpt_keywords% – contains a coma-delimited list of keywords found in the article by analyzing it with the GPT 3.5 Turbo model;
  • %gpt_keywords_en% – contains a coma-delimited list of English keywords found in the article by analyzing it with the GPT 3.5 Turbo model;
  • %gpt_keyphrase% – contains a short keyphrase defined for the article by analyzing it with the GPT 3.5 Turbo model;
  • %gpt_keyphrase_en% – contains a short English keyphrase defined for the article by analyzing it with the GPT 3.5 Turbo model;
  • %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 http://www.ebay.com/sch/i.html?_nkw=books&_rss=1, 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[keywords]% – a random image URL for one of given keywords from the Google Images search results with the “Creative Commons licenses” filter applied.
  • %random_file[path]% – returns the URL of a random file located on the server at the given absolute path. For example, this function can be used to insert a random image from a specified directory on the server into a post. E.g: <img src="%random_file[path]%">, where “path” is an absolute path to a directory on the server where the images are located. Read this article for more information.
  • %pixabay[keywords]% – a random full-size image URL for one of given keywords from the Pixabay image stock search results. You can also use commas to separate your list of keywords. In this case, a random keyword will be chosen.
  • %youtube_video[keyword]% – a YouTube video embed code for a given keyword.

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

%youtube_video[%post_title%]%

This one will add a relevant image:

%random_image[%post_title%]%

The “Meta title” and “Meta description” templates are particularly useful if you are using popular SEO plugins such as Yoast SEO, Rank Math SEO, The SEO Framework, or SEOPress. CyberSEO Pro will automatically detect the active SEO plugin and use the specified meta description template accordingly. This ensures that your SEO plugin’s meta description settings are seamlessly integrated with CyberSEO Pro, providing a comprehensive solution for optimizing your posts. Please note that in order to use the “Meta description” template feature, you must have one of the supported SEO plugins installed and activated on your WordPress site.

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]%" />
%post_content%

Don’t need an image of a Christmas tree? No problem, this template will use a random Creative Commons image found in Google for the actual post title:

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

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:

<product_name>
    the product name
</product_name>
<picture>
    the product picture URL
</picture>
<price>
    the product price
</price>

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

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

Be sure to check out this article:

How to import XML files into WordPress posts with CyberSEO Pro

Shortcodes

Shortcodes are a powerful feature of CyberSEO Pro that allow you to use WordPress-style shortcodes with additional arguments in the post templates. These shortcodes cannot be used in the “Post excerpt” template. 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 shortcodes, you can customize your posts with various arguments, making your content more dynamic and engaging.

[openai_gpt] shortcode

Use this the [openai_gpt] shortcode to insert OpenAI GPT AI generated texts into your posts. The shortcode has the following format:

[openai_gpt model="gpt-4" prompt="your assignment" max_tokens="3500" temperature="1.0" top_p="1.0" best_of="1" presence_penalty="0" frequency_penalty="0"]

The prompt parameter is mandatory. It contains your assignment for OpenAI GPT. All other parameters are optional and can be omitted.

Parameters:

  • prompt: The mandatory prompt that you want OpenAI GPT to complete.
  • model: The OpenAI GPT model name. Please note the table below.
  • max_tokens: This parameter only specifies the absolute maximum number of tokens to generate. Please note the table below. One average English word ~ 3 tokens.
  • temperature: Amount of randomness injected into the response. Defaults to 1. Ranges from 0 to 1. Use temp closer to 0 for analytical / multiple choice, and closer to 1 for creative and generative tasks.
  • 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.

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

Model Description Max request
GPT-4o (gpt-4o) 2x faster, 50% cheaper and has 5x higher rate limits compared to GPT-4 Turbo. 4,096 tokens
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
GPT-4 Turbo (gpt-4-vision-preview, gpt-4-1106-preview) The latest GPT-4 model. Returns a maximum of 4,096 output tokens. This preview model is not yet suited for production traffic. 128,000 tokens
4,096 tokens for output
GPT 3.5 Turbo (gpt-3.5-turbo) Most capable GPT-3.5 model and optimized for chat. Will be updated with the latest model iteration. 4,096 tokens
GPT 3.5 Turbo Instruct (gpt-3.5-turbo-instruct) Most capable GPT-3.5 instruction-oriented model. Will be updated with the latest model iteration. 4,096 tokens
GPT 3.5 Turbo 16K (gpt-3.5-turbo-16k) Same capabilities as the base gpt-3.5-turbo mode but with 4x the context length. Will be updated with the latest model iteration. 16384 tokens

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.

Examples

The following post template translates the imported article to German:

[openai_gpt prompt="Translate the following article to German and return the result in HTML format: %post_content%"]

The following post template rewrites the imported article in Italian:

[openai_gpt prompt="Riscrivere questo e restituire il risultato in formato HTML: %post_content%"]

[claude] shortcode

Use this the [claude] shortcode to insert generated texts generated with Anthropic Claude AI into your posts. The shortcode has the following format:

[claude model="claude-2.1" prompt="your assignment" max_tokens="4096" temperature="1.0" top_p="1.0" top_k="250"]

The prompt parameter is mandatory. It contains your assignment for Claude. All other parameters are optional and can be omitted.

Parameters:

  • prompt: The mandatory prompt that you want Claude to complete.
  • model: can be either claude-instant-1.2, claude-2.1, claude-3-opus-20240229 or claude-3-sonnet-20240229 (default).
  • max_tokens: The maximum number (up to 4096) of tokens to generate before stopping. By default CyberSEO Pro is 4096. Note that our models may stop before reaching this maximum. This parameter only specifies the absolute maximum number of tokens to generate.
  • temperature: Amount of randomness injected into the response. Defaults to 1. Ranges from 0 to 1. Use temp closer to 0 for analytical / multiple choice, and closer to 1 for creative and generative tasks.
  • top_p: In nucleus sampling, we compute the cumulative distribution over all the options for each subsequent token in decreasing probability order and cut it off once it reaches a particular probability specified by top_p. Defaults to 1. You should either alter temperature or top_p, but not both.
  • top_k: Only sample from the top K options for each subsequent token. Used to remove “long tail” low probability responses. Defaults to 250. Learn more technical details here.

Only sample from the top K options for each subsequent token. Used to remove “long tail” low probability responses. Learn more technical details here.

Examples

The following post template translates the imported article to Spanish:

[claude prompt="Translate the following article to Spanish and return the result in HTML format: %post_content%"]

The following post template rewrites the imported article in Italian:

[claude prompt="Riscrivere questo e restituire il risultato in formato HTML: %post_content%"]

[gemini] shortcode

Use this the [gemini] shortcode to insert generated texts generated with Google Gemini AI into your posts. The shortcode has the following format:

[gemini model="gemini-pro" prompt="your assignment" max_tokens="4096" temperature="1.0" top_p="1.0" top_k="100"]

The prompt parameter is mandatory. It contains your assignment for Gemini. All other parameters are optional and can be omitted.

Parameters:

  • prompt: The mandatory prompt that you want Gemini to complete.
  • model: can be either “gemini-pro” (default) or “gemini-pro-vision”.
  • max_tokens: The maximum number (up to 2048 for gemini-pro and up to 4096 for gemini-pro-vision) of tokens to generate before stopping. This parameter only specifies the absolute maximum number of tokens to generate.
  • temperature: Amount of randomness injected into the response. Defaults to 1. Ranges from 0 to 1. Use temp closer to 0 for analytical / multiple choice, and closer to 1 for creative and generative tasks.
  • top_p: In nucleus sampling, we compute the cumulative distribution over all the options for each subsequent token in decreasing probability order and cut it off once it reaches a particular probability specified by top_p. Defaults to 1. You should either alter temperature or top_p, but not both.
  • top_k: Only sample from the top K options for each subsequent token. Used to remove “long tail” low probability responses.

Only sample from the top K options for each subsequent token. Used to remove “long tail” low probability responses. Learn more technical details here.

Examples

The following post template generates a recipe by post title:

[gemini prompt="Write an article with a recipe for '%post_title%'. Format the text for embedding in a WordPress post, using only the <p>, <ul>, <li> and <em> tags. Exclude any other HTML tags."]

The following post template rewrites the imported article in Italian:

[gemini prompt="Riscrivere questo e restituire il risultato in formato HTML: %post_content%"]

[or_text] shortcode

The [or_text] shortcode offers plugin users an unprecedented opportunity to harness the power of any language model available through OpenRouter.ai, directly within their WordPress environment. By integrating with OpenRouter.ai, this shortcode unlocks access to a wide array of AI language models, ranging from open-source options to proprietary powerhouses such as OpenAI’s GPT and Anthropic’s Claude, among others. Whether you’re looking for free models or seeking uncensored capabilities, OpenRouter.ai’s diverse selection caters to a variety of needs and preferences. Discover the full spectrum of available models by visiting the OpenRouter.ai website. This flexibility allows users to tailor their content generation and manipulation tasks with precision, using the specific strengths and characteristics of each model to achieve optimal results.

The shortcode has the following format:

[or_text model="model ID" prompt="your prompt" max_tokens="4096" temperature="1.0" top_p="1.0" presence_penalty="0.0" frequency_penalty="0.0" repetition_penalty="1.0" min_p="0.0" top_a="0.0"]

The prompt parameter is mandatory. It contains your prompt for a selected model. All other parameters are optional and can be omitted.

Example:

[or_text model="openai/gpt-4-turbo-preview" prompt="Rewrite this text in a sarcastic style, keeping its HTML structure: %post_content%"]

Parameters:

  • model: A name of selected model you want to use via OpenRouter.ai. Find a list of supported models here. Note that the “model” parameter must contain the actual API model ID, e.g: “mistralai/mixtral-8x7b-instruct”, “undi95/toppy-m-7b:free”, “nousresearch/nous-hermes-2-mixtral-8x7b-dpo”, “openai/gpt-4” etc.
  • prompt: The mandatory prompt that you want a selected model to complete.
  • max_tokens: This sets the upper limit for the number of tokens the model can generate in response. It won’t produce more than this limit. Every model has its own maximal limit of of tokens that can be processed at once.
  • temperature: This setting influences the variety in the model’s responses. Lower values lead to more predictable and typical responses, while higher values encourage more diverse and less common responses. At 0, the model always gives the same response for a given input.
  • top_k: This limits the model’s choice of tokens at each step, making it choose from a smaller set. A value of 1 means the model will always pick the most likely next token, leading to predictable results. By default this setting is disabled, making the model to consider all choices.
  • top_p: This setting limits the model’s choices to a percentage of likely tokens: only the top tokens whose probabilities add up to P. A lower value makes the model’s responses more predictable, while the default setting allows for a full range of token choices. Think of it like a dynamic Top-K.
  • presence_penalty: Adjusts how often the model repeats specific tokens already used in the input. Higher values make such repetition less likely, while negative values do the opposite. Token penalty does not scale with the number of occurrences. Negative values will encourage token reuse.
  • frequency_penalty: This setting aims to control the repetition of tokens based on how often they appear in the input. It tries to use less frequently those tokens that appear more in the input, proportional to how frequently they occur. Token penalty scales with the number of occurrences. Negative values will encourage token reuse.
  • repetition_penalty: Helps to reduce the repetition of tokens from the input. A higher value makes the model less likely to repeat tokens, but too high a value can make the output less coherent (often with run-on sentences that lack small words). Token penalty scales based on original token’s probability.
  • min_p: Represents the minimum probability for a token to be considered, relative to the probability of the most likely token. (The value changes depending on the confidence level of the most probable token.) If your Min-P is set to 0.1, that means it will only allow for tokens that are at least 1/10th as probable as the best possible option.
  • top_a: Consider only the top tokens with “sufficiently high” probabilities based on the probability of the most likely token. Think of it like a dynamic Top-P. A lower Top-A value focuses the choices based on the highest probability token but with a narrower scope. A higher Top-A value does not necessarily affect the creativity of the output, but rather refines the filtering process based on the maximum probability.
  • seed: If specified, the inferencing will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for some models.

[gpt_article] shortcode

The [gpt_article] shortcode is a powerful autoblogging feature that uses OpenAI’s GPT-4 Turbo technology to generate long, coherent articles at once. This shortcode allows you to create rich and sophisticated articles of up to 300 pages of text using AI-driven text generation. The shortcode has the following format:

[gpt_article topic="article topic" engine="AI engine" sections="number of sections" structure="article section structure" directives="specific instructions" language="desired language" heading="heading tag" max_tokens="maximum tokens per section" temperature="creativity level"]

Example:

[gpt_article topic="%post_title%" directives="Format the text for embedding in a WordPress post, using only <p>, <em>, <blockquote>, <ul>, <li> tags. Exclude any other HTML tags. The article should tell about known facts reviving the mysterious secrets."]

Parameters:

  • topic: This mandatory parameter specifies the subject or title of the generated article. Can include placeholders like %post_title% which dynamically replace with the current WordPress post title. Examples:
    [gpt_article topic="Life in Prague"], [gpt_article topic="%post_title%"].
  • engine: Can be either “openai-gpt4o” (default), “openai-gpt4-turbo“, “anthropic-claude” or “google-gemini-pro“. If you plan to use OpenAI’s GPT-4 Turbo, Google’s Gemini Pro, and Anthropic’s Claude models through the OpenRouter.ai service, then the model names will be as follows: “openai/gpt-4-turbo-preview“, “google/gemini-pro“, “anthropic/claude-2“. The Mistral Large and Mixtral-8x7B Instruct models are also available via OpenRouter.ai – select them with “mistralai/mistral-large” and “mistralai/mixtral-8x7b-instruct” respectively. Note that less powerful models such as OpenAI GPT-3.5 Turbo, and even OpenAI GPT-4 (the base model, not Turbo) are not suitable for generating coherent articles due to their technical limitations.
  • sections: Determines the number of text sections in the article. Default is 4. Adjusting this alters the length of the generated article. Default is empty string. Example:
    [gpt_article topic="%post_title%" sections="5"].
  • sectionN: Where N is the numeric section number of the article section for which you want to specify your own rules, in addition to the main prompt set by the directives parameter. E.g.:
    [gpt_article sections="4" topic="%post_title%" directives="The article should tell about known facts reviving the secrets." section2="Format the text for embedding in a WordPress post, using only <p>, <em>, <blockquote>, <ul>, <li> tags. Add one quote from your knowledge base. Exclude any other HTML tags."
    For more information, read this article.
  • structure: Explicitly defines the structure of article sections in case you don’t want to rely on AI. Example:
    [gpt_article topic="%post_title%" structure="The overall semantic structure of the article should be as follows: Section 1: an entertaining introduction; Section 2: the main body of the article; Section 3: FAQ. Give the first 2 sections some creative names, and use 'FAQ' for the name of the 3rd section."].
  • directives: Provides specific formatting or content instructions to the AI. Defaults to “Format the article for embedding in a WordPress post, using only the <p> tag. Exclude any other HTML tags.” Can be customized for different HTML tags and content styles. Example:
    [gpt_article topic="%post_title%" directives="Format the article for embedding in a WordPress post, using only the <p>, <em>, <ul> and <li> tags. Exclude any other HTML tags."].
  • language: Sets the language for the article. The default is English. All parameter values must be in English, regardless of the article’s language. Example:
    [gpt_article topic="%post_title%" language="Spanish"].
  • heading: Defines the HTML tag for headings before each text section. Default is <h2>. Can be set to any valid HTML tag or left blank for no headings. Examples:
    [gpt_article topic="%post_title%" heading="h3"], [gpt_article topic="%post_title%" heading=""].
  • max_tokens: Controls the maximum number of tokens for each section. Please note the table below. Example:
    [gpt_article topic="%post_title%" max_tokens="3000"].
  • temperature: Adjusts the AI’s creativity level. Default is 1. Example:
    [gpt_article topic="%post_title%" temperature="0.7"].

Explanation of the use of the “structure” and “directives” parameters

Due to the inherent text generation limitations of AI models (which can be up to 4,096 or even 2,048 tokens), the [gpt_article] shortcode creates an article in sections. The size of each section is tailored to fit within the constraints of the model. Initially, it generates a list of titles for these sections using only the instructions specified in the structure parameter. For example, you can use the structure parameter to direct title generation by specifying: “Assign ‘Introduction’ to the first subsection and ‘FAQ’ to the last one.” When generating the text for these sections, which together make up the complete article, the [gpt_article] shortcode uses a prompt that includes instructions from both the structure and directives parameters. This approach ensures that each section is accurately aligned with the overarching structure and specific directives, thereby increasing the coherence and relevance of the article.

Please Note

  • Double quotes (“…”) should not be used within parameter values. Use single quotes (‘…’) instead to avoid parsing issues in WordPress.
  • You can use the Spintax in any of the parameters to make the result vary randomly.
  • Monitor token usage in your OpenAI account to manage costs effectively. The current cost for GPT-4 Turbo is $0.01 per 1K incoming and $0.03 per 1K outgoing tokens. Adjust the number and size of generated sections accordingly.

Characteristics of supported engines

Engine Used model Max section Size Max article size
openai-gpt4-turbo OpenAI GPT-4 Turbo 4K 128K
anthropic-claude Claude 3 Sonnet 4K 200K
google-gemini-pro Gemini Pro 8K 128K
mistralai/mistral-large Mistal Large 32K 32K
mistralai/mixtral-8x7b-instruct Mixtral 8x7B Instruct 32K 32K

 

[midjourney] shortcode

Use this the [midjourney] shortcode to insert Midjourney generated images into your posts. The shortcode has the following format:

[midjourney prompt="your Midjourney prompt" provider="API service provider" process_mode="image generation mode" aspect_ratio="aspect ratio" name="alt image name in the post" class="desired CSS class"]
  • prompt: A text description of the image to be generated.
  • provider: The name of the API service provider. Currently, as Midjourney is only accessible via GoAPI.ai, this parameter can only take the value “goapi” or be omitted.
  • process_mode: This parameter can be set to “lazy”, “fast” (the default), or “turbo”.
  • aspect_ratio: Sets the aspect ratio for the generated image, with the default being “16:9”.
  • name: The text to be used as the alt attribute for the generated image in your post. The default value is “%post_title%”.
  • class: The CSS class name for the image in your post, with the default being “center”.

Example of using the [midjourney] shortcode in a post template:

[midjourney prompt="an image for a blog post on the topic '%post_title%'" aspect_ratio="1:1"]

WordPress automatic blogging with Midjourney

[dalle] shortcode

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

[dalle model="dall-e-3" prompt="your OpenAI DALL∙E assignment" name="%post_title%" size="1792x1024" 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.  The following parameters are available for the [dalle] shortcode:

  • prompt: The free-form image description for the DALL∙E image generator allows you to use natural language to describe the type of image you want to generate. You can use all available placeholders as part of the prompt. This is especially useful when you need to generate an image for an unknown topic to illustrate an article;
  • model: the DALL∙E model name, which can be dall-e-2 or dall-e-3;
  • size: When using DALL·E 3, images can have a size of 1024×1024, 1024×1792 or 1792×1024 pixels.
  • name: the image name to use for the alt attribute;
  • class: defines 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] shortcode

Use this the [stable_diffusion] shortcode to insert Stable Diffusion generated images into your posts. The shortcode has the following format:

[stable_diffusion text="your Stable Diffusion assignment" name="%post_title%" style_preset="enhance" stable_diffusion_engine="stable-diffusion-xl-1024-v1-0" cfg_scale="7" clip_guidance_preset="NONE" height="768" width="1344" steps="30" class="aligncenter"]

The text parameter is mandatory. It contains your assignment for Stable Diffusion 2.1. The name string is be used as a filename and as an image alt attribute value.

The following parameters are available for the [stable_diffusion] shortcode:

  • text: 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 placeholder 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;
  • name: the image name to use for the alt attribute;
  • style_preset: the Stable Diffusion API style argument is used to specify the style of the image that you want to generate. The style argument is a string that can be set to one of the following values: 3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, modeling-compound, neon-punk, origami, photographic, pixel-art, tile-texture;
  • stable_diffusion_engine: sets the Stable Diffusion engine (model) to use for generation. Available engines: stable-diffusion-xl-1024-v1-0, stable-diffusion-xl-1024-v0-9, stable-diffusion-xl-beta-v2-2-2, stable-diffusion-v1.5, stable-diffusion-512-v2-1;
  • cfg_scale: defines how closely the engine attempts to match a generation to the provided prompt. v2-x models respond well to lower CFG (IE: 4-8), where as v1-x models respond well to a higher range (IE: 7-14) and SDXL models respond well to a wider range (IE: 4-12). 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;
  • 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: FAST_BLUE, FAST_GREEN, SIMPLE, SLOW, SLOWER, SLOWEST;
  • height: image height in pixels;
  • width: image width in pixels;
  • steps: number of diffusion steps to run: [10..150]. Default: 40. Affects the number of diffusion steps performed on the requested generation;
  • class: defines 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.

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

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

The following parameters are available for the [image_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 [image_gallery] shortcode, make sure to set the “Post thumbnail” option to “Do not generate”. Otherwise, the thumbnail will be ignored.

[pixabay] shortcode

Use the [pixabay] shortcode in your post templates in order to insert a full-size image from Pixabay.com. E.g.:

[pixabay 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 [pixabay] shortcode. Refer to Pixabay section of this manual for details. You can also use commas to separate your list of keywords. In this case, a random keyword will be chosen.

Template processing order

The “Template processing order” setting allows you to dictate the sequence in which the three main templates (post title, post content, and post excerpt) are processed by simply dragging and dropping them in a visual container. This feature ensures the plugin processes them from left to right according to their arrangement.

This sequencing can be important, for instance, when working with dummy feeds – empty companies lacking an external content source – where all WordPress post components (title, content, and excerpt) are generated from scratch by the plugin. This could be through a random selection based on a Spintax expression or by using a shortcode to generate content with AI text models.

With the “Template Processing Order” setting, you can instruct the plugin on which post element template to process first. This allows the result of its processing to serve as the content for subsequent elements. It’s worth noting that all three WordPress post elements are accessible as placeholders: %post_title%, %post_content%, and %post_excerpt%.

For example, suppose you want the plugin to generate random post titles using a Spintax expression and then create the post text based on those titles using the shortcode [gpt_article]. The “Template processing order” should then be:

CyberSEO Pro - Template processing order: title-content-excerpt

Your templates might look like this:

Post title:

{Work|Life|Weather} in {Paris|Amsterdam|London|Berlin|Prague|Vienna|Rotterdam|Helsinki}

Post content:

[gpt_article topic="%post_title%"]

But what if you prefer to generate an article first using the same [gpt_article] shortcode and then create a suitable post title for it using the [openai_gpt] shortcode? In that case, the “Template processing order” would be:

CyberSEO Pro - Template processing order: content-title-excerpt

Your post templates might then be:

Post title:

[openai_gpt model="gpt-4" prompt="Analyze the following article and generate an appropriate title for it (do not use quotes and colons): %post_content_notags%"]

Post content:

[gpt_article topic="{Work|Life|Weather} in {Paris|Amsterdam|London|Berlin|Prague|Vienna|Rotterdam|Helsinki}"]

💡 In the example above, the placeholder %post_content_notags% is used instead of %post_content% to strip all HTML tags from the generated post content. This saves on the number of tokens processed by the AI text model, making the use of paid API more cost-effective.

Beyond the scenarios mentioned, there are other possibilities. For instance, you might want to generate a brief post excerpt that captures the main idea of your article and then use it (%post_content%) as a basis for generating the post content and post title. In this case, your “Template processing order” would be:

CyberSEO Pro - Template processing order: excerpt-content-title

Parse Spintax

Transforms Spintax formatting in post templates into plain text. For example, a Spintax phrase like “{word1|word2}” is randomly converted into either “word1” or “word2”.

Convert Markdown to HTML

Some text AI models, like Google Gemini Pro and Mixtral 8x7B, sometimes err by producing Markdown format responses when prompted to generate text with HTML formatting. As a result, instead of the expected outcome like this:

The quarterly results look great!

  • Revenue was off the chart.
  • Profits were higher than ever.

Everything is going according to plan.

You end up receiving something along the lines of:

> ### The quarterly results look great!
>
> * Revenue was off the chart.
> * Profits were higher than ever.
>
> *Everything* is going according to **plan**.

To address this issue, you should enable the “Convert Markdown to HTML” checkbox.

⚠️ This setting applies only to text generated by AI text generation shortcodes and does not affect other parts of your content.

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.

⚠️ If the Full-Text RSS script is unable to extract an article, you can manually configure it for each specific site from which you syndicate your posts. Here is the manual: https://www.cyberseo.net/forum/cyberseo-plugin/tutorial-create-siteconfig-file-for-full-text-rss-plugin/

Custom

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.

Inclusive

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.

Remove outer HTML elements

If you want to remove specific HTML blocks from the imported content, enter the block elements you want to remove from the post content in a semicolon-separated list. Each element should be specified using the tag name and its attribute-value pairs in JSON format, separated by a space. For example, to remove all <div> elements with the attribute class="comment" and all <p> elements with the attributes class="description" and id="block", enter the following:

div {"class": "comment"}; p {"class": "description", "id": "block"}

Suppose you syndicate articles that include a block of HTML code representing a share section within a <div> element with the class attribute set to “share-box”:

<div class="share-box">
    <!-- Share icons and content here -->
</div>

To remove this share section from your imported content, you can simply add the following rule to the “Remove outer HTML elements” box:

div {"class": "share-box"}

By entering the above rule into the “Remove outer HTML elements” box, any <div> element with the class attribute set to “share-box” will be removed from the post content. Remember to accurately specify the tag names and attribute-value pairs in JSON format, separated by a space, to effectively remove the desired HTML elements.

Unlike other plugins that provide a dedicated field for entering regular expressions to remove specific parts of HTML code, CyberSEO Pro offers the flexibility to process syndicated content using custom PHP code snippets. If you are familiar with writing regular expressions, you can easily modify the $post['post_content'] variable by adding your custom PHP code snippet in the Custom PHP code box on the “Expert” tab of the feed settings. For example, you can use the following code to remove/replace content based on a regular expression:

$post['post_content'] = preg_replace('/myRegEx/', 'my replacement', $post['post_content']);

This allows you to customize the code according to your specific needs and achieve the desired content modifications.

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 potentially insecure 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” 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.

Translation

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 these are paid services and require an API key. 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.

⚠️ Note that you can always use OpenAI GPT to translate articles while preserving their HTML structure, as shown in the examples here. Just keep in mind that the article size is limited by the chosen GPT model.

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.

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 (English)
  • SpinnerChief (English)
  • ChimpRewriter (English)
  • TBS (English)
  • WordAi (English)
  • ESpinner (Spanish)
  • X-Spinner (English)
  • Textorobot (Russian)

CyberSEO Pro Syndicator Content Spinners

The OpenAI GPT content spinner allows you to choose between the new and powerful GPT-4o and GPT-4 Turbo models or previous GPT 3.5 Turbo Instruct and GPT 3.5 Turbo 16K models, and it allows you to spin huge 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.

⚠️ Note that you can always use OpenAI GPT to spin articles while preserving their HTML structure, as shown in the examples here. Just keep in mind that the article size is limited by the chosen GPT model.

The OpenAI GPT Content Spinner in CyberSEO Pro

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.
<!–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.

You can also use predefined placeholders to automatically include post information in your headers and footers. These placeholders 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

When it comes to setting up custom fields in your WordPress posts, CyberSEO Pro offers several methods to achieve this. Let’s go through each one in detail.

Setting fixed values

To assign a fixed value to a specific custom field of a generated post, you can use the following syntax:

"String value"->custom_field_name

Note the use of double quotation marks. For example, if you want the custom field “product_type” to contain the value “T-shirt”, you would enter the following line in the text box labeled “Custom Fields”:

"T-shirt"->product_type

Importing XML tag values

If you need to populate a custom field with the value of an XML tag from an imported feed, a selected CSV field, or a JSON feed variable (remember, all imported content sources are automatically converted to XML format), the syntax is as follows:

xml_tag_name->custom_field_name

For example, if the section of the feed you’re importing contains product information formatted like this:

<price>
   29.99
</price>
<isbn>
   978-3-16-148410-0
</isbn>

To store the price value in a custom field named “_price” (the standard name for WooCommerce custom fields), and the ISBN code in a custom field named “isbn,” you would input the following into the “Custom fields” textbox:

price->_price
isbn->isbn

Extracting content from posts

To save specific portions of a post as a custom field, you have two methods to extract this content.

Using the outer HTML element’s content:

To do this, use the name of the outer HTML tag followed by its attributes in JSON string format:

tag {"attribute_name 1": "value 1", "attribute_name 2": "value 2", ...}

For example, let’s say the generated post contains the following HTML code:

<span class="price">129.95</span><span class="old-price">249.95</span>

If you want to store the current price value in the custom field “_price” and the old price in “_regular_price,” you would use:

span {"class": "price"}->_price
span {"class": "old-price"}->_regular_price

Using regular expressions:

In this case, your regular expression should be prefixed with “regex:“.

For example, to extract a specific image link from the following HTML code and store it as a custom field named “thumb”:

<img class="featured" src="https://www.site.com/images/house.jpg" alt="House"/>

You would use the following:

regex:<img class="featured" src="(.*?)"->thumb

Writing to posts fields

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> XML tag to $post['post_title']:

name->%post_title%

The following placeholders are available:

  • %link% – a link to the importing article;
  • %post_title% – post title;
  • %post_content% – post content;
  • %post_excerpt% – post excerpt;

Import RSS, XML, JSON, CSV and HTML as WooCommerce products with CyberSEO Pro

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 (+http://www.google.com/bot.html)
  • 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.

<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 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:

<product>
    <id>PRODUCT-73182373</id>
    <name>DuroStar DS7200Q Remote Control Silent Diesel Generator</name>
    <specification>
        <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 &amp; 220V outlets. Ground Fault Interrupter. DC 12V charging system.
    </specification>
    <price>$1,000</price>
</product>

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:

%xml_tags[name]%

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>%xml_tags[specification]%</p>
<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": "https://rss.itunes.apple.com/api/v1/us/apple-music/coming-soon/all/10/explicit.json",
        "author": {
            "name": "iTunes Store",
            "uri": "http://wwww.apple.com/us/itunes/"
        },
        "links": [{
                "self": "https://rss.itunes.apple.com/api/v1/us/apple-music/coming-soon/all/10/explicit.json"
            }, {
                "alternate": "https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewRoom?fcId=1396220241\u0026app=music"
            }],
        "copyright": "Copyright © 2018 Apple Inc. All rights reserved.",
        "country": "us",
        "icon": "http://itunes.apple.com/favicon.ico",
        "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();
    $dom->loadHTML($content_item);
    $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’] – stores the date and time of the post in the format “YYYY-MM-DD HH:MM:SS”
  • $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.

If you are not familiar with PHP, you can always ask CyberSEO Support Assistant GPT to help you write the custom snippets.

Examples

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;
}

The following code asks OpenAI GPT to read the article and name the object for the image that best describes the content of the text. The script will then pass the ChatGPT response to Stable Diffusion as an image job. The rest of the parameters are up to your taste (find more information here). The result will be saved as a thumb custom field that you can use to generate a post thumbnail:

$assignment = [
    'model' => 'gpt-3.5-turbo-16k',
    'prompt' => 'Analyze the article below and give me a 1-3 word concrete, tangible subject or object that accurately encapsulates the topic of the article, suitable for direct use in AI image generation. Provide the answer in English:' . PHP_EOL . PHP_EOL . $post['post_title'] . PHP_EOL . cseo_strip_tags($post['post_content']),
    'max_tokens' => 100,
    'temperature' => 0.5,
];
$prompt = cyberseo_openai_shortcode($assignment);
$assignment = [
    'text' => $prompt,
    'name' => $post['post_title'],
    'stable_diffusion_engine' => 'stable-diffusion-xl-beta-v2-2-2',
    'style_preset' => 'cinematic',
    'height' => '512',
    'width' => '512',
    'cfg_scale' => 7,
    'steps' => 50,
    'sampler' => 'DDIM',
];
$result = cyberseo_stable_diffusion_shortcode($assignment);
if (preg_match('/src="(.*?)"/', $result, $link)) {
    $post['custom_fields']['thumb'] = $link[1];
}

The same code that inserts the AI-generated image at the top of the article:

$assignment = [
    'model' => 'gpt-3.5-turbo-16k',
    'prompt' => 'Give me a 1-3 word concrete, tangible subject or object that accurately encapsulates the topic of the article, suitable for direct use in AI image generation. Please provide the answer in English:' . PHP_EOL . PHP_EOL . $post['post_title'] . PHP_EOL . cseo_strip_tags($post['post_content']),
    'max_tokens' => 100,
    'temperature' => 0.5,
];
$prompt = cyberseo_openai_shortcode($assignment);
$assignment = [
    'text' => $prompt,
    'name' => $post['post_title'],
    'stable_diffusion_engine' => 'stable-diffusion-xl-beta-v2-2-2',
    'style_preset' => 'cinematic',
    'height' => '512',
    'width' => '512',
    'cfg_scale' => 7,
    'steps' => 50,
    'sampler' => 'DDIM',
];
$post['post_content'] = cyberseo_stable_diffusion_shortcode($assignment) . $post['post_content'];

Add “The original article” link below every post:

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

CyberSEO Pro API functions

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.

OpenAI GPT

⚠️ This is a simplyfied method with very limited functionality for beginners. It is not recommended for article generation. Instead, you should use the special shortcodes in post templates on the Advanced tab. Shortcodes give you more power and control over generated content. For example, you will be able to generate book-length coherent articles with OpenAI GPT-4, Google Gemini Pro and Anthropic Claude using the [gpt_article] shortcode.

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 placeholders, 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:
%post_content%
rewrite this article using keyword "economics":
%post_content%
rewrite this article in a satiric Chuck Palahniuk style:
%post_content%
write a sarcastic article on topic, translate it to German and break it into three paragraphs:
%post_excerpt%
write sarcastic article on topic, using the "technology" keyword:
%post_title%
write a funny story on topic and convert all movie words into emoji:
%post_title%
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:
%post_title%
<!--more-->
Turn the below into a H2 header:
%post_excerpt%
<!--more-->
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.

If you want to translate a syndicating article into another language while preserving the source HTML layout, you should use the following assignment:

Translate the below article into Japanese and return the result in HTML format:
%post_content%

Want to rewrite the article and keep its HTML structure? Here is the assignment for that (works fine with OpenAI GPT-4 model):

Rewrite the below article in informative style and return the result in HTML format:
%post_content%

Template placeholders 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.

⚠️ In the GPT article assignment box, the prompt you provide applies solely to the post’s body and does not affect the post excerpt. This intentional design prevents the plugin from making an additional API request to OpenAI GPT, reducing the overall cost of API usage. Moreover, it ensures consistency in content between the post excerpt and main body. For optimal results, it is advisable to either leave the Post template empty or use the %post_content% placeholder to copy the GPT-generated content. Additionally, you can use the %post_content[max_words]% placeholder to limit the length of the post excerpt if needed.

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:
%post_title%

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:
%post_content%

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

OpenAI GPT model name.

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, GPT-3.5 Turbo and GPT-4 32K models, which support 8,192, 16,768 and 32,768 tokens, respectively).

Temperature

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.

Keyword

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 placeholders 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

Enable this option in order to generate the Spintax version of your article. This text format is usually used in Morphing RSS Host Mode.

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.

Media enrichment

CyberSEO Pro image generation

CyberSEO Pro offers integration with both DALL∙E 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 DALL∙E 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.

Midjourney

Midjourney does not provide a public API to integrate its AI image generator with third party applications. Therefore, the only way to use it is through external services. After exploring various options, we decided to partner with GoAPI.ai, which offers access to Midjourney through a functional API at very attractive rates.

Image position

This drop-down list allows you to specify position in the retrieved picture in article. If you select the “Save to ‘thumb’ custom field” option, the URL of the generated image will be saved to the “thumb” custom field, so you can use it as a post thumbnail. To do this, simply select the “Create from custom field ‘thumb'” option in the “Post thumbnails” drop-down menu in the “Media Handling” tab of your feed settings. Select “Replace first image” if you want to replace the first image in the imported post, if it exists. Otherwise, the image will be inserted above the post.

The “Replace all images” option replaces all images in the imported posts with the ones generated by Midjourney, while “Batch insert” allows to insert a specified number of images into the article imported from a 3rd party content source or generated from scratch using a text AI model.

Prompt

Use this field to enter your Midjournet prompt. You can use all supported placeholders here and Spintax.

API proviedr

This drop-down menu allows you to select the 3rd party Midjourney API provider. Since only GoAPI is currently supported, only one option is available here.

Process mode

Select one of the following image creation modes: Relax, Fast, Turbo.

Aspect ratio

Use this box to set the aspect ratio for your images, e.g: 1:1, 16:9, 4:3, etc.

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.

Batch insert and replace images in WordPress posts

DALL∙E

DALL∙E 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 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 engine and specify position in the generated picture in article. If you select the “Save to ‘thumb’ custom field” option, the URL of the generated image will be saved to the “thumb” custom field, so you can use it as a post thumbnail. To do this, simply select the “Create from custom field ‘thumb'” option in the “Post thumbnails” drop-down menu in the “Media Handling” tab of your feed settings. Select “Replace first image” if you want to replace the first image in the imported post, if it exists. Otherwise, the image will be inserted above the post.

The “Replace all images” option replaces all images in the imported posts with the ones generated by DALL∙E, while “Batch insert” allows to insert a specified number of images into the article imported from a 3rd party content source or generated from scratch using a text AI model.

Model

Here you can select the desired DALL∙E model. Currently supported models are DALL∙E 2 and DALL∙E 3.

Image assignment

Put your free-form assignment for For the DALL∙E 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 placeholders here, e.g. the %post_title%.

Image size

The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024 for DALL∙E 2 and 1024x1024, 1792x1024, or 1024x1792 for DALL∙E 3.

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, 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 Stable 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.

If you select the “Save to ‘thumb’ custom field” option, the URL of the generated image will be saved to the “thumb” custom field, so you can use it as a post thumbnail. To do this, simply select the “Create from custom field ‘thumb'” option in the “Post thumbnails” drop-down menu in the “Media Handling” tab of your feed settings. Select “Replace first image” if you want to replace the first image in the imported post, if it exists. Otherwise, the image will be inserted above the post.

The “Replace all images” option replaces all images in the imported posts with the ones generated by Stable Diffusion, while “Batch insert” allows to insert a specified number of images into the article imported from a 3rd party content source or generated from scratch using a text AI model.

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 placeholder 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.

Engine

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

  • Stable Diffusion XL v0.9
  • Stable Diffusion XL v1.0
  • Stable Diffusion v1.4
  • Stable Diffusion v1.5
  • Stable Diffusion v2.0
  • Stable Diffusion v2.0-768
  • Stable Diffusion v2.0-depth
  • Stable Diffusion v2.1
  • Stable Diffusion v2.1-768
  • Stable Diffusion v2.2.2-XL Beta
Stable Diffusion XL 1.0

stable-diffusion-xl-1024-v1-0

Building upon the success of the Stable Diffusion XL v0.9 release, Stable Diffusion XL v1.0 brings with it a number of image detail improvements. Specifically, Stable Diffusion XL v1.0 offers enhanced vibrancy and overall color tone accuracy, including deeper black and brighter white tones.

Stable Diffusion XL 0.9

stable-diffusion-xl-1024-v0-9

Consists of a two-step pipeline for latent diffusion: First, we use a base model to generate latents of the desired output size. In the second step, we use a specialized high-resolution model and apply a technique called SDEdit (Guided Image Synthesis and Editing with Stochastic Differential Equations) to the latents generated in the first step, using the same prompt.

Guided image synthesis enables easy creation and modification of realistic images, addressing challenges in balancing user input fidelity and image authenticity. Current GAN-based methods aim to achieve this balance through conditional GANs or GAN inversions, requiring additional data or loss functions. To overcome this, we propose Stochastic Differential Editing (SDEdit), which uses a diffusion model to gradually remove noise via a stochastic differential equation (SDE). SDEdit doesn’t need specific training, achieving authenticity and fidelity equilibrium. In a human study, SDEdit significantly surpasses GAN methods, enhancing realism by up to 98.09% and satisfaction by 91.72%.

Stable Diffusion XL 0.8

stable-diffusion-xl-beta-v2-2-2

Stable Diffusion XL Beta v0.8 is a 512px trained base model, with additional dimension limits that must be considered. The SDXL series of models offer a significant advancement in image generation capabilities, offering enhanced image composition and face generation that results in stunning visuals and realistic aesthetics. With the SDXL series of models, you can create descriptive images with shorter prompts, including improved word generation capabilities.

Stable Diffusion 1.5

stable-diffusion-v1.5

Initialized with the weights of the Stable-Diffusion-v1-2 checkpoint and subsequently fine-tuned on 595k steps at resolution 512×512 on “laion-aesthetics v2 5+” and 10% dropping of the text-conditioning to improve classifier-free guidance sampling.

Stable Diffusion 2.1

stable-diffusion-512-v2-1

Fine-tuned from Stable Diffusion 2.0 (768-v-ema.ckpt) with an additional 55k steps on the same dataset (with punsafe=0.1), and then fine-tuned for another 155k extra steps with punsafe=0.98.

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:

  • FAST_BLUE: This preset is used for fast inference with blue color.
  • FAST_GREEN: This preset is used for fast inference with green color.
  • SIMPLE: This preset is used for simple guidance.
  • SLOW: This preset is used for slow guidance.
  • SLOWER: This preset is used for slower guidance.
  • SLOWEST: This preset is used for slowest guidance.

cfg scale

Dictates how closely the engine attempts to match a generation to the provided prompt. v2-x models respond well to lower CFG (IE: 4-8), where as v1-x models respond well to a higher range (IE: 7-14) and SDXL models respond well to a wider range (IE: 4-12). 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.

Parameter Default Typical Allowable Affects Pricing?
cfg_scale 7.0 4-14 1-35 No

Style preset

Pass in a style preset to guide the image model towards a particular style. The Stable Diffusion API style argument is used to specify the style of the image that you want to generate. The style argument is a string that can be set to one of the following values:

  • 3d-model: This preset generates 3D models of objects.
  • analog-film: This preset generates images that look like they were taken with an analog camera.
  • anime: This preset generates anime-style images.
  • cinematic: This preset generates images that look like they were taken from a movie.
  • comic-book: This preset generates images that look like they were taken from a comic book.
  • digital-art: This preset generates digital art-style images.
  • enhance: This preset enhances the details of an image.
  • fantasy-art: This preset generates fantasy art-style images.
  • isometric: This preset generates isometric-style images.
  • line-art: This preset generates line art-style images.
  • low-poly: This preset generates low-poly 3D models of objects.
  • modeling-compound: This preset generates images that look like they were made with modeling compound (e.g., Play-Doh).
  • neon-punk: This preset generates neon punk-style images.
  • origami: This preset generates origami-style images.
  • photographic: This preset generates photographic-style images.
  • pixel-art: This preset generates pixel art-style images.
  • tile-texture: This preset generates tile texture-style images.

Sampler

Which sampler to use for the diffusion process. If “AUTO” is selected, an appropriate sampler will be selected for you automatically.The following samplers are available:

  • AUTO: The sampler will be chosen by automatically.
  • DDIM: This sampler uses the probability flow ODE to generate images.
  • DDPM: This sampler uses the probability flow ODE to generate images.
  • K_DPMPP_2M: This sampler is an implementation of DPM solver paper.
  • K_DPMPP_2S_ANCESTRAL: This sampler is DDPM as an ODE with k_lms then add noise.
  • K_DPM_2: This sampler is an implementation of DPM solver paper.
  • K_DPM_2_ANCESTRAL: This sampler is DDPM as an ODE with k_lms then add noise.
  • K_EULER: This sampler uses Euler’s method from the DDIM probability flow ODE.
  • K_EULER_ANCESTRAL: This sampler is ancestral sampling with Euler’s (or technically Euler-Maruyama) method from the variance-exploding SDE for a DDPM.
  • K_HEUN: This sampler uses Heun’s method (2nd order method, recommended by Karras et al.) from the DDIM probability flow ODE.
  • K_LMS: This sampler is sampling with linear multi-step method (4th-order Adams-Bashforth, first step 1st order Euler, second step 2nd order Heun, etc. till 4th step, then subsequently depending on the past 4 steps) of the DDIM probability flow ODE.

Steps

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

Parameter Default Typical Allowable Affects Pricing?
steps 30 30-50 10-150 Yes

Image size

Width [512..2048] and height [512..2048] of the image. Measured in pixels. Pixel limit (note: height * width must be <= 1 Megapixel) is 1048576, so technically any dimension is allowable within that amount.

A minimum of 262k pixels and a maximum of 1.04m pixels are recommended when generating images with 512px models, and a minimum of 589k pixels and a maximum of 1.04m pixels for 768px models.

To avoid the dreaded 6N IndexError it is advised to use 64px increments when choosing an aspect ratio. Popular ratio combinations for 512px models include 1536 x 512 and 1536 x 384, while 1536 x 640 and 1024 x 576 are recommended for 768px models.

For 512px models, the minimum useful sizes are 192-256 in one dimension. For 768px models the minimum useful size is 384 in one dimension.

Generating images under the recommended dimensions may result in undesirable artifacts.

Note: stable-diffusion-xl-beta-v2-2-2 comes with some special considerations with regard to the dimensions it can generate images at stable-diffusion-xl-beta-v2-2-2 is a 512px model and can generate images at a maximum of either 512 x 896 or 896 x 512.

If either the width or the height (but not both) of an image generation request is greater than 512px, the other side (width or height, respectively) cannot be beyond 512px in dimension.

Note: stable-diffusion-xl-1024-v0-9 and stable-diffusion-xl-1024-v1-0 come with some special considerations with regard to the dimensions they can generate images at stable-diffusion-xl-1024-v0-9 and stable-diffusion-xl-1024-v1-0 are 1024px models. However, they have also been trained to support multiple aspect ratios, a clear improvement over previous models that would often see repeated subjects / concepts in wide or tall aspect ratio generations.

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.

Enhance your illustrations with Stable Diffusion SDXL

Pixabay

Pixabay.com 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 specify position in the retrieved picture in article. If you select the “Save to ‘thumb’ custom field” option, the URL of the generated image will be saved to the “thumb” custom field, so you can use it as a post thumbnail. To do this, simply select the “Create from custom field ‘thumb'” option in the “Post thumbnails” drop-down menu in the “Media Handling” tab of your feed settings. Select “Replace first image” if you want to replace the first image in the imported post, if it exists. Otherwise, the image will be inserted above the post.

Query

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. You can also use commas to separate your list of keywords. In this case, a random keyword will be chosen.

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.

Type

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

Orientation

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.

Google Images

You can use this menu to insert Creative Commons licensed images found through the Googel Images search service into your articles.

Image position

Use this drop down menu to select the image position from Google Images sprach results. If you select the “Save to ‘thumb’ custom field” option, the URL of the generated image will be saved to the “thumb” custom field, so you can use it as a post thumbnail. To do this, simply select the “Create from custom field ‘thumb'” option in the “Post thumbnails” drop-down menu in the “Media Handling” tab of your feed settings. Select “Replace first image” if you want to replace the first image in the imported post, if it exists. Otherwise, the image will be inserted above the post.

Query

Any word or phrase you specify can be used as a search query, as well as special placeholders like %post_title%, %categories%, %gpt_keywords%, %gpt_keywords_en%, %gpt_keyphrase% and %gpt_keyphrase_en%.

Min width

Minimum image width in pixels.

Min height

Minimum image height in pixels.

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 syndicated feeds on your server. Enabling this option can enhance the loading speed of your website and ensure that posts containing hotlink-protected images can be properly syndicated. However, it is important to understand and address any copyright-related issues when using this feature.

Please be aware that not all websites allow hotlinking of their images. By enabling this option, you take responsibility for ensuring that the images you upload to your server are allowed for such usage. If you encounter any copyright infringements or usage restrictions, the responsibility lies with you as the website owner.

Furthermore, it is essential to ensure that the /wp-content/uploads folder on your server is writable to facilitate the storage of the images locally. Without proper write permissions, the images may not be saved successfully.

We strongly recommend that you verify the permissions and copyright permissions of the images before enabling this option. It is your responsibility to comply with applicable copyright laws and obtain proper authorization for using and storing the images.

Convert PNG images to

Converts all locally stored PNG images to JPEG or WebP format. This setting can save enough space on your server and is especially useful for handling AI-generated images.

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.

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
  • Find a relevant image using GPT
  • Use the alternative image source

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.

Use FIFU

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[]% placeholders. For example, use the %pixabay[blue sky]% placeholder 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.

⚠️ Try to avoid using this option if possible, as it uses the getimagesize() PHP function, which can cause problems and even crashes on some server configurations.

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:

https://www.youtube.com/feeds/videos.xml?user=vevo
https://vimeo.com/channels/wefoundthese/videos/rss
https://feeds.feedburner.com/ign/video-guides
https://www.dailymotion.com/rss/user/gqmagazine

⚠️ 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 youtube.com, vimeo.com, ign.com or dailymotion.com.

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

Apply filters before

The “Apply filters before” dropdown menu determines at what stage the content of the post will undergo filtering rules. This setting can be adjusted to various stages:

  • full article extraction
  • AI text processor
  • text translator
  • text spinner
  • media processing

Selecting when to apply filters is essential for tailoring the post generation processes within the plugin. For example, if you are importing post content from an external source, like an RSS feed, and want to ensure that the plugin only includes posts with specific keywords you have designated, then you should select “full article extraction”. Conversely, if your aim is to scrutinize the content of the RSS feed or the complete article that you might wish to import directly from its webpage, then “AI text processor” would be the appropriate choice for conducting content verification after the article’s full text has been extracted.

Likewise, you have the flexibility to perform keyword filtering both before and after the translation of the imported article. This enables the filtering of the article either in its original language or after it has been translated.

It is important to remember that translating articles is facilitated through APIs from third-party applications (DeepL, Google Translate, and Yandex Translate), which are paid services. Hence, performing the original language check before its translation is cost-effective. This advice is equally relevant for “AI text processor” and “text spinner” stages; since these services are typically paid, it is more economical to filter after these steps.

When using this setting, make sure to check the CyberSEO Pro workflow.

Apply filtering to

Select the components of the post to which filtering rules will be applied. You can choose to filter by the post’s title, content, excerpt, or its source link, ensuring that only the relevant parts of the post are scrutinized for compliance with your specified filtering criteria.

Must contain any of these keywords

Enter keywords or phrases that the selected post components must include for the post to be imported. Separate multiple keywords or phrases with commas. This option allows for broad matching, where the presence of any one of the specified keywords or phrases is sufficient for the post to pass the filter.

Must contain all these keywords

List keywords or phrases that must all be present in the selected post components for the post to be considered for importation. Keywords and phrases should be separated by commas. This setting enforces stricter filtering, requiring all specified keywords or phrases to be included in the post.

Must contain none of these keywords

Specify keywords or phrases that should not appear in the selected post components. Separate these keywords or phrases with commas. Posts containing any of these specified terms will be excluded from importation, helping you avoid unwanted content.

Must contain any of these tags

Enter tags that the imported posts must be tagged with for inclusion. Separate the tags with commas. This filter ensures that posts are relevant to specified topics or categories by matching them with one or more of the listed tags.

Must contain none of these tags

List tags or phrases that the posts must not be tagged with. Tags should be separated by commas. This filtering criterion ensures that posts associated with certain tags are excluded, helping refine content selection.

Must be newer than […] day(s)

Set a threshold for the minimum recency of the post based on the publication date indicated in the feed. Use 0 to include posts regardless of their publication date. This filter helps prioritize the importation of newer content, ensuring its relevance and timeliness.

Must be older than […] day(s)

Define a threshold for filtering out posts that are too recent by specifying the minimum age a post must be, based on its publication date in the feed. Use 0 to disable this filter. This option can be useful for avoiding the immediate import of content, allowing for a delay or ensuring that only archival content is selected.

Must be longer than […] character(s)

Specify the minimum length a post must have to be considered for importation. Use 0 to not filter by post length. This filter is useful for ensuring that only posts with sufficient detail or content volume are imported, helping maintain quality and depth in your content selection.