Title: AI Soft &#8211; AI Auto Post Publisher Lite
Author: Tauhidul Hossain Tanmoy
Published: <strong>September 18, 2026</strong>
Last modified: September 18, 2026

---

Search plugins

![](https://ps.w.org/ai-soft-auto-post-publisher-lite/assets/banner-772x250.png?
rev=3702309)

![](https://ps.w.org/ai-soft-auto-post-publisher-lite/assets/icon-256x256.png?rev
=3702309)

# AI Soft – AI Auto Post Publisher Lite

 By [Tauhidul Hossain Tanmoy](https://profiles.wordpress.org/tauhidulhossain/)

[Download](https://downloads.wordpress.org/plugin/ai-soft-auto-post-publisher-lite.1.27.0.zip)

 * [Details](https://wordpress.org/plugins/ai-soft-auto-post-publisher-lite/#description)
 * [Reviews](https://wordpress.org/plugins/ai-soft-auto-post-publisher-lite/#reviews)
 *  [Installation](https://wordpress.org/plugins/ai-soft-auto-post-publisher-lite/#installation)
 * [Development](https://wordpress.org/plugins/ai-soft-auto-post-publisher-lite/#developers)

 [Support](https://wordpress.org/support/plugin/ai-soft-auto-post-publisher-lite/)

## Description

AI Soft – AI Auto Post Publisher Lite helps you turn a source URL, pasted text, 
or a topic into a structured WordPress draft, using your own API key from Gemini,
OpenAI, OpenRouter, Groq, or Claude.

It is built to work with any WordPress site and any public post type, not just one
kind of content. A job posting, a news update, a blog article, a business page, 
a product review, or a how-to guide are all detected and structured appropriately.

**Main features**

 * Bring your own AI provider key: Gemini, OpenAI, OpenRouter, Groq, or Claude. 
   Gemini, OpenRouter, and Groq all offer a free tier to get started.
 * Generate a draft from a source URL, pasted text, or by discovering trending topics.
 * Works with any public post type on your site, not only the built-in Post type.
 * One-click category presets for common website types (news/magazine, job board,
   blog, business, education, and more), fully editable, with an option to override
   which taxonomy a post type uses.
 * Automatic trending-topic discovery per category, with optional region and trusted-
   source focus, plus a daily auto-publish schedule.
 * Local featured images generated automatically, with the option to use a source
   image instead.
 * SEO fields (title, meta description, focus keyword) and automatic category/tag
   assignment.
 * A Default Author setting so scheduled and discovered posts are always assigned
   a real author.
 * A short interactive guided tour on every settings screen.
 * A Content Optimizer to analyze and improve the SEO/content quality of existing
   posts and pages.

**Bring your own key**

This plugin does not include any AI service of its own and does not phone home anywhere
for content generation. You provide your own API key for whichever provider you 
choose, and requests go directly from your WordPress site to that provider. See “
External services” below for exactly what is sent and where.

**Everything is included**

Every feature — draft generation, topic discovery, the daily auto publisher, images,
SEO fields, category presets and the Content Optimizer — works with any supported
provider. Nothing is locked, nothing is time-limited, and there is no upgrade to
buy.

Gemini, OpenRouter, and Groq have free tiers, so you can run the plugin at no cost.
OpenAI and Claude are billed by usage by those companies; the plugin treats all 
five the same and uses whichever keys you have saved.

### External services

This plugin connects to third-party services in order to generate content. It does
not send any data to these services unless you actively use the corresponding feature.

**AI provider (required to generate content)**

You choose one AI provider in Settings and enter your own API key for it. When you
generate a draft, the plugin sends your source text/URL content and your site’s 
brief description (from the Universal Website Profile) to that provider’s API, and
receives back the generated draft. No data is sent unless you click Generate, run
Topic Discovery, run the daily Auto Publisher, or use the Content Optimizer.

 * Google Gemini — https://ai.google.dev/gemini-api/terms — Privacy policy: https://
   policies.google.com/privacy
 * OpenAI — https://openai.com/api/policies/service-terms/ — Privacy policy: https://
   openai.com/policies/privacy-policy
 * OpenRouter — https://openrouter.ai/terms — Privacy policy: https://openrouter.
   ai/privacy
 * Groq — https://groq.com/terms-of-use — Privacy policy: https://groq.com/privacy-
   policy
 * Anthropic Claude — https://www.anthropic.com/legal/commercial-terms — Privacy
   policy: https://www.anthropic.com/legal/privacy

**Live model list sync (automatic when a key is saved)**

To keep each provider’s model dropdown current, the plugin periodically calls that
provider’s own model-listing endpoint (no content, just your API key) once you have
saved a key for it: Google’s `v1beta/models`, OpenAI’s `v1/models`, Groq’s `v1/models`,
and Anthropic’s `v1/models`. OpenRouter’s `v1/models` is also queried and does not
require a key. This happens the first time you view Settings after saving a key,
once daily in the background, and when you click “Refresh Models Now.” See the provider
links above for terms/privacy.

**Search phrase suggestions (optional, on by default)**

While “Google Keyword Expansion” is enabled in Settings, the plugin sends a category’s
seed topic to Google’s public autocomplete endpoint before a Topic Discovery or 
Auto Publisher run, so discovery can search the phrasings people actually type. 
Only the seed topic text and your configured content language and target country
are sent; no API key, no post content, and no site or visitor data. Results are 
cached for a day. Turning the setting off stops these requests entirely.

 * Google autocomplete (https://suggestqueries.google.com) — Terms: https://policies.
   google.com/terms — Privacy policy: https://policies.google.com/privacy

**Source page discovery via public search feeds (on by default)**

Unless “Discovery Source” is set to “AI providers only”, the plugin finds candidate
source pages by reading Bing’s public search RSS feeds — `https://www.bing.com/search?...&
format=rss` and `https://www.bing.com/news/search?...&format=rss` — before, or instead
of, asking an AI provider to search the web. This needs no API key and no account.
Only the search phrase is sent, built from the category’s topic plus your configured
content language and target country; no API key, no post content, and no site or
visitor data. Results are cached for three hours. Setting “Discovery Source” to “
AI providers only” stops these requests entirely.

 * Bing search (https://www.bing.com) — Terms: https://www.microsoft.com/en-us/servicesagreement/—
   Privacy policy: https://privacy.microsoft.com/en-us/privacystatement

**Source URL fetching (optional)**

If you paste a source URL when generating a draft, the plugin fetches that page’s
public content directly from your WordPress server so it can be used as source material.
This only happens for URLs you provide.

**Image lookups (optional)**

If a source image or reference image URL is provided, or an image search is used
to find a relevant supporting image, the plugin may fetch images from the site hosting
them, or from Wikimedia Commons (https://commons.wikimedia.org, no account/key required),
to download into your Media Library. This only happens when the corresponding image
feature is enabled and in use.

 * Wikimedia Commons — Terms of use: https://foundation.wikimedia.org/wiki/Policy:
   Terms_of_Use — Privacy policy: https://foundation.wikimedia.org/wiki/Policy:Privacy_policy

If you enter an Unsplash or Pexels API key in Settings, the plugin searches that
service for a relevant real photograph before falling back to Wikimedia Commons.
This only happens when a key is configured.

 * Unsplash — API guidelines: https://help.unsplash.com/en/articles/2511245-unsplash-
   api-guidelines — Licence terms: https://help.unsplash.com/en/collections/1463188-
   unsplash-license — Privacy policy (Unsplash is a Getty Images company): https://
   www.gettyimages.com/company/privacy-policy
 * Pexels — https://www.pexels.com/api/documentation/#api-terms-of-use — Privacy
   policy: https://www.pexels.com/privacy-policy/

If you enter a Google API key and Programmable Search Engine ID in Settings, the
plugin sends the post’s image search terms to Google’s Custom Search JSON API to
find a relevant photograph, and downloads the selected image into your Media Library.
This only happens when both values are configured.

 * Google Programmable Search — https://developers.google.com/custom-search/v1/site_restricted_api—
   Terms: https://policies.google.com/terms — Privacy policy: https://policies.google.
   com/privacy

**AI-generated images (optional)**

If you enable “AI image fallback” in Settings and no real photo can be found, the
plugin sends a short text prompt describing the post’s topic to OpenAI’s image generation
API (using the OpenAI key entered above) and downloads the resulting image into 
your Media Library. This only happens when this setting is enabled and no real photo
was found. See the OpenAI terms/privacy policy links above.

## Screenshots

[⌊The Generate Content screen: create a draft from a source URL, pasted text, or
a topic to discover.⌉⌊The Generate Content screen: create a draft from a source 
URL, pasted text, or a topic to discover.⌉[

The Generate Content screen: create a draft from a source URL, pasted text, or a
topic to discover.

[⌊The Categories screen: one-click category presets, region/source focus, and trending-
topic discovery.⌉⌊The Categories screen: one-click category presets, region/source
focus, and trending-topic discovery.⌉[

The Categories screen: one-click category presets, region/source focus, and trending-
topic discovery.

[⌊The Settings screen: choose your AI provider and describe your website.⌉⌊The Settings
screen: choose your AI provider and describe your website.⌉[

The Settings screen: choose your AI provider and describe your website.

## Installation

 1. Upload the plugin zip from **Plugins > Add New > Upload Plugin**, or install it
    directly from the WordPress.org plugin directory.
 2. Activate AI Soft – AI Auto Post Publisher Lite.
 3. Go to **AI Soft – AI Auto Post Publisher Lite > Settings** and add your API key
    for Gemini, OpenAI, OpenRouter, Groq, or Claude.
 4. Go to **AI Soft – AI Auto Post Publisher Lite > Categories** to set up your site’s
    categories (optional but recommended).
 5. Go to **AI Soft – AI Auto Post Publisher Lite > Generate Content** to create your
    first draft.

A guided tour runs automatically the first time you visit each screen, and can be
replayed any time from the “Take the Tour” button.

## FAQ

### Do I need to pay for anything?

The plugin itself is free. Most AI providers (Gemini, OpenRouter, Groq) offer a 
free usage tier that is enough to get started; OpenAI and Claude are billed by the
provider based on usage.

### Where is my API key stored?

Only in your own WordPress site’s database. It is never sent anywhere other than
the AI provider you selected.

### Does this guarantee search ranking or ad-network approval?

No. The plugin helps produce a structured, useful draft, but every post should be
reviewed before publishing, the same as any other content workflow.

### Can I use this for something other than a blog?

Yes. It works with any public post type on your site, and the Categories page includes
starting presets for several common website types (news/magazine, job board, blog,
business, and more), which you can edit freely.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“AI Soft – AI Auto Post Publisher Lite” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Tauhidul Hossain Tanmoy ](https://profiles.wordpress.org/tauhidulhossain/)

[Translate “AI Soft – AI Auto Post Publisher Lite” into your language.](https://translate.wordpress.org/projects/wp-plugins/ai-soft-auto-post-publisher-lite)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/ai-soft-auto-post-publisher-lite/),
check out the [SVN repository](https://plugins.svn.wordpress.org/ai-soft-auto-post-publisher-lite/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/ai-soft-auto-post-publisher-lite/)
by [RSS](https://plugins.trac.wordpress.org/log/ai-soft-auto-post-publisher-lite/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.27.0 (Every provider works, with no licence)

 * Removed the licence requirement from the OpenAI and Claude provider fields. Both
   were present in the plugin but disabled unless a licence was active, which restricted
   functionality that shipped with the plugin. All five providers — Gemini, OpenAI,
   OpenRouter, Groq and Claude — now work with your own API key, with no upgrade
   to buy and nothing to activate.
 * Removed the Premium Providers settings section, the licence key form, and every
   call to the AI Soft licence server. The plugin no longer contacts that server
   at all, and the corresponding entry has been removed from the External Services
   section.
 * The provider dropdown no longer disables OpenAI and Claude or labels them “(premium)”,
   saved keys for those providers are no longer discarded when the settings form
   is submitted, and both now join the automatic fallback chain like any other configured
   provider.
 * Sanitised the request method and admin page checks reported by Plugin Check.

#### 1.26.0 (Publishing that does not stop when a provider quota does)

 * Topic discovery no longer needs a paid web search. Every AI provider charges 
   for searching the web – Gemini’s grounding needs a live quota, Anthropic bills
   per search, and OpenRouter bills its web plugin per query even when the model
   itself is free – so the moment a key ran out of quota, discovery stopped and 
   the Auto Publisher created nothing. The plugin now reads public search feeds 
   instead, which need no key and no account. A new “Discovery Source” setting chooses
   between free feeds first (the default), free feeds only, and the previous provider-
   only behaviour.
 * Added a Free Publishing Cycle: an optional second daily run that uses only free
   search feeds and free-tier models, with its own schedule, its own queue and its
   own status panel. It is switched off until you turn it on, and it does not change
   how your main Auto Publisher chooses providers.
 * Added “Use free providers only”, which keeps the plugin on tiers that refuse 
   rather than bill. With it on, OpenAI and Claude are skipped even if a key is 
   saved, and OpenRouter is restricted to models OpenRouter itself prices at zero.
 * Fixed a queued run parking forever on hosts that block the loopback request WP-
   Cron depends on. The run was written and then nothing advanced it – the settings
   screen showed “Topic 0 of N, no next slice is scheduled” indefinitely. The screen
   now steps the queue along while it is open, and any admin page load re-arms a
   queue that has stopped moving.
 * Minimum Source Quality now actually filters sources. It was only ever used to
   decide a finished post’s status, so an admin told on screen to lower it in order
   to accept more sources could lower it and see no change at all. It is now the
   real threshold, and its minimum was lowered from 50 to 40 so the useful settings
   are reachable.
 * Added a “Source Strictness” setting. On the previous behaviour, a site configured
   as a job board rejected any source that was not a government or education domain,
   an employer career page, or one of a few named boards – which rejected almost
   every genuine result. The new default scores an unknown page instead of refusing
   it, and the old behaviour is still available as “strict”.
 * A run is no longer thrown away by de-duplication working correctly. A batch cut
   off after creating a post left its topic unfinished; the retry was rightly refused
   as a duplicate of the post just created; three of those in a row counted as three
   failures and discarded every remaining topic. Duplicate results are now reported
   as duplicates, and the three-strike limit counts repeats of the same error rather
   than any three failures in a row.
 * A topic is no longer started with too little time left in a batch to try a single
   provider, which previously looked exactly like a total provider outage and could
   abandon a long run after two topics.
 * Groq’s request timeout is now limited to the time the batch actually has. It 
   was sending a fixed 90 seconds inside a 45-second batch, so Groq alone could 
   use twice the budget and leave nothing for the providers after it.
 * A scheduled run that cannot start because the previous one is still working now
   records that, instead of doing nothing and leaving the status panel showing an
   older run.
 * Documented the Bing search feeds in the External services section.

#### 1.25.0 (Long runs no longer time out; the Auto Publisher reports itself)

This entry covers 1.22.0 through 1.25.0, which were developed together and released
as one update.

 * Fixed “Request Timeout – increase Connection Timeout” on Topic Discovery and 
   the Auto Publisher. Every topic used to be worked through inside the admin request
   that started the run, so on a site with a hundred-plus topics that request ran
   for many minutes – and what killed it was not PHP but the web server or proxy
   in front of it, which is why raising max_execution_time never helped. The button
   now validates, queues the work and returns immediately, and the topics are processed
   in short background batches.
 * Added a Background Batch Length setting (15-120 seconds, default 45). The default
   sits under the 60-second connection timeout common on shared and IIS hosting;
   lower it if a run still times out, raise it only if your host allows longer requests.
 * A run in progress now shows live progress on the Settings screen – topic N of
   M, percent complete, and posts created so far – instead of giving no sign of 
   whether anything is happening.
 * Added “Process next batch now” for hosts that block the loopback request WP-Cron
   depends on, so a queue can be stepped forward by hand, and “Cancel run” to clear
   a queue without touching the posts it already created.
 * Added an Auto Publisher Schedule panel showing the next run time in your site’s
   timezone, how many posts each run creates and what status they are saved as, 
   with a warning when a run is more than two hours overdue and when DISABLE_WP_CRON
   is set – previously a schedule that had quietly stopped gave you nothing on screen
   to explain it.
 * Added a “Run Auto Publisher Now” button that calls the real scheduled handler
   and records the same status, so a manual run reports exactly as a nightly one
   does.
 * The daily schedule now repairs itself. It was only ever written when the settings
   form was saved, so an event lost to a host cron flush, a backup restore or a 
   domain migration stayed lost until someone re-saved Settings.
 * Added Google Keyword Expansion (on by default): each seed topic is widened into
   the longer phrasings Google autocomplete reports, which are the ones with real
   search traffic behind them. Suggestions that have lost the specific subject are
   discarded. No API key and no quota, results cached for a day, and an unreachable
   endpoint simply means seed topics are used exactly as before.
 * Provider order is now vision-aware. When a source page has images, the providers
   that can actually read them are tried first; Groq has no vision path and its 
   default model is text-only, so it drops to the back of the chain rather than 
   producing a thin article about a document it could not see. Non-vision providers
   are reordered, never removed.
 * Fixed posts having no images even though the source page clearly had one. An 
   image URL had to end in a file extension to be accepted, which silently discarded
   most images on modern sites, where CDN and resizer paths carry none at all (/
   media/9f2c1a, /cdn-cgi/image/width=1200/photo). A URL the page itself declares
   as an image is now accepted and the downloaded bytes are content-type checked
   instead. GIF, AVIF, BMP and TIFF are recognised alongside JPG/PNG/WebP; data 
   URIs, SVG, icons and page assets are still rejected.
 * A generation run is now bounded. It previously ran every queued job unconditionally
   with no time limit and no failure counting, so one broken API key was reported
   a hundred times over. A run now stops after three consecutive failures, and a
   topic that fails is consumed by the batch that attempted it rather than being
   retried forever.
 * Fixed three faults in the new queue found on review: a nightly scheduled run 
   could overwrite – and silently discard – a long manual run still in progress;
   a queue stranded by a blocked loopback would have blocked every future run permanently,
   so a queue idle for 15 minutes is now treated as abandoned, reported as stalled
   and replaceable; and two overlapping batches could create every post twice, which
   a lock now prevents.
 * Documented the Google autocomplete endpoint in the External services section.

#### 1.21.0 (No picture is ever published twice, anywhere on the site)

 * A configured Pexels or Unsplash key was still repeating the same photos across
   unrelated posts. Every search asked only for page one of its results, and page
   one of a given query is identical for every article – so once the search term
   was the generic fallback, which is the same on every post, every article drew
   from the same handful of pictures. Searches now walk further into the results
   until they find photographs this site has never published, and stop as soon as
   they have enough, so the extra pages cost nothing when page one is sufficient.
 * De-duplication is now permanent and site-wide rather than limited to a rolling
   window. Every picture the plugin attaches is stamped with its fingerprint in 
   the media library, so “already published” stays true for the life of the site.
   The fast in-memory index still handles the common case; once a site passes 5,000
   images, lookups that miss it fall through to the library rather than silently
   forgetting.
 * Pictures published before de-duplication existed are now counted too. A one-time
   background pass, run in batches across admin page loads, registers the images
   already in your media library – so a photo used ten times before will not be 
   used an eleventh.
 * Search results are screened for duplicates before they are downloaded rather 
   than after, so a repeat no longer costs the article one of its images. Posts 
   now reach their configured image count instead of falling short whenever a duplicate
   turned up.

#### 1.20.0 (Every post gets its own pictures; category details fill themselves in)

 * Fixed unrelated articles being illustrated with the identical set of pictures.
   The Wikimedia Commons relevance check switched itself off whenever the search
   term was made only of generic words – which is exactly what the guaranteed fallback
   term (“business professionals” plus your target country) is. Commons answered
   that generic query with the same top-ranked results every time, so a flooding
   report and a shareholder-governance piece both ran the same 19th-century factory
   engraving, studio portrait and trade advertisement. The relevance check now applies
   to the fallback term too, and archival material – advertisements, catalogues,
   lithographs, engraved portraits, plates – is rejected outright.
 * Added a site-wide record of pictures already published, so the same file can 
   no longer be attached to two different posts. Duplicate detection previously 
   worked only within a single article. Pictures are matched both by source URL (
   checked before the download, so nothing is fetched twice) and by actual file 
   content, which catches the same image served from two addresses. A post can still
   re-use its own pictures, so Regenerate Images keeps working.
 * The post editor’s Image Report now says when a post found no pictures because
   no Unsplash, Pexels or Google image key is configured and only Wikimedia Commons
   was available to search.
 * Category discovery details now fill themselves in. Region, seed topics and trusted
   domains used to stay empty unless typed in by hand, so any category created by
   the preset list, by the WordPress Categories screen, or invented by the generator
   during discovery went into every trending run with nothing to focus it. Those
   fields are now populated automatically the moment a category is created – seed
   topics and trusted domains learned from what the site has already published in
   that category, falling back to a built-in subject library and your target country.
   Everything stays editable, and the automatic fill only ever writes into empty
   fields.
 * Added “Fill In Missing Details” and “Recompute All Details” buttons to the Categories
   screen for categories that already existed.

#### 1.19.0 (No scraped adverts, no unrelated stock images, clean captions)

 * Publisher adverts are no longer pulled in from source pages. Filtering them by
   filename never worked because their URLs are opaque CDN hashes, so on news, magazine,
   blog and business sites the plugin now takes only the source page’s main image(
   its og:image) and ignores the rest of the page furniture – app-download panels,
   newsletter sign-up boxes and promo rails. Job boards still read every image on
   the page, where the notice itself is often not the main image.
 * Wikimedia Commons results must now actually match the search. Commons matches
   loosely, and an article about streaming-content regulation was illustrated with
   a prehistoric trade-route diagram because both mentioned “trade”. A result is
   now used only when its own file title shares a real word with the search term,
   and diagrams, charts, posters, scans and engravings are rejected outright. Where
   nothing matches, the article runs with fewer images rather than an unrelated 
   one.
 * Photo captions no longer print raw archive metadata. Credits containing a bare
   URL, a licence code, a date, multiple sentences or truncated scan notes – for
   example “Photo: Archive.org … Teacher’s Guide. 1998. Blurred text improved b…”–
   are discarded, and the picture runs with no caption instead. Only a short, clean,
   human credit line is published.

#### 1.18.0 (Image Report panel on every generated post)

 * Added an “AI Publisher: Image Report” panel to the post editor sidebar, showing
   exactly what happened to that post’s images: which were used, and which were 
   rejected and why (download refused by the source site, below the minimum size,
   duplicate of one already used, or no search result). The plugin has always recorded
   this per post, but nothing displayed it, so a post with no featured image gave
   you nothing to act on.
 * Every generated post now records a closing result line – whether a featured image
   was set and how many body images were added – so the panel confirms success as
   well as failure instead of being blank when things worked.

#### 1.17.0 (Articles stop following the same template)

 * Every generated article was ending the same way – a “What Happens Next” section,
   then a Frequently Asked Questions block of about nine pairs, then an editorial
   note – which is what made a run of posts read as machine-produced. All three 
   came from the generator’s own instructions and have been changed.
 * The Q&A section is now optional. It is added only where readers would genuinely
   have unanswered questions (a process, eligibility, pricing, dates, technical 
   detail) and is skipped for straightforward news such as an appointment or a results
   announcement. When included it carries only the 3 to 6 questions that need answering
   instead of being padded to a fixed count.
 * “What Happens Next”, “About [Company]” boilerplate, and closing editorial notes
   are now restricted to articles where they are actually warranted, rather than
   appended by habit.
 * The news/magazine structure rule no longer names its coverage points in a way
   the AI copied straight into headings. Sections must be named after the specific
   thing they discuss, so two articles can be told apart by their headings alone.

#### 1.16.1 (Captions and alt text that read as human, and no scraped adverts)

 * Removed the generated caption boilerplate. Captions used to repeat the same phrase
   under every picture in an article and append “(additional photo)” to each one
   after the first – unmistakably machine-written. A picture now carries a caption
   only when there is a real credit to give (for example “Photo: Unsplash”), and
   otherwise carries none, which is how an ordinary article is laid out.
 * Alt text no longer repeats the article title on every image or ends in “(image
   2)”. Each picture now uses its own description from the image source when one
   exists, so the alt text says what is actually in the photo. That is better for
   accessibility and for image search.
 * Publisher house adverts scraped from a source page – “download our app” banners,
   sponsor and newsletter promos, ad-slot images – are no longer downloaded and 
   published as if they illustrated the article.

#### 1.16.0 (Image downloads that news sites accept, and real on-page SEO)

 * Fixed the most common reason an auto-created post had no featured image: image
   and source-page requests identified themselves as the plugin and sent no Referer,
   which news sites behind Cloudflare and image CDNs answer with 403. Requests now
   present a normal browser User-Agent and the article page as the Referer, exactly
   as a reader’s browser would, so a source article’s own photo can actually be 
   downloaded. When the source page fetch itself was being blocked, the article’s
   images were never even discovered – that is fixed by the same change. The Wikimedia
   Commons request deliberately keeps its identifying agent, as their User-Agent
   policy requires.
 * On-page SEO: the generator was told to produce a focus keyword but never told
   to place it where Rank Math, Yoast, AIOSEO and SEOPress actually score it. It
   must now appear in the post title, SEO title, meta description, slug, opening
   sentences, at least one section heading, and the image alt text, at a natural
   density rather than repeated mechanically. Articles are also asked for a heading
   roughly every 200-300 words, paragraphs of at most four sentences, and lists 
   where the content genuinely is a list.
 * Generated articles now carry internal links. The AI is given a list of the site’s
   recent published posts with their permalinks and asked to link 2-3 genuinely 
   relevant ones inline, with descriptive anchor text – previously it had no way
   of knowing what else existed on the site, so every article published with none.

#### 1.15.0 (More body images, and a featured image on every post)

 * Body images raised from up to 3 to up to 5 per post, spread through the article,
   so a generated post reads like a real magazine piece rather than a wall of text
   with one picture.
 * A post should now always end up with a featured image. If no candidate met the
   full featured-image size bar, the plugin makes one final pass accepting a genuine
   photo that met the smaller body-image bar, instead of publishing with no featured
   image at all. Previously a source that only offered mid-size pictures produced
   body images but an empty featured slot.

#### 1.14.2 (Optimizer “not valid JSON” fix)

 * Fixed “Optimizer AI response was not valid JSON” on normal-length posts. The 
   optimizer asks the AI to return the whole rewritten article as JSON but capped
   its answer at 4,500 output tokens – less than a 1,200-2,000 word article needs–
   so the JSON was cut off mid-string and no amount of repairing could parse it.
   The limit is now 8,192 tokens for every provider.
 * When a response is cut off at the limit, the plugin now says so instead of reporting
   invalid JSON. The old message suggested trying a stronger model, which never 
   helped because the model was not the problem; the new message points at the actual
   fixes (SEO/meta-only mode for long posts, a shorter post, or a model with a larger
   output limit).

#### 1.14.1 (Content Optimizer no longer removes body images)

 * Fixed the Content Optimizer deleting every picture from inside an article. The
   cleaner used to strip all tags unconditionally – correct while generating a new
   draft, where images are attached afterwards, but destructive when optimizing 
   an existing post whose body already contains this plugin’s images. Pictures hosted
   on your own site are now kept; only hotlinked external images are removed, and
   a figure whose image was removed no longer leaves an orphaned caption behind.
 * Any image figure that the rewrite dropped is now restored into the optimized 
   body, spaced through the article. The optimizer only ever shows the AI a text
   placeholder in place of each image, so a rewrite frequently came back without
   them. Figures already present are matched by image URL and left alone, so nothing
   is duplicated.
 * The “[local image]” placeholder can no longer be published as literal text when
   the AI echoes it back instead of the image.

#### 1.14.0 (Optimizer queue retries transient failures)

 * A Content Optimizer item is no longer abandoned the first time an AI provider
   has a bad moment. Previously each post was removed from the queue before processing
   and, on any error, only a failure counter was incremented – so a single “experiencing
   high demand”, empty response, or request timeout permanently skipped that post.
 * A failed post is now returned to the back of the queue and retried up to 3 times,
   which also spaces the retry out behind the remaining items. Errors no retry can
   fix – such as invalid credentials – still fail immediately rather than being 
   attempted three times.
 * The queue notice now reports how many retries have happened, so a retry is not
   mistaken for a stalled queue.

#### 1.13.2 (Claude compatibility fix)

 * Fixed every Claude request failing with “`temperature` is deprecated for this
   model.” Anthropic removed the sampling parameters on Claude 4.7 and newer, so
   the plugin no longer sends `temperature` to Claude at all. Older Claude models
   only ever allowed it, so nothing is lost and newer models keep working as you
   select them. This affected Generate Content, the Claude key test, and the Content
   Optimizer.
 * The Content Optimizer’s Claude request now passes the model through the same 
   sanitizer as every other Claude call, so a retired saved model self-heals to 
   the current default instead of failing.

#### 1.13.1

 * Added the AI Soft terms and conditions link to the External Services section.

#### 1.13.0 (Unique prefix and working reference URLs)

 * Replaced the short “aipl” prefix with the distinctive “aisoftapp” prefix across
   all options, post meta, transients, cron hooks, admin page slugs, script handles,
   CSS class names, and the localised JavaScript object, so the plugin cannot collide
   with other plugins or themes.
 * Replaced the Unsplash terms and privacy links, which were not publicly reachable,
   with the Unsplash API guidelines and licence pages plus the governing Getty Images
   privacy policy.
 * Corrected the Groq terms and privacy URLs, which redirected, and removed a licence-
   server terms URL that did not resolve.
 * Note for anyone who installed an earlier build: settings are stored under the
   new prefix, so re-enter your API keys and options once after updating.

#### 1.12.0 (Premium providers)

 * Added an optional premium licence that unlocks the OpenAI and Claude provider
   fields. Without a licence those two fields are shown but disabled, with a short
   prompt explaining how to unlock them.
 * The free version is unchanged and complete: draft generation, topic discovery,
   the daily auto publisher, images, SEO fields, category presets and the Content
   Optimizer all work with a Gemini, OpenRouter, or Groq key. Nothing is time-limited
   and no feature stops working.
 * Deactivating or letting a licence lapse returns the site to the free providers
   instead of breaking publishing.
 * Documented the AI Soft licence server and the Google Programmable Search image
   lookup in the External Services section.

#### 1.11.0 (Plugin renamed; image reliability and alt text)

 * Renamed to “AI Soft – AI Auto Post Publisher Lite” (slug ai-soft-auto-post-publisher-
   lite) to give the plugin a distinctive name, per WordPress.org review feedback.
   Plugin headers, text domain, readme, main file, and folder name were all updated.
 * Fixed featured images going missing on automatically created posts. Only the 
   first photo candidate was ever attempted, so one dead link, hotlinking block,
   or a picture below the minimum size left the post with no featured image. Up 
   to six candidates are now tried in turn.
 * Fixed posts ending up with a single body image. The plugin requested exactly 
   as many candidates as it needed, so every rejected picture reduced the count 
   one-for-one. It now requests a surplus and keeps going until the configured number
   of images is actually attached.
 * Image alt text is now always present and describes the article’s subject. Alt
   text could previously be left empty (shown as an unset “optional” field in the
   Media Library) and every image on a post shared identical text, which hurt both
   accessibility and SEO. Each image now gets distinct, topic-related alt text.
 * Media Library titles no longer append “source image” to every filename.

#### 1.10.1 (Image size, placement, and no repeats)

 * Fixed icon-sized featured images. The featured-image path had no size check at
   all, so a source page’s small header logo could become the post’s featured image
   and render as a thumbnail. Featured images now require at least 600×315, and 
   body images at least 400×250.
 * Video-player placeholder graphics, logos, avatars, sprites, badges and spacer
   images are no longer downloaded as article photos, and extreme banner or skyscraper
   shapes are rejected.
 * Photos are now spread through the article at even intervals instead of being 
   stacked together right after the opening paragraph.
 * The featured image is explicitly excluded from the post body, in addition to 
   the existing duplicate-image check, so the same picture cannot appear twice.

#### 1.10.0 (Images, captions, and admin wording)

 * Fixed the same photo appearing several times in one post. The featured image,
   the source image and the “related” image all resolved to a page’s single hero/
   og:image, and each was attached separately. Images are now compared by content,
   so a picture is only ever used once per post.
 * The featured image is no longer repeated at the top of the article body on news,
   magazine, blog and business sites – the theme already displays it. Job boards
   still show the original notice inline, where readers need it.
 * Removed the grey “Visual Summary” block. It re-processed a picture the post was
   already showing and published a washed-out duplicate of it.
 * Photo captions now describe the article’s subject instead of reading “Original
   source notice or reference image” or “Additional source or reference image”. 
   The “Source / Reference Images” and “Related Image” headings are gone; pictures
   sit inline as they would in any article.
 * Added optional Google image search (Programmable Search). When a Google API key
   and Search Engine ID are saved, images are matched to the specific company, product
   or person in the article, which stock libraries cannot do. Unsplash, Pexels and
   Wikimedia Commons remain available as fallbacks.
 * Article structure now has to follow the story: section headings must name what
   the section actually covers, and generic scaffolding headings (“Background”, “
   Overview”, “Key Details”, “Conclusion”) are rejected in the prompt. Articles 
   are also asked to match the conventions of the site’s own category and niche.
 * Rewrote the settings screen wording. Field descriptions are now short, professional
   instructions rather than long implementation notes.

#### 1.9.0 (Makes the plugin actually work on non-job sites)

This release fixes a set of leftovers from when the plugin only published job circulars.
On a news, magazine, blog, or business site they combined to produce “0 posts created”
with no clear reason.

 * Topic Discovery no longer asks every AI provider to find “recent public job circulars,
   LinkedIn job pages and bdjobs.com listings” regardless of your Website Type. 
   Asking for job listings on a general news topic made the model reply in prose
   instead of JSON, which surfaced as “Discovery response did not include a valid
   items list.” Discovery now searches for what your Website Type actually publishes,
   and all providers share one prompt builder.
 * Fixed Claude discovery returning no results: Anthropic pauses long web-search
   turns with a “pause_turn” status, and the plugin treated that partial response
   as the final answer, so Claude’s actual findings never arrived. It now continues
   the search to completion.
 * Discovery JSON parsing accepts markdown-fenced and prose-wrapped responses, and
   reports “found no recent sources” separately from a malformed reply.
 * Images: source-page photos are no longer rejected. Image scoring only recognised
   job-circular vocabulary, so ordinary article photos (including a page’s own og:
   image) scored zero and were discarded, leaving posts with no featured image. 
   Stock and Commons image searches also no longer append “Bangladesh” to every 
   query – they use the article’s own subject and your configured Target Country.
 * Article body: internal links are kept. Every link was previously stripped from
   any post without an Apply URL, which is every news/blog/business post. Outbound
   links are still unwrapped.
 * Fixed a text-cleaning rule that could delete the article’s opening paragraphs.
   One “Source:” or “Reference:” anywhere in the body removed everything from the
   first paragraph up to it. Headings like “Sources of growth” are no longer deleted
   either.
 * Publishing is no longer blocked by an unreachable quality bar: outside job boards
   every accepted source scores a flat 85, so a Minimum Source Quality above 85 
   forced every post to Pending Review. The bar is now capped to what a real source
   can score.
 * SEO fields no longer contain “Not applicable”: job placeholder values were treated
   as real data, producing focus keywords like “Not applicable Not applicable circular”
   in Rank Math/Yoast. Job meta is stored empty on non-job posts, so the “Job Posting
   Details” box no longer appears on ordinary articles.
 * Duplicate detection is stricter and only compares against posts this plugin generated–
   formulaic headlines were being rejected as duplicates of each other.
 * Auto Publisher rotates through your categories instead of restarting at …

## Meta

 *  Version **1.27.0**
 *  Last updated **8 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.1**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [AI content generator](https://wordpress.org/plugins/tags/ai-content-generator/)
   [content automation](https://wordpress.org/plugins/tags/content-automation/)[openai](https://wordpress.org/plugins/tags/openai/)
   [post generator](https://wordpress.org/plugins/tags/post-generator/)[seo](https://wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://wordpress.org/plugins/ai-soft-auto-post-publisher-lite/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/ai-soft-auto-post-publisher-lite/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/ai-soft-auto-post-publisher-lite/reviews/)

## Contributors

 *   [ Tauhidul Hossain Tanmoy ](https://profiles.wordpress.org/tauhidulhossain/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/ai-soft-auto-post-publisher-lite/)