The ZiviTV.xyz postmortem laid out how the original project died: an unmonitored sitemap stuffed with API routes, a date serialization bug in the XML output, and search penalties that made starting over faster than trying to dig out the old domain.
ZiviTV.tech is the rebuild. The core concept stayed the same (a movie and TV discovery platform built on Next.js), but I built it with technical SEO in mind from the very first commit.
Controlling the Index
On the first domain, I let the router generate pages without paying attention to what Google saw. On the rebuild, search indexing was part of the architecture from day one.
- Replaced the automated sitemap script with a single, hand-tested
sitemap.tsmodule. - Kept the index small and static, focusing on 16 high-intent pages instead of thousands of auto-generated title URLs.
- Added explicit
noindexheaders and strict routing boundaries for any internal data-fetching endpoints.
Auditing Technical Debt
A build that passes tests or renders cleanly in a browser tells you nothing about whether a search crawler can understand it. For the rebuild, I audited the full crawl surface:
- Eliminated soft-404 errors on invalid movie and TV queries that were previously returning a 200 OK status with empty layouts.
- Moved metadata exports out of
use clientcomponents so OpenGraph tags, canonical URLs, and dynamic page titles actually rendered on the server. - Rewrote
robots.txtwith an explicit allowlist for legitimate search bots instead of vague defaults. - Handled Search Console's "Couldn't fetch" warnings by inspecting raw server access logs directly, which confirmed the errors were dashboard reporting delays rather than actual crawler drops.
A Targeted Content Strategy
Instead of relying on volume and hoping thousands of programmatic pages would rank, I put together a 100-day content roadmap. I used free research tools: query logs from Google Search Console, TMDB trending metrics, AlsoAsked for search intent, and Ubersuggest for search volume.
I also set up an internal keyword tracker to prevent keyword cannibalization. When you publish regularly, it is easy to accidentally write two pieces that target the same query and split your rank. The tracker kept each topic distinct.
What Changed
The results showed up quickly in Search Console. Impressions climbed week over week, click-through rates converted into actual visits, and the domain began accumulating legitimate search authority.
The difference came down to respecting both sides of the product: writing clean application code and ensuring search crawlers can parse every route you put online.
