# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## What This Repository Is

This is a **data/reports workspace** for freejobalert.com — India's leading government job notification portal (~10M+ monthly visitors). The live site runs on separate WordPress infrastructure; this cPanel account (`working2`) is used for analytics, ad revenue analysis, and generating optimization recommendations.

**The actual site source code is NOT in this directory.** To inspect live pages, fetch them via `curl` from `https://www.freejobalert.com/`.

## Key Files

- `AdSenseReport (2).xlsx` — Google AdSense performance data (page-level: URL, earnings, views, impressions, RPM, viewability, clicks)
- `report (Apr 27, 2026 - May 26, 2026).csv` — Google Ad Manager/AdX report (ad unit level)
- `freejobalert.com-Performance-on-Search-*.xlsx` — Google Search Console data
- `Engagement_overview.csv`, `Landing_page_Landing_page.csv`, `Pages_and_screens_*.csv` — Google Analytics 4 exports
- `*.txt` suggestion files — Ad optimization and content/schema enhancement reports generated during analysis sessions

## Common Tasks

### Fetching live page source for analysis
```bash
curl -s -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" "https://www.freejobalert.com/" > /tmp/fja_homepage.html
```

### Reading Excel/XLSX reports
```bash
python3 -c "
import openpyxl
wb = openpyxl.load_workbook('AdSenseReport (2).xlsx')
ws = wb.active
for row in ws.iter_rows(min_row=1, max_row=5, values_only=True):
    print(row)
"
```

### Extracting ad code from live pages
```bash
curl -s -L -A "Mozilla/5.0" "https://www.freejobalert.com/" | grep -i -A5 "adsbygoogle\|div-gpt-ad\|data-ad-format\|data-ad-slot"
```

## Site Architecture (Live Site)

- **Platform**: WordPress on cPanel, Cloudflare CDN with Rocket Loader enabled
- **Theme**: GeneratePress with GenerateBlocks (custom GB grid layouts)
- **Ad Stack**: Google AdSense (manual slots) + Google Ad Manager/AdX (GPT tags) + VDO.AI video ads
- **Ad Loading**: All ad scripts deferred via an inline JS pattern (event listeners + 3000ms setTimeout fallback), further delayed by Cloudflare Rocket Loader creating a 5-6 second total delay
- **Page Types**:
  - Homepage (`/`) — custom page template with GB grid sections
  - Category pages (`/government-jobs/`, `/bank-jobs/`, `/railway-jobs/`, etc.) — post template with `h4.latsec` section headings and `table.lattbl` job listing tables
  - State pages (`/[state]-government-jobs/`) — same template as category pages
  - Search-jobs pages (`/search-jobs/[qualification]-government-jobs/`) — dynamically generated listing pages
  - Article pages (`/articles/[slug]-[id]`) — full content posts with structured data (JobPosting, NewsArticle, FAQPage schemas)
  - Exam pages (`/exams/[exam]-jobs/`) — content-rich pages with FAQ schema

## Ad Slot IDs

- `ca-pub-8801321225174646` — AdSense publisher ID
- `/40776336/FJA_Jobs_siteWide_top_300*250` — GAM 300x250 (appears on all page types)
- AdSense slot `7541204741` — Homepage top banner (`FJA_Home_PAGE_TOP_BANNER`)
- AdSense slot `4972740639` — Category/article top banner (`FJ_Top_NEW_RESP`)
- AdSense slot `6514013785` — Article top banner (`FJA_Jobs_Posting_top_banner`)

## Known Issues

- **80% of homepage/category pageviews load zero ads** due to Cloudflare Rocket Loader + setTimeout double-deferral chain
- **body itemtype="schema.org/Blog"** on all category/state pages (should be CollectionPage)
- **Organization schema has empty `sameAs:[]`** on all pages except homepage
- **Double slash in schema `@id`** (`//#organization` instead of `/#organization`) on category pages
- **PHP not executing** on `/railway-jobs/` bottom content (`<?php echo $curYear; ?>` renders as literal text)
- **Zero contextual content** on most category and state pages — only job listing links, no paragraph text for Google's ad targeting
