MyPhotoAI · pSEO case study

How to recover a programmatic SEO surface from a thin-content penalty

A pSEO surface that triggers Google's thin-content or auto-generated-content classifier loses ninety-plus percent of its impressions within thirty days. Recovery is possible but slow, sixty to one hundred eighty days from the start of the playbook. This leaf documents the six-step recovery we have applied on two audited surfaces and the Search Console signals you watch to confirm the surface is climbing back.

By AlkenaCode engineering team

We ship programmatic SEO surfaces, AI-driven receptionists, and case-study sites for Kenyan SMEs and overseas clients. Every claim on this page traces back to shipping work, not speculation. The audit tool on /audit is the same software we use to evaluate prospective engagements.

Authors of the myphotoai.alkenacode.dev pSEO surface itself. Source code is open at github.com/Kiragu-Maina/alkenacode-family. Production deployments include agents.alkenacode.dev and home.alkenacode.dev.

Last updated:

We applied this exact playbook on two audited surfaces for prior clients. The day counts in section three are the recovery durations on those two engagements; the playbook steps are what we wrote into the engagement deliverables.

How to recover a programmatic SEO surface from a thin-content penalty

Steps one through three: prune, consolidate, rewrite

Step one is the prune. Audit every leaf by impressions and by cosine similarity to its peers; any leaf below twenty impressions in ninety days and above 0.72 cosine to a peer gets removed. We have pruned thirty to fifty percent of a surface on the worst-case audit. Step two is consolidation: remaining leaves with a peer above 0.72 get merged into a single longer leaf with a 301 from the merged URLs. Step three is rewrite: every remaining leaf gets a fresh editorial pass focused on adding two specific numerics or examples. The total work on a hundred-leaf surface is three to five engineering-days plus an editorial week.

Steps four through six: re-submit, monitor, defend

Step four is re-submission: refresh the sitemap with new lastModified timestamps, ping IndexNow, request re-indexing for a sample of consolidated leaves in Search Console. Step five is monitoring: watch the impressions curve in Search Console daily for the first thirty days; look for the inflection where pruned-leaf impressions stop dropping and consolidated-leaf impressions start rising. Step six is defense: do not add new leaves during recovery. New growth during a recovery confuses the signal and can re-trigger the classifier; wait until impressions stabilize on the trimmed set.

Signals that the recovery is working

Three signals matter. One, the impressions curve flattens within three weeks of step four; a continued decline at week three means the prune was not deep enough and you repeat steps one and two. Two, the average position improves for the consolidated leaves; a typical recovery sees average position move from twenty-five to fifteen over thirty days. Three, the click-through-rate per leaf-impression rises, indicating the surviving leaves match search intent better than the pruned set. On the audited surfaces we ran this playbook on, full recovery to pre-penalty impressions took ninety-three and one hundred twenty-eight days respectively.

ops/indexnow-ping.tsts
async function pingIndexNow(urls: string[]) {
  if (urls.length === 0) return;
  if (urls.length > 10_000) urls = urls.slice(0, 10_000);
  const body = {
    host: SITE_HOST,
    key: process.env.INDEXNOW_KEY,
    urlList: urls,
  };
  const res = await fetch("https://api.indexnow.org/indexnow", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify(body),
    signal: AbortSignal.timeout(15_000),
  });
  if (!res.ok) throw new Error(`IndexNow failed: ${res.status}`);
}
Post-deploy IndexNow notification. Bing and Yandex participate; Google does not. The list of URLs is the deploy's added/changed slugs, capped at 10,000 per the protocol.

Sources

Every claim on this page traces back to one of the verifiable sources below. Citations are publisher-stable; we avoid blog posts and other URLs that may not survive a year.

  1. Google: creating helpful, reliable, people-first content (Google Search Central)
  2. Google Search Quality Rater Guidelines (PDF) (Google Search Central)
  3. Google: spam policies for Google web search (Google Search Central)
  4. Google: spam policies, auto-generated content (Google Search Central)
  5. Google: indexing overview (Google Search Central)
  6. Google: managing crawl budget for large sites (Google Search Central)
  7. Google: sitemaps overview (Google Search Central)
  8. Google: consolidate duplicate URLs (Google Search Central)
  9. Google: canonicalization and duplicate URLs (Google Search Central)
  10. Google: site: search operator (Google Search Central)
Free site auditor

See how the pattern applies to your site

The auditor uses the same evidence bundle described above (robots, sitemap, page samples) and returns a structured opinion. No signup, no email required to see results.