I run Bytezign, a blog covering crypto security, DeFi, and Web3 content that also supports SmartContractAuditor.ai, an AI-powered smart contract vulnerability scanner I built. Like a lot of indie projects, the blog had accumulated years of content from different tools, imports, and phases of the project, and I'd never done a real audit of what was actually live on it.
So I asked an AI agent with WordPress access to go through the entire site: SEO, content quality, structure, everything. What it found was more interesting than I expected, and fixing it turned into a genuinely useful case study in what "content debt" looks like at scale.
The starting point
198 published posts. On paper, a reasonably sized blog. In practice:
No SEO plugin installed at all. No meta descriptions, no schema markup, nothing beyond whatever WordPress and the theme did by default.
96% of images were missing alt text (282 of 293).
Author identity was split across 6 different WordPress accounts four of them were me, under different usernames, plus a couple of bot/spam registrations with zero posts.
A full third of the site was off-topic or duplicate content. Real duplicates (the exact same article published twice under different titles), affiliate spam dressed up as blog posts ("AI Passion Profit System," a health supplement pitch, a casino review), and just plain unrelated content (celebrity profiles, conspiracy theories, apartment-hunting guides) that had nothing to do with crypto or security.
None of this was intentional. It's what happens when a site accumulates content over time from different sources without anyone periodically checking "does this all still make sense together."
What the cleanup actually looked like
Content pruning. After classifying every post into on-topic, off-topic, duplicate, or spam, 105 of the 198 posts got unpublished (set to draft, not deleted fully reversible). What was left was a coherent 93-post site that actually reads as "a crypto security blog," rather than a grab bag.
Author consolidation. All 209 posts and pages got reassigned to a single canonical author account, and the redundant/bot accounts were deleted. One underrated side effect of this: Google Site Kit's Search Console connection was tied to the OAuth authorization of one of the deleted accounts, so deleting that user silently broke Search Console until I noticed and reconnected it under the surviving account. Lesson learned — check what's tied to a user account before deleting it, not just what content they authored.
Technical SEO. Installed AIOSEO, wrote unique meta descriptions for all 93 surviving posts, and filled in the missing alt text on the images that mattered (skipped a batch of generic theme-demo placeholder images not worth the effort for something nobody sees).
Schema and AEO. This was the part I found most interesting. Beyond classic SEO, I added FAQ sections with matching FAQPage JSON-LD schema to the strongest technical posts a three-part series on real DeFi exploits (Uranium Finance, Yearn, and a piece on "invisible exploits" that hide their own tracks via self-destructing helper contracts). The idea is that these FAQ blocks are exactly the shape that AI answer engines (ChatGPT, Perplexity, Google AI Overviews) pull from when someone asks a specific question. Whether that pans out is still TBD, but it's a cheap, low-risk bet.
An llms.txt file. Similar spirit to robots.txt, but aimed at AI crawlers instead of search engines a curated list of the site's best content, in plain text. It's an emerging, informal convention, not an official standard, but it costs almost nothing to add and can only help.
Internal linking. None of the exploit-series articles linked to each other, to the wallet-security guides, or to the actual product (SmartContractAuditor.ai) they were implicitly supporting. Built out a real link graph between related content instead of leaving each post as an island.
A genuinely broken-link audit. After all the content pruning, I ran a query to check whether any live posts still contained hardcoded links pointing to content that had just been drafted. Found six of them — internal "Also Read" and "Check out" links pointing straight at now-unpublished spam posts. Three got repointed to the correct canonical version of the linked content (some of what got drafted were literal duplicates of posts that were still live), and three got unlinked entirely since there was no legitimate replacement. This is the kind of thing that's easy to miss doing a cleanup manually, since it requires cross-referencing every remaining post's content against everything you just removed.
The part that surprised me most
I expected the SEO plugin gap and the missing alt text. I didn't expect the duplicate-content problem to be this bad multiple articles published two, three, even four times under slightly different titles, apparently from some earlier bulk-import or content-generation process that never got cleaned up. Google (and any AI system trying to figure out what your site is "about") doesn't handle that gracefully. A site that can't tell search engines what it's authoritatively about ranks worse across the board, even on the genuinely good content sitting right next to the noise.
Where it stands now
Google Search Console is connected and the sitemap's submitted. IndexNow is live for Bing/Yandex. UTM tracking is in place on every link from the blog to SmartContractAuditor.ai, split by content type (exploit stories, wallet guides, product explainers), so the next real test is whether any of this content actually converts readers into product signups — which is the metric that actually matters, not just page views.
If you're running a WordPress site (crypto-focused or not) that's been accumulating content for a while without a real audit, I'd genuinely recommend doing one. The stuff you find is rarely what you expect.
Top comments (0)