Echo RSS Feed Post Generator v4.9.6.2

Using the plugin

Configuration reference

Two levels of settings control an import: Main Settings are site-wide defaults, and each rule's More Options → Settings modal overrides or extends them for that one feed.

Everything is stored in WordPress options. Nothing is written to custom database tables.

Shared with the paid edition

The free and paid builds use the same echo_Main_Settings and echo_rules_list option names. If both are installed on one site they read and write the same configuration, and activating one will not reset settings the other already created.

Admin screens

ScreenSlugWhat it is for
Main Settingsecho_admin_settingsMaster switch, schedule unit, and all global defaults
RSS to Post Rulesecho_items_panelCreate, edit, run and delete import rules
Post to RSS Rulesecho_rss_generatorPublish your own posts as named custom feeds
Crawling Helperecho_helperFetch a page and find the class, ID or XPath of its content
Activity & Loggingecho_logsSystem info, running rules, log viewer, rule backup/restore
Upgrade to Full Versionecho_upgradeEdition comparison and the WPBay link

All six require the manage_options capability. The middle four only appear while the master switch is on.

Main Settings

Top of the page

SettingNotes
Main SwitchTurns the whole plugin on or off. Off hides the other screens and clears the echoaction and echoactionclear cron events.
Rule Schedule UnitHours (default) or Minutes. Changes how every rule's schedule number is read, and switches the cron interval between hourly and once-a-minute. Existing values are not converted — review them after changing this.

SimplePie Library Options

  • Use Custom SimplePie Instead of the Built-In One — loads the bundled SimplePie 1.8.1 from res/simplepie/ instead of the copy inside WordPress core. Useful when core's parser chokes on a feed. Requires PHP 7.2+ (see Requirements).
  • Use Custom User Agent In SimplePie — some publishers block the default agent.
  • Force Detection of Feeds at The Links You Specify — treat the URL as a feed even if content-type sniffing disagrees.
  • Do Not Sanitize/Strip HTML Tags — keep the source markup intact.
  • Enable Caching — cache fetched feeds between runs.
  • Clear Curl Decoding Value, Feed Custom Tag Names, Feed Item Custom Tag Names, Custom Tag Separator, Custom Attribute Separator — map non-standard XML tags into template shortcodes (%%custom_yourfield%%).

Post Images Options

Featured-image sourcing and local copying: Try to Get Featured Image from Content, Copy Images From Content Locally, Do Not Copy Featured Image Locally, Verify Featured Images If Not Corrupt, Fix Greek Strings From Image Names, plus featured-image resize width/height/quality and iframe resize dimensions.

Resizing uses res/ImageResize/, which needs the GD extension.

Royalty Free Featured Image Importing Options

Optional API keys for MorgueFile, Pexels, Flickr, Pixabay and Unsplash, used to fetch a free stock image when the source article has none. Each provider has its own filters: image type, orientation, results order, category, min/max dimensions, safe search and language.

Related: Royalty Free Image Attribution Text, which fills the %%royalty_free_image_attribution%% shortcode, and the two fallback switches (Do Not Use Original Image If No Free Image Found, Skip Importing of Article If No Free Image Found).

Leave all of these blank if you do not use stock images.

Generated Custom Feed Options

Link Articles From Generated Feeds Directly to Their Source — applies to the Post-to-RSS feeds described in Post to RSS.

Plugin Options

The operational settings. The ones that matter most:

SettingNotes
Secret Word Used For Manual/Cron RunningSets the token for ?run_echo=…. Once saved, the page prints your full trigger URL and a ready-made crontab line. Treat it as a password.
Enable XML-RPC Ping to Run Importing for FeedsLets a weblogUpdates.ping XML-RPC call run the rule matching the pinged feed URL.
Minimum interval between XML-RPC pingsThrottle in seconds; default 3600. Set 0 to disable throttling entirely.
Timeout for Rule Running (seconds)Default 3600. Applied via set_time_limit() — shared hosts often override it.
Delay Between Rule RunningSeconds to sleep between rules in a single cron pass; useful on rate-limited hosts.
Enable Logging / Enable Detailed LoggingWrites wp-content/echo_info.log. Turn both on before debugging.
Automatically Clear Logs AfterSchedules the echoactionclear cron event.
Respect Robots HTML Header For Crawled PagesHonour noindex/nofollow directives when fetching full content.
Web Proxy Address List / AuthenticationRoute outbound fetches through a proxy.
Search Google Archives When Direct Page Fetching FailsFallback content source.
Duplicate detectionDo Not Check For Duplicate Posts, Check Duplicate Posts By Title Instead of Source URL, Make Sure No Duplicate Post Titles Are Published. By default the plugin matches on source URL.
Draft Posts First, And Publish Them AfterwardsTwo-phase publishing, so partially built posts never appear live.
Convert Encoding Of Imported Content To UTF-8Fixes mojibake from legacy-encoded feeds.
Enable Post Auto Deletion FeatureLets rules delete their own old posts.
Show Extended Item Information Metabox in PostAdds a metabox to imported posts showing the source item's details.
Email notificationsSend Rule Running Summary in Email, Send Each Post in Email, Email Address, Send Only A Daily Summary Email.

Post Content Options

How generated post bodies are assembled: excerpt generation and length, default author ID, category creation behaviour, link handling (Strip Links From…, Open All Links From Post In a New Tab, Add Rel="nofollow", Add Attributes to Internal/External Links, Append This String To All Links From Content, Replace All URLs from Content With This URL), Strip JavaScript From Crawled Content, media handling (Append Media From Feed Enclosure, Add Images From Feeds As Post Attachments, Append To Post Content A Gallery), page screenshot dimensions, the date format for %%item_pub_date%%, and the Conditional Word List behind %%conditional_words%%.

Posting Restrictions Options

Filters that reject a feed item before it becomes a post. If a run reports no change, check here first:

  • Minimum / Maximum Title Word Count
  • Minimum / Maximum Content Word Count
  • Global Required Words List (plus Require Only One Word From The list)
  • Global Banned Words List
  • Skip Posts With These Words In Their Featured Image Names
  • Skip Posts That Do Not Have Images
  • Skip Posts Older Than a Selected Date / Skip Posts Newer Than a Selected Date

Text Spinning Options

Spin Text Using Word Synonyms with a confidence level, driven by res/synonyms.dat; Do Not Spin The Title, Do Not Spin These Words, Protected Terms, and credentials for an external premium spinner service.

PhantomJS Settings

For JavaScript-rendered sources: PhantomJS Path On Server, Timeout for PhantomJs Execution, and switches to use PhantomJS or Puppeteer for screenshots (%%item_show_screenshot%%). Both need the binary installed on your own server. The hosted alternative is a full-version feature — see Free vs Paid.

Post Meta Options

A list of Skip Saving … switches that suppress individual post-meta fields the plugin would otherwise store on each generated post. Useful for keeping wp_postmeta small on high-volume imports.

Random Sentence Generator, Custom HTML, Affiliate Keyword Replacer

  • Two sentence pools behind %%random_sentence%% and %%random_sentence2%%, plus a variable list (adjective => clever;interesting;…) they expand from.
  • Two blocks of arbitrary HTML behind %%custom_html%% and %%custom_html2%% — the usual place for ad code.
  • Keyword-to-affiliate-link replacement rules.

Per-rule settings

Each row on RSS to Post Rules has these inline columns:

ColumnMeaning
IDRule index, used by the log and by the ruleid shortcode attribute
RSS Feed URLFeed URL, or a site URL for autodiscovery
ScheduleInterval in hours or minutes, per the global schedule unit
Max # PostsMaximum posts created per run. 0 = unlimited
Post StatusPending, Draft, Published, Private or Trash
Item TypeAny registered post type
Post AuthorA specific user, Random user, or Import feed author
More OptionsOpens the advanced settings modal
DelMarks the rule for deletion on the next save
ActiveUnticked rules are skipped by the scheduler
InfoRun status icon and the number of items generated so far
ActionsRun This Rule Now · Move All Posts To Trash · Duplicate This Rule · Permanently Delete All Posts
Saving

Changes to the table are only persisted when you click Save Settings. New rules can only be added on the last page of the table.

The advanced settings modal

Grouped into six sections:

  1. Posting Options — categories, tags, comment and pingback status, post format, sticky posts, custom fields, custom taxonomies, WPML language.
  2. Post Customization Options — the title and content templates. These accept the shortcodes listed below, plus any %%custom_yourfield%% you defined in Main Settings.
  3. Featured Image Options — where the featured image comes from, whether to skip the first image, Open Graph images, and royalty-free fallbacks.
  4. Posting Restrictions Options — the same filters as the global ones, scoped to this rule.
  5. Translation/Spinning Options — per-rule translation (DeepL, Google, Bing) and spinning.
  6. Miscellaneous Options — full-content extraction (strip by class, ID, XPath or regex), custom user agent, cookies, proxy use, PhantomJS use, canonical handling, and whether to update existing posts.

Template shortcodes

Available in a rule's title, content, tags, custom fields and custom taxonomy templates. Nested shortcodes are supported.

%%item_title%%              %%item_description%%        %%item_content%%
%%item_content_plain_text%% %%item_url%%                %%item_url_domain%%
%%item_pub_date%%           %%item_cat%%                %%item_tags%%
%%item_random_tag%%         %%item_image_URL%%          %%item_show_image%%
%%item_screenshot_url%%     %%item_show_screenshot%%    %%item_read_more_button%%
%%feed_title%%              %%feed_description%%        %%feed_content%%
%%feed_logo%%               %%feed_url%%
%%author%%                  %%author_link%%             %%author_email%%
%%custom_html%%             %%custom_html2%%
%%random_sentence%%         %%random_sentence2%%
%%conditional_words%%       %%royalty_free_image_attribution%%

Options written to the database

OptionContents
echo_Main_SettingsEvery global setting
echo_rules_listAll RSS-to-Post rules
echo_RSS_SettingsAll Post-to-RSS feed definitions
echo_posts_per_pageRules-table page size (default 10)
echo_running_listRules currently executing
echo_schedule_timeLog auto-clear interval currently scheduled
Internal stateecho_next_api_page, echo_attach_id, echo_email_content, echo_keyword_list, echo_last_sent_email, echo_rss_user_error, echo_minute_running_unlocked

Cron hooks

HookSchedulePurpose
echoactionhourly or minutely, per the schedule unitEvaluates every active rule and runs those whose interval has elapsed
echoactionclearPer Automatically Clear Logs AfterTruncates wp-content/echo_info.log

Both are cleared on deactivation. The plugin also registers extra cron intervals: minutely (60s), echo_cron (3600s), weekly and monthly.

Filters for developers

// Change where every upgrade link points.
add_filter( 'echo_upgrade_url', function ( $url, $placement ) {
    return 'https://example.com/my-landing-page/';
}, 10, 2 );

// Hide the in-dashboard upgrade prompts.
add_filter( 'echo_show_upgrade_prompt', '__return_false' );