The RSS Retriever Syndicator provides a high level of flexibility for parsing and managing content sources. To begin, enter the URL of the RSS feed you want to add and submit it to RSS Retriever. Once submitted, you can fine-tune the settings for that specific source. RSS Retriever supports importing compressed RSS and Atom feeds in formats such as ZIP, Gzip, and Bzip2. In addition, you can also import social media feeds from platforms like YouTube, Vimeo, Flickr, and Dailymotion directly from the same menu.
The "New feed URL" field is where you define the primary content source for your feed. This can be an RSS or Atom feed URL, or a feed link from YouTube, Vimeo, Flickr, or Dailymotion. RSS Retriever automatically recognizes the format and converts the incoming data into a standardized internal XML structure for consistent handling.
To temporarily adjust the default settings of the RSS Retriever Syndicator, use this form before adding a new feed URL. Here, you can apply specific settings such as a custom user agent or additional post headers for that particular feed. These adjustments only affect the next feed you add and are not stored permanently in the database like the default feed settings.
Making changes to multiple feeds one by one can be time-consuming, but the "Modify selected feeds" option makes it simple. Just select the feeds you want to edit and click the button. To apply a setting across all selected feeds, check the red box located next to the option. Any unchecked options will remain unchanged. This feature allows you to update multiple feeds at the same time, greatly reducing the amount of effort required.
This option randomly changes the last update times of the selected feeds. By doing this, you can spread out the feed update intervals, ensuring that they are not all processed simultaneously.
To quickly move your feed settings between different sites, you can use the import/export feature at the bottom of the "Content Syndicator" page. This allows you to export selected feed settings to a text file and later import them into another instance of RSS Retriever Syndicator. With this function, you can save time when setting up new feeds by reusing existing configurations instead of starting from scratch.
On the feed settings page, you will find the "Preview mode" drop-down menu in the top-left corner. This menu lets you switch between several preview types, including:
By using the "Preview mode" drop-down, you can review the structure and details of the source you are syndicating. You can inspect the XML layout, view any attachments such as media files, and compare the feed’s original article with its complete version scraped directly from the source website. This helps you decide which version of the content is best suited for import.
You can edit or assign a feed title, and this title will be displayed in the feed list on the main RSS Retriever Syndicator page.
Here, you can change the actual URL of the feed if needed.
When enabled, RSS Retriever is able to import all published posts from a WordPress blog, even if they are not included in the blog’s current RSS feed. This option, called "Parse WordPress archives," allows the plugin to go through the blog’s historical archives and pull in every available post. This can be especially powerful if a blog has been active for many years with thousands of posts. It provides a unique feature not commonly found in other curation plugins. However, it is strongly recommended that you use this option only with proper authorization from the content owner, as importing copyrighted content without permission could lead to legal complications.
Enable this option to randomize the order of feed items so that they are imported in a shuffled sequence rather than in their original order.
This setting determines how RSS Retriever will identify and prevent duplicate posts from being imported:
Select the post type you want for the imported items, such as post
, page
, attachment
, revision
, nav_menu_item
, custom_css
, customize_changeset
, user_request
, or any custom post type including WooCommerce product
and others.
Here, you can select a custom template to be used specifically for posts assigned to custom post types.
Custom taxonomies can be linked to a chosen post type in RSS Retriever Syndicator using the "Assign custom taxonomies" option. To do this, enter the taxonomy terms you want, separated by commas.
You can also use placeholders to map values from custom fields or XML tags to a specific taxonomy. Examples include: %post_tags%
, %xml_tags[name]%
, %custom_fields[name]%
, and similar formats.
Select the format you want for the imported post: default
, aside
, gallery
, link
, image
, quote
, status
, audio
, video
, or chat
.
This option lets you assign a specific author (a registered WordPress user) to all posts syndicated from the selected RSS feed.
Here, you can select existing WordPress categories to automatically assign to all imported posts.
If a syndicating post contains categories that don’t match your predefined ones, the "Undefined categories" option determines what happens. You can choose one of the following four actions:
<category>
tag of the syndicating post.RSS Retriever can automatically generate WordPress tags from the categories listed in a feed’s <category>
tag. When enabled, the plugin converts those feed categories into WordPress tags.
This feature exists because RSS and Atom feeds rely on categories to organize articles, while WordPress uses both categories and tags. By enabling this setting, you make sure that any imported post’s categories from the feed are also converted into WordPress tags. This improves content organization and SEO, and is one of the many useful features of RSS Retriever.
This setting appears only if the WPML plugin is installed and active. From the "WPML language" drop-down, select the appropriate WPML language code.
You can add multiple copies of the same feed, each set to a different WPML language. This creates a separate version of each post in different languages, allowing you to build multilingual sites supported by automatic translation methods within the plugin.
When creating multiple versions of the same feed in different languages, name them clearly in RSS Retriever Syndicator, such as Feed Name (EN), Feed Name (DE), Feed Name (IT), etc.
Keep in mind that since posts in different languages come from the same source feed, they are treated as related. If you use the "Delete posts syndicated from selected feeds" option to remove posts from one language version of the feed, all other language versions generated from that same feed will also be deleted.
This setting is visible only if the Polylang plugin is installed and active. From the "Polylang language" drop-down, select the desired Polylang language code.
Like WPML, you can add multiple versions of the same feed, each assigned to a different Polylang language. This creates separate posts for each language and enables multilingual functionality supported by machine translation methods in the plugin.
Give each feed a distinct name for clarity in RSS Retriever Syndicator, such as Feed Name (EN), Feed Name (DE), Feed Name (IT), etc.
Remember that all language versions of a feed share the same content source. Therefore, if you use the "Delete posts syndicated from selected feeds" option and remove posts from one Polylang language version, the posts created for all other languages from the same feed will also be removed.
You can manually create tags and assign them to all syndicated posts by entering them into this field.
If this option is enabled, RSS Retriever automatically scans the imported content for existing tags on your site and assigns them where relevant. For example, if your site already has tags such as "sport", "weather", "toys", and "books", and a feed post contains the sentence:
"The weather today is very dank, which is not conducive to sport activities..."
Then the imported post will be automatically tagged with "weather" and "sport".
Enable this setting to map imported post tags to WooCommerce product categories.
Enable this setting to map imported post categories to WooCommerce product categories.
This option allows you to define how often, in minutes, RSS Retriever should check the selected feed for new content. To disable automatic updates entirely, set the value to "0".
Here you can specify the maximum number of posts RSS Retriever should import from the feed at each update. Use balanced values so your site updates naturally without overwhelming your server. Importing too many posts at once can appear suspicious to search engines and may negatively affect rankings.
This feature allows site owners to push already published content back to the top of their site’s index, making it appear fresh. However, use it with caution, as not all websites benefit from this type of content cycling.
The Delay option lets you define a time interval, in seconds, between importing new posts and generating sections of articles created with the [gpt_article]
shortcode. This is especially useful when working with third-party APIs like OpenAI GPT, which may enforce rate limits. If the plugin makes too many requests in a short time, you could see errors 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, the plugin pauses before making new requests, which helps prevent exceeding the rate limits and ensures stable operation.
It is also recommended to use delays when syndicating Amazon product search results or other sources that may block your IP if requests are too frequent.
Adjust the delay time to fit the limits and requirements of whichever third-party services you are using.
This drop-down menu controls the publishing status of syndicated posts. You can choose one of four options:
This option lets you decide whether comments will be enabled or disabled on syndicated posts. Allowing comments can encourage interaction and discussions on your site, but it can also attract spam and unwanted content. If you do not have time or resources to moderate, or if you want readers to focus strictly on the content, you may prefer to disable comments.
Pings are a WordPress mechanism used to notify other websites when your blog has been updated with a new post. If this setting is enabled, your site will send notifications to other websites whenever a new post is syndicated from the selected feed. If it is disabled, no notifications are sent. Keeping pings enabled is generally recommended, as it increases visibility and can help drive additional traffic to your site.
When enabled, this feature shuffles the order of paragraphs in syndicated posts. This can help generate unique variations of content and reduce duplication issues.
The UTF-8 encoding option can transform an ISO-8859-1 string into UTF-8, which is sometimes necessary when parsing feeds that contain illegal UTF-8 start bytes (such as <0x92>
). This makes it possible to process even invalid feeds that would otherwise fail to parse in other syndicators.
Enable this option if the feed you are syndicating is delivered in a national character set such as windows-1251 or ISO-8859-1. The feed will be automatically converted into UTF-8 to ensure compatibility.
The Base date setting controls which date will be applied to syndicated posts:
The "Post date adjustment" option lets you modify the publication date of syndicated posts by a range of minutes. Normally, posts are published using either the syndication date or the date in the RSS/XML feed. With this feature, you can randomize or shift those dates to make your publishing pattern look more natural.
For example, if you set the adjustment range to [-60]
.. [60]
, post dates will be spread randomly between 60 minutes before and 60 minutes after the syndication date or feed date. You can also use negative ranges to backdate posts, or positive ranges to schedule them into the future. For instance, [-1440]
.. [-60]
will set post dates between 24 hours and 1 hour before the original date, while [60]
.. [1440]
will schedule them 1 to 24 hours after the original date.
This feature defines how long syndicated posts remain on your site before they are automatically deleted, measured in hours. Set the value to 0 if you do not want any time limit.
This is particularly useful for online stores and similar projects where outdated content needs to be regularly replaced. By defining a post lifetime, you ensure that expired products or irrelevant information are removed automatically, keeping your site updated and relevant.
RSS Retriever provides a powerful feature for building custom HTML templates that define the layout and structure of your posts. You can customize elements such as post title, slug, content, excerpt, meta title, and meta description. These templates allow you to create posts that match your SEO strategy and improve user experience with consistent formatting.
Think of post templates as the structural HTML skeleton stored in the WordPress database for every post generated from a feed. For example, if you set the post template like this:
Hello, I'm a <strong>WordPress</strong> post!
Then every post generated by that feed will include the exact same text.
By default, a post template contains only one placeholder: %post_content%
, which is replaced with the content retrieved from the external feed. If you remove everything from the template, all generated posts will be empty, with no content at all.
Essentially, a template works as the HTML blueprint for each post linked to a feed. It can be static, where all posts look the same, or dynamic, where placeholders and shortcodes bring in external or AI-generated content. This dynamic capability allows you to use Spintax, AI prompts, and more. The specific placeholders available are listed below.
The available placeholders include:
%post_title%
- post title;%post_date%
- post date and time in DATE_RSS format: "YYYY-MM-DD HH:MM:SS";%post_date[format]%
- post date and time using a custom format, e.g. %post_date[Y-m-d]%
;%post_content%
- full post content;%post_content[max_words]%
- post content in HTML truncated to a specified number of words;%post_content_notags%
- post content with all HTML tags removed;%post_content_notags[max_words]%
- tag-free post content shortened to a specific number of words;%post_excerpt%
- post excerpt;%post_excerpt[max_words]%
- post excerpt in HTML shortened to the chosen number of words;%post_excerpt_notags%
- post excerpt with HTML tags stripped;%post_excerpt_notags[max_words]%
- stripped excerpt shortened to the specified number of words;%post_tags%
- post tags as a comma-delimited list;%categories%
- post categories as a comma-delimited list;%link%
- link to the original source;%post_guid%
- post GUID;%gpt_prompt[prompt]%
- replaced with the AI-generated result from the prompt, using the default AI model. Can be nested inside other placeholders or shortcodes (without nesting);%gpt_keywords%
- replaced with a comma-delimited list of keywords extracted from the article using the default AI model;%gpt_keywords_en%
- replaced with a list of English keywords extracted via the default AI model;%gpt_keyphrase%
- replaced with a short keyphrase generated by analyzing the article with the AI model;%gpt_keyphrase_en%
- replaced with a short English keyphrase generated by the AI model;%gpt_image_prompt%
- analyzes the article text with the AI model and creates a prompt for generating images using tools like Midjourney, DALL-E 3, or Stable Diffusion. When used with the "Batch insert" mode under Media enhancement, it generates unique prompts for each text section before inserting an image. This is highly effective for visualizing imported or AI-generated text.%media_description%
- description of attached media, if available;%enclosure_url%
- enclosure URL, if an attachment is included;%xml_tags[name]%
- value of an XML tag, replacing name
with the actual tag name;%xml_tags_attr[name][attr]%
- value of a specific XML tag attribute, replacing name
with the tag and attr
with the attribute name;%params[name]%
- value of a feed URL parameter. For example, in the URL http://www.ebay.com/sch/i.html?_nkw=books&_rss=1
, %params[_nkw]%
would return "books".%custom_fields[name]%
- value of a custom field, where name
is the field key;%media_thumbnail[n]%
- link to the n
-th media thumbnail, if attachments are included;%random_image[keywords]%
- random Creative Commons licensed image URL from Google Images for one of the specified keywords
;%random_file[path]%
- URL of a random file from a specified server path. Useful for inserting random images into posts, e.g. <img src="%random_file[path]%">
. The "path" must be an absolute directory path on your server.%pixabay[keywords]%
- random full-size image URL from Pixabay based on one of the provided keywords
. Multiple keywords can be comma-separated.%youtube_video[keyword]%
- embed code for a YouTube video matching the keyword
.You are able to use placeholders inside another placeholder in RSS Retriever. For example, the following placeholder inserts a YouTube video related to the current post title directly into the post body:
%youtube_video[%post_title%]%
or
%youtube_video[%gpt_prompt[Analyze the following article and provide a short keyphrase for it to search a relative video on YouTube. Do not provide a description or introduction, just the prompt without comments: %post_content_notags%]%]%
In this example, the %gpt_prompt[]%
placeholder analyzes the article text (retrieved with %post_content_notags%
, which removes HTML tags) and generates a keyphrase for searching YouTube. That AI-generated keyphrase is then passed to the %youtube_video[]%
placeholder, which fetches and embeds the relevant video. By nesting placeholders, you can create powerful, flexible workflows that adapt dynamically to the content.
This placeholder will add a relevant image:
%random_image[%post_title%]%
The "Meta title" and "Meta description" templates are especially useful when you are working with popular SEO plugins such as Yoast SEO, Rank Math SEO, The SEO Framework, SEOPress, or Slim SEO. RSS Retriever automatically detects which SEO plugin is active and applies your meta description template. This ensures seamless integration with your SEO plugin’s settings and helps optimize your posts. Please note that to use the "Meta description" template feature, one of the supported SEO plugins must be installed and active on your site.
If you want to prepend some text to every post title (for example, "Breaking news:"), update the "Post title" template like this:
Breaking news: %post_title%
The following "Post content" template places a random image of a Christmas tree at the top of each post:
<img class="aligncenter" src="%random_image[christmas tree]%" /> %post_content%
If you prefer not to use a fixed keyword, you can make the template pull a random Creative Commons image from Google based on the actual post title:
<img class="aligncenter" src="%random_image[%post_title%]%" alt="%post_title%" /> %post_content%
This "Post content" template appends a backlink to the source below the content:
%post_content% <p>Source: <a href="%link%" target="_blank">%link%</a></p>.
Here is another example. Suppose you are importing a product XML feed with the following structure:
<product_name> the product name </product_name> <picture> the product picture URL </picture> <price> the product price </price>
You only need to define your "Post template" as follows:
<h3>%xml_tags[product_name]%</h3> <image src="%xml_tags[picture]%" /> <p><b>Price:</b> %xml_tags[price]%</p>
Shortcodes are a key feature of RSS Retriever, enabling you to use WordPress-style shortcodes with additional arguments in your post templates. Note that these shortcodes cannot be used in the "Post excerpt" template. Unlike regular WordPress shortcodes, these only function during automated post generation by the plugin. They will not execute if you insert them manually when creating or editing posts. With shortcodes, you can inject more flexibility and dynamic behavior into your posts.
The [openai_gpt]
shortcode inserts OpenAI GPT-generated text into your posts. The syntax is as follows:
[openai_gpt model="gpt-4" prompt="your assignment" max_tokens="..." temperature="..." top_p="..." presence_penalty="..." frequency_penalty="..."]
The prompt
parameter is required, as it defines the instruction for GPT. All other parameters are optional.
top_p
threshold (e.g., 0.1 means only the top 10% most likely tokens are used).GPT-4o is a multimodal model capable of solving complex problems with improved accuracy, broad general knowledge, and stronger reasoning abilities compared to earlier models. While GPT-4o is optimized for chat, it also works effectively for content generation. GPT-4o mini provides a lighter alternative for simpler tasks. For demanding reasoning tasks, GPT-4o is recommended, but both versions can handle natural language and code generation.
ExamplesTranslate the imported article to German:
[openai_gpt prompt="Translate the following article to German and return the result in HTML format: %post_content%"]
Rewrite the imported article in Italian:
[openai_gpt prompt="Riscrivere questo e restituire il risultato in formato HTML: %post_content%"]
The [claude]
shortcode inserts AI-generated text from Anthropic Claude into your posts. The syntax is as follows:
[claude model="claude-2.1" prompt="your assignment" max_tokens="..." temperature="..." top_p="..." top_k="..."]
The prompt
parameter is required. All other parameters are optional.
top_p
threshold. Defaults to 1. It is recommended to adjust either temperature
or top_p
, not both simultaneously.Only the top K most likely tokens are considered when top_k
is applied. This helps eliminate unlikely outputs and improves result quality. You can find more technical details about this sampling method in Anthropic’s documentation.
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%"]
The [gemini]
shortcode inserts AI-generated text from Google Gemini directly into your posts. The shortcode has the following structure:
[gemini model="gemini-pro" prompt="your assignment" max_tokens="..." temperature="..." top_p="..." top_k="..."]
The prompt
parameter is required. It defines your instruction for Gemini. All other parameters are optional.
top_p
threshold. Defaults to 1. You should adjust either temperature
or top_p
, but not both simultaneously.Only the top K options are sampled for each next token when top_k
is applied. This reduces “long tail” results. Learn more technical details in Google’s Gemini documentation.
The following post template generates a recipe based on the 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%"]
The [xai]
shortcode inserts AI-generated text from xAI Grok into your posts. The shortcode has the following syntax:
[xai model="grok-beta" prompt="your assignment" max_tokens="..." temperature="..." top_p="..." presence_penalty="..." frequency_penalty="..." search_parameters="..."]
The prompt
parameter is mandatory. It contains your assignment for xAI Grok. All other parameters are optional.
top_p
probability mass. For example, 0.1 means only the top 10% most likely tokens are considered.mode
, sources
, from_date
, and more. Use single quotes inside JSON to maintain valid shortcode syntax (the plugin will auto-convert them).[xai model="grok-3-latest" prompt="What's new in AI today?" search_parameters="{'mode':'on','sources':[{'type':'news','country':'US'}]}"]
This example enables Grok’s live search and queries the news
source restricted to United States results.
You may also use Spintax in any part of the [xai] shortcode, including prompts and other text-based arguments. However, Spintax cannot be used inside search_parameters
, since it must remain valid JSON. If Spintax is detected there, the shortcode will be ignored. Outside of search_parameters
, Spintax works normally.
The [or_text]
shortcode lets you access any language model available on OpenRouter.ai directly within WordPress. With OpenRouter integration, you gain access to a wide selection of AI models, including open-source solutions and proprietary engines like OpenAI GPT, Meta Llama, Google Gemini, Anthropic Claude, and more. Visit OpenRouter.ai for the complete list of supported models. This flexibility allows you to choose the right model for the task, taking advantage of their unique capabilities.
The shortcode format is as follows:
[or_text model="model ID" prompt="your prompt"]
The prompt
parameter is required. It defines the instruction for the selected model. All other parameters are optional.
You may also include additional parameters such as temperature
and max_tokens
, depending on the model. These parameters use the same format as OpenAI-compatible APIs. You can also configure a default model in your endpoint settings. If a default is set, the model
parameter becomes optional.
[or_text model="openai/gpt-4-turbo-preview" prompt="Rewrite this text in a sarcastic style, keeping its HTML structure: %post_content%"]Parameters
The [custom_ai]
shortcode allows you to connect to your own custom AI endpoint and generate content using any OpenAI-compatible text model. With this feature, you can integrate external AI services such as DeepSeek, Mistral, or even self-hosted models into RSS Retriever.
The shortcode format is as follows:
[custom_ai id="your-endpoint-id" model="model-id" prompt="your assignment"]
The id
and prompt
parameters are required. The model
parameter is optional if you have already set a default model for the endpoint in the plugin settings.
You may also use additional parameters (model
, temperature
, max_tokens
, etc.) depending on the model you are using. These must follow the OpenAI-compatible format. If a default model is configured in the endpoint settings, the model
parameter becomes optional.
0.9
, only tokens within the top 90% probability mass are considered.This shortcode gives you full control over which AI service and model you want to use, enabling advanced integrations beyond the built-in options.
The [ai_generate]
shortcode is a universal generator that can produce text using any supported AI engine. It works with both integrated and custom endpoints, including OpenAI, Google, Anthropic, xAI, OpenRouter, and your own AI services.
It gives you complete control over the provider, model, and all available parameters. The shortcode has the following format:
[ai_generate engine="provider-model" prompt="your assignment"]
The engine
and prompt
parameters are required.
provider_id-model_id
, provider_id/model_id
, or endpoint_id-model_id
, depending on the provider type. See the AI Engine documentation for details and examples.temperature
.You can also include any other parameters supported by the specific AI model you are using. The plugin passes all extra parameters directly to the engine endpoint.
The [gpt_article]
shortcode is a powerful autoblogging tool that uses a prompt pipeline algorithm to generate long, coherent articles in multiple sections. With it, you can build structured, detailed posts of up to 300 pages using AI text generation. The shortcode format is:
[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
%post_title%
. Examples: [gpt_article topic="Life in Prague"]
, [gpt_article topic="%post_title%"]
.provider_id-model_id
, provider_id/model_id
, or endpoint_id-model_id
. Refer to AI Engine documentation for rules and examples.[gpt_article topic="%post_title%" sections="5"]
.[gpt_article sections="4" topic="%post_title%" directives="The article should tell about known facts reviving the secrets." section2="Format the text using only <p>, <em>, <blockquote>, <ul>, <li> tags. Add one quote."]
.[gpt_article topic="%post_title%" structure="Section 1: Introduction; Section 2: Main content; Section 3: FAQ."]
.[gpt_article topic="%post_title%" directives="Use only <p>, <em>, <ul>, <li> tags."]
.[gpt_article topic="%post_title%" language="Spanish"]
.<h2>
. Can be changed to any valid HTML tag or left empty. Examples: [gpt_article topic="%post_title%" heading="h3"]
, [gpt_article topic="%post_title%" heading=""]
.[gpt_article topic="%post_title%" max_tokens="3000"]
.[gpt_article topic="%post_title%" temperature="0.7"]
.Because AI models have generation limits (commonly 2048–4096 tokens per response), the [gpt_article]
shortcode divides content into sections. First, it generates section titles based only on the structure parameter. For instance, you could set: "Assign 'Introduction' to the first subsection and 'FAQ' to the last one." Then, when generating text for each section, the shortcode includes both structure and directives instructions in the prompt. This ensures that the content not only follows the structural outline but also obeys formatting and content rules, resulting in more coherent articles.
The [flux]
shortcode inserts Flux-generated images into your posts. Flux is a text-to-image AI model available via GoAPI that offers low moderation and the ability to generate photorealistic images of real people, including celebrities, making it a strong choice for illustrating news content. The shortcode format is:
[flux prompt="your Flux prompt" provider="API service provider" model="Flux model" width="image width in pixels" height="image height in pixels" name="alt image name in the post" class="desired CSS class"]
flux1-dev
(default) and flux1-schnell
.alt
attribute in the post. Defaults to %post_title%
.Example of using the [flux]
shortcode in a template:
[flux prompt="Elon Musk gives a speech at a press conference" width="1344" height="768"]
The following example uses the %gpt_image_prompt%
placeholder:
[flux prompt="%gpt_image_prompt%"]
The [midjourney]
shortcode inserts Midjourney-generated images into your posts. The shortcode format is:
[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"]
lazy
, fast
(default), or turbo
.16:9
.alt
attribute. Default is %post_title%
.Example of using the shortcode in a post template:
[midjourney prompt="an image for a blog post on the topic '%post_title%'" aspect_ratio="1:1"]
The following example uses %gpt_prompt[]%
to analyze the article and generate a custom Midjourney prompt:
[midjourney prompt="%gpt_prompt[Analyze the following article and provide a very short image prompt for Midjourney, focusing on a single specific object, character, or scene described below. Include any notable colors, emotions, or actions to help create a visually compelling and relevant image. Do not provide a description or introduction, just the prompt without comments: %post_content_notags%]%" aspect_ratio="16:9"]
The [dalle]
shortcode inserts images generated by OpenAI’s DALL·E into your posts. The shortcode format is:
[dalle model="dall-e-3" prompt="your OpenAI DALL∙E assignment" name="%post_title%" size="1792x1024" class="aligncenter"]
The prompt
parameter is required. It defines the text description for DALL·E 2, DALL·E 3, or GPT-Image-1. The name
is used as both the filename and the image alt
attribute. Available parameters include:
gpt-image-1
, dall-e-2
, or dall-e-3
.1024x1024
, 1024x1792
, or 1792x1024
.alt
attribute.The [stable_diffusion]
shortcode inserts images generated by Stable Diffusion. The shortcode format is:
[stable_diffusion stable_diffusion_engine="sd3.5" text="A lighthouse on a cliff" name="%post_title%" aspect_ratio="16:9" class="aligncenter"]
The text
parameter is required. It specifies the description for Stable Diffusion 3.5. The name
parameter is used as both filename and alt
attribute value.
Available parameters for the [stable_diffusion]
shortcode:
ultra
, core
, sd3.5
, sd3
, stable-diffusion-xl-1024-v1-0
, stable-diffusion-xl-beta-v2-2-2
.alt
attribute value.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
. Supported by core
, stable-diffusion-xl-1024-v1-0
, stable-diffusion-xl-beta-v2-2-2
.FAST_BLUE
, FAST_GREEN
, SIMPLE
, SLOW
, SLOWER
, SLOWEST
. Supported by stable-diffusion-xl-1024-v1-0
, stable-diffusion-xl-beta-v2-2-2
.16:9
, 1:1
, 21:9
, 2:3
, 3:2
, 4:5
, 5:4
, 9:16
, 9:21
. Supported by ultra
, core
, sd3
.stable-diffusion-xl-1024-v1-0
, stable-diffusion-xl-beta-v2-2-2
.stable-diffusion-xl-1024-v1-0
, stable-diffusion-xl-beta-v2-2-2
.stable-diffusion-xl-1024-v1-0
, stable-diffusion-xl-beta-v2-2-2
.The [image_gallery]
shortcode inserts an image gallery into posts. Example:
[image_gallery url="%link%" featured_image="first" link="file"]
This shortcode instructs the plugin to parse imported pages for galleries, typically presented as thumbnail tables linking to full-size images. When a gallery is found, RSS Retriever downloads the full-size images, generates thumbnails, and assembles a standard WordPress image gallery within the post. Available parameters:
first
, last
, random
, or leave empty to disable featured image generation.thumbnail
, medium
, large
, full
, or any custom size registered via add_image_size()
. Default: thumbnail
. The sizes for thumbnail
, medium
, and large
can be adjusted in WordPress under Settings → Media.file
(direct link), none
(no link), or leave blank to link to the attachment page.delete
to skip importing posts without galleries.[image_gallery]
shortcode, make sure the "Post thumbnail" option is set to "Do not generate". Otherwise, the thumbnail will not be processed correctly.
The [pixabay]
shortcode allows you to insert a full-size image from Pixabay.com into your post templates. Example:
[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"]
Parameters available for the [pixabay]
shortcode are described in detail in the Pixabay section of this manual. You may also use a comma-separated list of keywords; in that case, one of the keywords will be chosen randomly.
The "Template processing order" setting lets you define the sequence in which the three main templates (post title, post content, post excerpt) are processed. You can drag and drop them in a visual interface to set the desired order. The plugin processes them from left to right in the chosen arrangement.
This ordering is particularly useful when working with dummy feeds - feeds with no external source content - where all WordPress post elements (title, content, excerpt) are generated entirely by the plugin. These may use Spintax expressions or AI-based shortcodes to produce text.
By setting the processing order, you can ensure that the output of one template is used as input for another. Each of the three WordPress post elements can be accessed as placeholders: %post_title%
, %post_content%
, and %post_excerpt%
.
For example, suppose you want to generate random post titles using Spintax and then build the article body from those titles using the [gpt_article]
shortcode. In this case, the "Template processing order" should be:
Your templates might be:
Post title:{Work|Life|Weather} in {Paris|Amsterdam|London|Berlin|Prague|Vienna|Rotterdam|Helsinki}Post content:
[gpt_article topic="%post_title%"]
Alternatively, if you prefer to generate an article first with [gpt_article]
and then derive a title using the [openai_gpt]
shortcode, the order would be:
Your 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 this example, the placeholder %post_content_notags%
is used instead of %post_content%
, ensuring all HTML tags are stripped. This reduces token usage when calling the AI model, lowering API costs.
You can also design other workflows. For instance, you might generate a short excerpt that captures the article’s key idea, then use that excerpt (%post_excerpt%
) as the base for generating the full content and title. In this scenario, the processing order would be:
This setting transforms Spintax expressions in templates into plain text. For example, a phrase like {word1|word2}
will randomly resolve to either "word1" or "word2".
When enabled, RSS Retriever can automatically extract full-text articles from truncated RSS feeds. This is useful if you want complete articles on your site instead of snippets, ensuring unique and valuable content.
There are two extraction methods available: Full-Text RSS script and custom extraction.
The Full-Text RSS script is an optional GPL-licensed third-party product, installable separately and used via REST API. It is not included with RSS Retriever and is provided “AS IS”. The script can usually extract complete articles from most webpages containing the original content, though it may occasionally miss parts like embedded videos. Not all RSS feeds provide enough information for complete extraction.
To use this method, select "Use Full-Text RSS script" in the "Extract full text articles" drop-down menu.
⚠️ If the Full-Text RSS script cannot extract an article, you can configure rules manually for each website you syndicate from.
The custom method is an alternative when the universal Full-Text RSS script fails. However, it only works with specific websites where article pages share a consistent layout. This means you must configure it separately for each feed you want to process. It will not work with aggregator feeds such as Google News or Bing News, since those articles link to many different sites with varying layouts.
To use this method, choose "Use custom settings" in the "Extract full text articles" drop-down menu. This will unlock additional options for defining extraction rules:
Container tagSpecify the HTML tag that encloses the article’s main content (e.g. article
, div
, section
). This tag will be used to identify the article container.
Define attribute-value pairs for the container tag in JSON format. Example: {"class": "article", "id": "main"}
. This helps the plugin distinguish the correct element when multiple tags share the same name.
Enable this if you want the extracted content to include the container tag itself along with its attributes. Leave it disabled to extract only the inner content of the tag.
Advanced users may also add their own PHP snippets to extend RSS Retriever. With custom PHP code, you can parse source HTML pages directly and extract full-text articles exactly as needed, ensuring no important content is lost.
⚠️ When "Extract full text articles" mode is enabled, RSS Retriever attempts to always fetch full text from truncated feeds. If it cannot retrieve the full article, the corresponding post will not be created.
Enter a comma-separated list of HTML tags you want removed from generated posts, for example: h1
, img
, script
, style
.
If you need to remove specific HTML blocks from imported content, list them in a semicolon-separated format. Each rule must include the tag name followed by attribute-value pairs in JSON format, separated by a space. For example, to strip out all <div>
elements with class="comment"
and all <p>
elements with class="description"
and id="block"
, enter: div {"class": "comment"}; p {"class": "description", "id": "block"}
For instance, if the syndicated articles include a share section inside a <div>
with the class "share-box":
<div class="share-box"> <!-- Share icons and content here --> </div>
You can remove this block by adding the following rule to the "Remove outer HTML elements" box: div {"class": "share-box"}
This ensures that any <div>
element with the attribute class="share-box"
will be stripped from post content. Always make sure to define tag names and attribute pairs precisely in JSON format to remove the intended HTML elements effectively.
Certain AI text models such as Google Gemini Pro and Mixtral 8x7B may mistakenly return Markdown instead of HTML when asked for HTML formatting. For example, instead of producing:
You might receive:
> ### The quarterly results look great! > * Revenue was off the chart. > * Profits were higher than ever. > *Everything* is going according to **plan**.
Enable the "Convert Markdown to HTML" checkbox to automatically fix this issue.
⚠️ This option applies only to text produced by AI generation shortcodes. It does not affect other parts of your content.
This option sanitizes post content. When enabled, the plugin will:
<
characters into entities;<iframe>
, <embed>
, <style>
, <script>
;The "Balance tags" feature uses the WordPress API to correct unclosed or redundant HTML tags in post content and excerpts. It should only be enabled if you can control post content length, as misuse may lead to memory issues or bugs.
Note that this option uses fixed lists of single and nestable tags. Since WordPress maintains multiple lists that are not always synchronized, changes in tag nesting behavior or missing elements may lead to invalid markup.
This setting controls the maximum number of words in post excerpts. Enter “0” to remove excerpts completely, or leave the field blank to preserve excerpts without changes.
This setting defines how links inside syndicated posts should be treated. Four modes are available:
RSS Retriever can translate HTML-formatted articles into multiple languages using third-party services such as Google, Yandex, DeepL, or the efficient OpenAI GPT-4o mini model (via official API or OpenRouter). To enable this, specify the source and target languages and enter your API key. ⚠️ A valid paid API key is required. If the translation fails, the article will not be imported.
For advanced needs, you may also use your own PHP snippets to parse original article HTML and extract full text for translation.
The built-in synonymizer can be enabled, disabled, or set to run either before or after a third-party spinner. The synonym database can be managed on the Synonymizer/Rewriter page.
This setting lets you pick a third-party spinner from a drop-down list and configure its parameters if necessary. RSS Retriever supports:
The AI Spinner leverages the efficient and cost-effective OpenAI GPT-4o mini model (via official API and OpenRouter) to spin even very large articles while preserving their HTML structure. It supports a wide range of languages, including German, Spanish, Russian, Ukrainian, Turkish, Chinese, French, and more.
⚠️ Keep in mind that OpenAI restricts certain topics (hate speech, violence, pornography, political propaganda). Such content cannot be processed by AI Spinner.
⚠️ Never use an AI Spinner on AI-generated content. It provides no benefit and only wastes processing time and money.
While emojis can add humor or visual appeal to post titles, they are not always desirable in post slugs (URLs). To prevent them from appearing in links, enable this option. It will safely strip emojis from post slugs without affecting the titles themselves.
This option allows you to control whether the built-in synonymizer should apply to post titles. By default, RSS Retriever synonymizes both titles and content. If you prefer to keep titles unchanged but still synonymize content, simply enable this setting. If you want titles and content both synonymized, leave it disabled.
Post headers and footers are customizable fields that let you add text or HTML at the beginning or end of every syndicated post. This is useful for inserting random text, quotes, attribution links, or custom promotional content.
For example, if you add the following text to the "Post Footers" box, each syndicated post will randomly display one of Mark Twain’s quotes:
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 may also use placeholders to automatically include post data within headers or footers. For example, to add a link to the original source, place the following code in the "Post Footers" box:
<p><a href="%link%">Source</a></p>
RSS Retriever provides several methods for populating custom fields in WordPress posts. Below are the available approaches.
To assign a fixed value to a custom field, use the following syntax:
"String value"->custom_field_name
For example, to always set the field product_type
to T-shirt
, enter:
"T-shirt"->product_type
To populate a custom field with the value of an XML tag, use:
xml_tag_name->custom_field_name
For example, given the following feed structure:
<price currency="USD"> 29.99 </price> <isbn> 978-3-16-148410-0 </isbn>
You could map values into WooCommerce fields as follows:
price->_price isbn->isbn
Tags may also include attributes, which must always be quoted. In the above example, currency="USD"
is an attribute of the price
tag. To extract this value into a field called price_currency
, enter:
price:currency->price_currency
RSS Retriever can also extract content directly from the generated post and save it as a custom field. Two methods are available:
Using outer HTML elementsUse the HTML tag name followed by attributes in JSON format:
tag {"attribute_name 1": "value 1", "attribute_name 2": "value 2", ...}
For example, if your post contains:
<span class="price">129.95</span><span class="old-price">249.95</span>
You could map values as follows:
span {"class": "price"}->_price span {"class": "old-price"}->_regular_priceUsing regular expressions
Prefix your expression with regex:
. For example, to capture the URL from an image and store it in the custom field thumb
:
<img class="featured" src="https://www.site.com/images/house.jpg" alt="House"/>
Use the following rule:
regex:<img class="featured" src="(.*?)"->thumb name->%post_title%
The following placeholders are available:
%link%
– the original article’s link;%post_title%
– post title;%post_content%
– post content;%post_excerpt%
– post excerpt;%post_pags%
– post tags as a comma-separated list;%categories%
– post categories as a comma-separated list;This setting toggles the use of proxies defined in General Settings. Proxies are useful for parsing sources that block or limit multiple requests from the same IP address.
If you see the error "Unable to acquire" when trying to import a feed, the site owner may be blocking automated scripts. To bypass this, you can change the user agent string so the plugin appears as a browser or crawler.
Common user agent values to try include:
Switching the user agent often helps feeds import successfully.
This option sets the referer header. If set to "self", the feed’s own URL will be used as the referer.
Referer spoofing is a method of sending fake referer headers to disguise request sources. Within RSS Retriever, this can be used to imitate a website when fetching feeds.
By default, no referer is sent. If you encounter issues, you can set a specific URL or "self" to bypass referer restrictions.
⚠️ Note: Referer spoofing may breach terms of service or laws in some jurisdictions. Use cautiously and only when necessary.
HTTP headers carry extra details with requests and responses, such as browser type, language, or encoding. Each header is structured as a case-insensitive name followed by a colon and its value. Headers are separated by line breaks.
Max tokens
must stay within the model’s maximum context length. Most models support 4096 tokens, but newer ones like GPT-4, GPT-3.5 Turbo, and GPT-4 32K allow 8,192, 16,768, and 32,768 tokens respectively.
0.9
for more imaginative content, and 0
(argmax sampling) when you want predictable, precise results.
%gpt_image_prompt%
placeholder when using "Batch insert," as it generates a unique image prompt for each section of text before which an image is placed. This makes it a powerful tool to visually enrich AI-generated or imported content.
%gpt_image_prompt%
placeholder in this mode, since it produces unique prompts for each section of the text before which an image is added, making it a very powerful tool for visual enrichment.
%post_title%
, %post_excerpt%
, and more.
%gpt_image_prompt%
placeholder in batch insert mode, as it produces a unique prompt per text section, creating strong visual alignment with your content.
%post_title%
can also be used.
256x256
, 512x512
, or 1024x1024
for DALL∙E 2, and 1024x1024
, 1792x1024
, or 1024x1792
for DALL∙E 3.
%post_title%
and %post_excerpt%
.
%gpt_image_prompt%
in batch mode is recommended since it ensures unique prompts are generated for each insertion point, making content more visually engaging.
[10..150]
. Default: 50
. This setting determines how many diffusion steps are executed during image generation, directly affecting the quality and detail of the result.
Parameter | Default | Typical | Allowable | Affects Pricing? |
---|---|---|---|---|
steps | 30 | 30-50 | 10-150 | Yes |
1
to 200
from the search results. Enter 0
to select one at random.
%post_title%
, %categories%
, %gpt_keywords%
, %gpt_keywords_en%
, %gpt_keyphrase%
, and %gpt_keyphrase_en%
.
media:content
, media:thumbnail
, or <enclosure>
tags. The "Media attachments" drop-down menu lets you decide how to handle these attachments:
%pixabay[]%
or %random_image[]%
. For example: %pixabay[blue sky]%
will select a random image of a blue sky from Pixabay, while %random_image[%post_title%]%
will fetch an image from Google Images based on the current post title. This field is ignored if "Post thumbnails" is set to "Do not generate".
0
to disable size limits.
⚠️ Avoid using this option whenever possible. It relies on the getimagesize()
PHP function, which may cause issues or crashes on some server setups.
video
custom field will be embedded directly into the post. The custom field may contain either a direct link to a video file (.mp4, .webm, etc.) or an embed code (<iframe>
). Available options:
video
custom field is defined in the "Custom fields" section.
Choosing the right stage for filtering is crucial for shaping how the plugin processes posts. For example, if you are importing content from an RSS feed and only want posts containing certain keywords, then selecting "full article extraction" ensures filtering happens as soon as the text is retrieved. On the other hand, if you want to check the article content after it has been extracted in full, then "AI text processor" would be the appropriate stage.
You also have the option to run filtering before or after an article is translated. This means you can check for keywords either in the original language or in the translated version.
Keep in mind that translations rely on paid third-party APIs such as DeepL, Google Translate, and Yandex Translate. Because of this, it is usually more cost-efficient to apply filters in the original language before the translation step. The same reasoning applies when choosing whether to filter before or after using the "AI text processor" or "text spinner" options - since those services are also typically paid, filtering afterward is generally more economical.
When configuring this setting, always review how it fits into the complete RSS Retriever workflow.
0
to disable this filter. This setting ensures you prioritize new and timely content.
0
to disable this filter. This option is useful if you want to delay content imports or specifically target older, archived material.
0
to disable length filtering. This filter ensures that only posts with enough content and detail are imported, helping maintain higher-quality results.