back to blog

How One Small Mistake Killed My First Domain: The ZiviTV.xyz Postmortem

How One Small Mistake Killed My First Domain: The ZiviTV.xyz Postmortem

How One Small Mistake Killed My First Domain: The ZiviTV.xyz Postmortem

A routing oversight let Google index internal API calls instead of actual pages, corrupting the sitemap before I noticed. Here is what broke and why I had to abandon the domain.

ZiviTV.xyz was my first attempt at shipping a standalone product: a movie and TV discovery platform built on Next.js that pulled live data from TMDB. I wanted to build something that could attract search traffic and grow on its own. It failed because of a mistake that feels embarrassing in hindsight, though it taught me more about web infrastructure than any tutorial could.

What I Built

The application pulled trending lists and title details from TMDB's API, generating dynamic pages for thousands of movies and shows based on catalog IDs. At the time, generating pages for every ID seemed like an easy way to build search coverage quickly.

Where It Went Wrong

The problem came down to what Google was allowed to see. In the Next.js App Router, I had set up internal data-fetching endpoints as page routes. I never configured clear boundaries between crawlable content and internal endpoints, and I never audited what the sitemap generator was writing to disk.

Google crawled those internal routes and treated them as real pages. My sitemap jumped to over 800 URLs, mostly filled with raw query responses. To make things worse, a timestamp serialization bug was printing Invalid Date directly into the XML output, so even the legitimate routes failed schema validation.

The Fallout

The search crawler penalized the whole domain. When a crawler finds hundreds of malformed or near-empty pages, it discounts the entire site. Pages that had real, written content lost rank alongside the broken endpoints.

Search Console metrics fell apart. Once I realized the extent of the index bloat and the damaged crawler history, trying to salvage the domain made less sense than starting over. I decided to drop ZiviTV.xyz completely and rebuild cleanly on a fresh domain.

What Stuck With Me

  1. A sitemap is a direct signal to search engines about what you consider real content. If you feed the crawler unvetted routes, it evaluates the entire site accordingly.
  2. Build tools do not catch semantic data bugs. The date bug passed local builds and deployments without a warning; it only failed when a crawler tried to parse the XML.
  3. Dynamic routing requires deliberate indexing boundaries from day one. If you generate pages from external APIs, you need strict robots.txt rules and noindex directives before launch.
  4. Cutting your losses is sometimes the right engineering choice. Scraping off months of corrupted crawl history was not worth the effort when a clean architecture could fix the root problem in days.

That experience shaped ZiviTV.tech from the ground up: 16 curated static pages, clean data fetching, and strict sitemap validation.