{"id":11727,"date":"2026-08-11T16:06:08","date_gmt":"2026-08-11T08:06:08","guid":{"rendered":"https:\/\/aeosub.com\/unstale\/"},"modified":"2026-08-11T16:06:08","modified_gmt":"2026-08-11T08:06:08","slug":"unstale","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/unstale\/","title":{"rendered":"Unstale &#8211; Refresh Old Posts with AI, Fact-Check &amp; Republish"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/unstale\/assets\/banner-1544x500.png?rev=3631830\" alt=\"Unstale \u2013 Refresh Old Posts with AI, Fact-Check &amp; Republish\" loading=\"lazy\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-expert-review\" style=\"border: 1px solid #e2e8f0;border-left: 4px solid #4a3bca;border-radius: 10px;padding: 20px;margin-bottom: 25px;background: #fff;font-family: -apple-system, system-ui, sans-serif\">\n<div style=\"font-weight: bold;font-size: 1.1em;color: #4a3bca;margin-bottom: 10px\">LethaldiranMX Insight<\/div>\n<div style=\"color: #4a5568;font-size: 14px;line-height: 1.6\">\n<div>\n<p>Unstale addresses one of the most resource-intensive aspects of content lifecycle management by automating the audit, fact-checking, and updating of decaying WordPress posts. By leveraging the site&#8217;s existing WordPress AI provider connection, it eliminates the friction of managing external API keys while offering a transparent, journaled execution path that details token usage and costs before execution. This tool shifts content maintenance from a manual editorial chore to an optimized, semi-automated workflow that preserves URL structures while updating critical data points like prices, dates, and SEO metadata.<\/p>\n<p><strong>Best Fit &amp; Operational Role:<\/strong> This plugin is an excellent fit for content-heavy publishers, affiliate marketers, and digital agencies managing large archives where outdated statistics, pricing, or temporal references lead to search ranking decay. Operating directly within the WordPress admin, it serves as an editorial copilot that bridges the gap between database auditing\u2014via its zero-cost Content Health screen\u2014and programmatic content refinement. It solves the operational bottleneck of manual content audits by identifying stale URLs and allowing editors to batch-process updates with granular control over rewrite depth and internal linking structures.<\/p>\n<p><strong>Potential Limitations &amp; Pitfalls:<\/strong> While the plugin leverages external AI processing to minimize local server overhead, batch-processing large volumes of posts can still strain database resources during the diff-generation and internal-linking phases. Additionally, because it relies entirely on the third-party AI provider already connected to the WordPress environment, operational costs and API rate limits are directly tied to that external provider&#8217;s stability and pricing model. Users must also carefully review the generated diffs and execution journals, as automated web research and fact-checking, though structured, still require human oversight to ensure brand voice alignment and prevent unexpected formatting anomalies in complex page builder layouts.<\/p>\n<\/div>\n<\/div><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<div style=\"padding: 20px;border-bottom: 1px solid #edf2f7;background: #fafafa;display: flex;align-items: flex-start\">\n                <img decoding=\"async\" src=\"https:\/\/ps.w.org\/unstale\/assets\/icon-256x256.png?rev=3631830\" alt=\"Unstale \u2013 Refresh Old Posts with AI, Fact-Check &amp; Republish icon\" loading=\"lazy\" style=\"width: 45px;height: 45px;border-radius: 8px;margin-right: 15px\"> <\/p>\n<div style=\"flex: 1;line-height: 1.2\">\n<div style=\"font-weight: bold;font-size: 1.1em;color: #1a202c\">Plugin Specification<\/div>\n<p>                    <small style=\"color: #718096\">WordPress.org Official Data<\/small>\n                <\/div>\n<\/p><\/div>\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\">Developer<\/th>\n<td style=\"padding: 12px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/webandseofr\/\" target=\"_blank\" rel=\"noopener\">Web &amp; SEO<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.1.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">7.0 \/ 7.0.3<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-08-11 8:05am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/unstale\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\">View Details -&gt;<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Old posts lose traffic. Unstale researches, fact-checks and rewrites them with the AI provider you connected in WordPress. No API key, no quota.<\/div>\n<p>Your best posts stopped bringing traffic. Not from a penalty: the prices, the statistics and the year references inside them grew outdated while fresher pages took the rankings. A content refresh fixes that, and Unstale runs one with real AI, through the AI provider you already connected to WordPress.<\/p>\n<p>Point it at a published post. It reads the post, searches the live web, checks every figure and price against what it finds, rewrites the text, updates the SEO metas, adds internal links, and hands you the result as a diff to approve. Then it republishes with a fresh date, without breaking your URLs.<\/p>\n<h4>What one content refresh actually does<\/h4>\n<ul>\n<li><strong>Live web research.<\/strong> The refresh searches the web while it runs, so the rewrite is based on what is true today and not on what the model remembers.<\/li>\n<li><strong>Fact-check of every number.<\/strong> Outdated figures, prices and dates are fact-checked against the sources the refresh just read. A step that cannot verify a claim says so in the journal instead of inventing one.<\/li>\n<li><strong>Rewrite at the level you choose.<\/strong> Minimal fixes typos, facts, internal links and the date. Balanced adds the SEO work: optimized metas, JSON-LD when no SEO plugin already emits it, key-takeaway callouts, readability.<\/li>\n<li><strong>Internal linking.<\/strong> Up to 15 relevant internal links per refresh, with natural, varied anchors, one link per target page.<\/li>\n<li><strong>A journal per article.<\/strong> Every step, every token count and the real cost, each on its own line.<\/li>\n<\/ul>\n<h4>Find out what has gone stale, for free<\/h4>\n<p>Knowing a refresh works is one thing. Knowing which of your 400 posts needs one is another. The Content health screen lists your published content that has not been updated in a while, oldest first, split into three age ranges so you can see how much of your archive has drifted.<\/p>\n<p>It reads nothing but your own database, so looking costs you nothing and needs no AI provider connected. When you are ready, select what you want from that screen and send it off in one batch. Unstale shows the total your provider will bill before anything starts, and names anything it left out of the batch along with the reason.<\/p>\n<h4>You keep the keys, and you keep the bill<\/h4>\n<p>Since WordPress 7.0, providers and credentials live in Settings &gt; Connectors and are managed by WordPress itself. Unstale uses whatever you set up there, so this plugin stores no API key of its own and never sees your credentials.<\/p>\n<p>Your WordPress talks to that provider directly. Your content, published or draft, never passes through our servers. We do not see it.<\/p>\n<p>You pay your provider directly, at its own rates, and nothing to us per refresh. No credits, no monthly quota, no cap on how many old posts you refresh. Unstale shows an estimated cost before each launch and logs the real one after.<\/p>\n<h4>Nothing goes live without you<\/h4>\n<p>Every refresh waits in a review queue with a side-by-side diff of the current post and the proposed one. You approve it or you discard it. An optional full-auto mode exists for people who want it, off by default. Approved changes are applied as a normal WordPress revision, so one click rolls them back when revisions are enabled on your site.<\/p>\n<h4>Republishing that does not break your URLs<\/h4>\n<p>Republishing plugins usually warn you not to use them when your permalinks contain the post date, because bumping the date moves the URL. Unstale skips the bump automatically when your permalink structure uses the core date tags. To keep dated URLs and still refresh the date, switch to the %unstale_year%, %unstale_monthnum% and %unstale_day% tags: they freeze the original date in the URL for good. Republication also carries position control, randomized timing, allowed days and time windows.<\/p>\n<h4>What Unstale does not do<\/h4>\n<p>It does not write new articles. It works only on posts you already published, which is the point: the traffic is easier to win back on an evergreen post that once ranked than on a new one nobody has read. It does not read Search Console and does not rank your archive by traffic lost, so you choose which old posts to refresh, one by one or in batches from the Content health screen. And there is no account to create anywhere.<\/p>\n<p>Two refresh levels are free: Minimal and Balanced, and so is sending a batch off from the Content health screen. The Strong and Maximal levels, scheduled automation and per-category rules are part of <a href=\"https:\/\/unstale.ai\/\" rel=\"nofollow ugc noopener\" target=\"_blank\">Unstale Pro<\/a>. Automation of the free levels is available through the REST API (unstale\/v1) and WP-CLI (wp unstale refresh).<\/p>\n<p>Unstale is developed by <a href=\"https:\/\/www.webandseo.fr\/\" rel=\"nofollow ugc noopener\" target=\"_blank\">Web &amp; SEO Ltd<\/a>, the company that owns and operates unstale.ai.<\/p>\n<h3>External services<\/h3>\n<p>This plugin relies on one external service.<\/p>\n<h4>The Unstale model catalog (unstale.ai)<\/h4>\n<p>What it is: a public, static JSON file at https:\/\/unstale.ai\/api\/v1\/models.json listing the supported model ids, their prices per million tokens and their notes. It exists so that a new provider model becomes available in your settings without waiting for a plugin update, and so the plugin can show you a cost estimate before each refresh.<\/p>\n<p>What is sent, and when: nothing but the HTTP request itself. It is an unauthenticated GET, fired by a single scheduled task once every 24 hours. No content, no credentials, no personal data, no site identifier is transmitted, and there is no manual refresh button that could trigger it more often. If the request fails the plugin keeps using the catalog bundled in the plugin files.<\/p>\n<p>This service is provided by Unstale: <a href=\"https:\/\/unstale.ai\/terms\" rel=\"nofollow ugc noopener\" target=\"_blank\">Terms<\/a>, <a href=\"https:\/\/unstale.ai\/privacy\" rel=\"nofollow ugc noopener\" target=\"_blank\">Privacy<\/a><\/p>\n<h4>A note on AI providers<\/h4>\n<p>Unstale does not contact Anthropic, OpenAI or Google itself and declares none of them as its own external service. Prompts are handed to the WordPress AI Client, which routes them to the provider you connected in Settings &gt; Connectors. That provider, its terms and its billing are the relationship between you and them, set up in WordPress and not in this plugin.<\/p>\n<div class=\"plugin-editorial-note\" style=\"margin-top: 25px;padding: 12px 15px;background: #f8fafc;border-radius: 6px;color: #64748b;font-size: 13px;line-height: 1.5\">Editorial note: This overview combines WordPress.org official plugin metadata with an AI-assisted LethaldiranMX editorial review. Plugin data should be verified on the official WordPress.org listing before installation.<\/div>","protected":false},"excerpt":{"rendered":"<p>Old posts lose traffic. Unstale researches, fact-checks and rewrites them with the AI provider you connected in WordPress. No API key, no quota.<\/p>","protected":false},"author":1,"featured_media":11728,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[1244,2968,2969,2970,2971,555],"class_list":["post-11727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-content-refresh","tag-evergreen-content","tag-fact-check","tag-old-posts","tag-republish","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=11727"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11727\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/11728"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=11727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=11727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=11727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}