Skip to main content

5 posts tagged with "infra"

View All Tags

Fix Google AdSense Low Value Content & Cloudflare WAF Blocks

Β· 9 min read
Jaybee
AI & Robotics Engineer

Fixing Google AdSense Low Value Content & Cloudflare WAF Blocks

πŸ’‘ Executive Summary (TL;DR)

  • The Problem: Receiving Google AdSense rejection notices citing 'Needs Attention: Low Value Content' (κ°€μΉ˜κ°€ λ³„λ‘œ μ—†λŠ” μ½˜ν…μΈ ) and intermittent 'Site Down or Unavailable' (μ‚¬μ΄νŠΈ λ‹€μš΄ λ˜λŠ” μ‚¬μš©ν•  수 μ—†μŒ) despite hosting over 70 original, deep engineering articles.
  • 3 Deep Root Causes Identified:
    1. Thin/Scaled Content Penalty: 7 automated machine-translated locales (de, es, fr, ja, pt-BR, zh-Hans, zh-Hant) ballooned the crawl surface to over 650 URLs, diluting domain authority with thin programmatic translations.
    2. YMYL Sensitive Content Policy Risk: AdSense script declared statically in docusaurus.config.ts leaked ad tags and slots onto sensitive mental health crisis research posts (/blog/mental-crisis*).
    3. Cloudflare WAF Crawler Interception: Cloudflare's Bot Fight Mode and conflicting skip rules blocked Google AdSense crawlers (Mediapartners-Google) with HTTP 403 Forbidden challenges, triggering false "site unavailable" rejections.
  • The Production Fix:
    1. Dynamic Contextual Script Injection: Built a client-side route guard in Root.tsx that enforces window['adsbygoogle'] = { pauseAdRequests: 1 } and strips ad containers on YMYL paths.
    2. Strict Locale Consolidation & GSC API Purge: Pruned the build down to 2 author-curated core languages (en, ko) and programmatically purged 7 obsolete sitemaps from Google Search Console via official Webmasters REST API.
    3. Cloudflare WAF Rule Optimization: Resolved Code 10041 parameter conflict, disabled indiscriminate Bot Fight Mode, and configured verified bot pass-throughs.

GitHub Pages Custom Domain & Cloudflare DNS: Migration Guide

Β· 6 min read
Jaybee
AI & Robotics Engineer

Hosting an engineering blog on GitHub Pages under username.github.io/project is one of the most cost-effective and friction-free setups for developers. You push markdown files, Git workflows trigger, and GitHub serves your static artifacts worldwide.

However, as soon as you consider serious branding and monetization, you hit an uncompromising roadblock: Google AdSense strictly bans free secondary subdomains like *.github.io from site application. Furthermore, any search engine authority (PageRank and Domain Authority) you build remains tied to GitHub's domain rather than your personal asset.

To build a professional engineering presence, you need an apex custom domain (e.g., globaldevlog.com). In this first installment of our static blog infrastructure series, we walk through the exact zero-downtime migration blueprint from jbjihwan.github.io/global_blog to https://globaldevlog.com, powered by a high-availability Porkbun + Cloudflare + GitHub Pages 3-tier architecture.

Google AdSense on GitHub Pages: ads.txt 404 Fix & Setup Guide

Β· 6 min read
Jaybee
AI & Robotics Engineer

Google AdSense Approval and Crawler Pipeline

πŸ“Œ Key Takeaways (TL;DR)

  • The Problem: Unlike traditional dynamic CMS platforms (WordPress, Ghost), static site generators (Docusaurus, Next.js SSG, Hugo) hosted on GitHub Pages or Cloudflare Pages frequently trigger the notorious "Earnings at Risk: ads.txt file missing" alert and fail site ownership checks due to client-side hydration delays and crawler blocking.
  • The Solution: Inject the publisher verification meta tag directly into <head> using Docusaurus headTags configuration, place the plain ads.txt file in static/ads.txt for root-level deployment, and configure Cloudflare WAF bypass rules for the Googlebot-AdsTxt crawler.
  • The Result: 100% automated crawler accessibility, zero 404 crawl errors on /ads.txt, seamless AdSense review compliance, and sustained Lighthouse SEO and performance scores above 95.

Google AdSense on GitHub Pages: Custom Domain & ads.txt Setup

Β· 6 min read
Jaybee
AI & Robotics Engineer

Hosting a developer blog on GitHub Pages under username.github.io/project is one of the quickest ways to share technical insights. However, as your readership grows and you prepare for professional monetization, you hit a hard architectural wall: Google AdSense strictly prohibits free subdomains like *.github.io. To qualify for AdSense publisher verification, establish domain equity, and secure multi-region organic reach, you need your own apex custom domain.

Migrating a static documentation or engineering site to a custom domain is not just a DNS record change. It involves coordinating registrar name delegation, edge SSL termination, canonical redirects, automated publisher ads.txt hosting, and navigating subtle search console UI quirks across global and regional search engines.

In this guide, we break down our end-to-end migration from jbjihwan.github.io/global_blog to https://globaldevlog.com, including our zero-downtime DNS architecture, AdSense integration, and actionable solutions for real-world indexing traps in Google Search Console, Naver Search Advisor, and Bing Webmaster Tools.

npm audit fix: How to Fix npm Vulnerability & GHSA Alerts

Β· 6 min read
Jaybee
AI & Robotics Engineer

Every modern frontend developer has experienced this sudden spike of adrenaline: you run npm audit on your clean documentation or blog repository, and the terminal screams back in alarming red text:

45 vulnerabilities (15 moderate, 15 high, 15 critical)
To address all issues (including breaking changes), run:
npm audit fix --force

Seeing words like Critical, Remote Code Execution (RCE), and Prototype Pollution triggers an immediate instinct: type npm audit fix --force to make the scary red warnings go away.

However, in the world of Static Site Generators (SSG) like Docusaurus, Next.js, or Hugo deployed to GitHub Pages or AWS S3, doing so is often an engineering mistake that breaks production builds without improving your actual security posture.

In this article, we dissect the static site threat model, explain why bundler vulnerabilities differ fundamentally from server vulnerabilities, and share a production-tested 4-Layer Security Hardening Blueprint to protect what actually matters: your secrets, client privacy, and repository integrity.