# MetaGazette — agent guide

This file tells coding and browsing agents how to use https://tr.metagazette.com and sibling language hosts without guessing.

## What this site is

MetaGazette is a multilingual **news publication**. It is not a store.

- No product SKU, GTIN-13, MPN, warehouse stock or checkout
- No product price — articles are free to read
- Do not invent reviews, ratings, GTINs or prices
- Reader comments are not `AggregateRating` / `Review`

## Hosts

| Language | Origin |
| --- | --- |
| English (x-default) | https://en.metagazette.com |
| Turkish | https://tr.metagazette.com |
| German | https://de.metagazette.com |
| Spanish | https://es.metagazette.com |
| Arabic | https://ar.metagazette.com |

Reciprocal `hreflang` is published on HTML pages.

## JavaScript-free reading (preferred)

Most agents should **not** depend on the React shell.

1. Catalog: `GET /llms.txt` (and `/llms-full.txt` for this long-form guide)
2. Article text: `GET /article/{slug}.md`
3. JSON API (same origin `/api` or `https://api.metagazette.com`):

| Method | Path | Notes |
| --- | --- | --- |
| GET | `/api/languages` | Published languages |
| GET | `/api/categories?languageCode=tr` | Sections |
| GET | `/api/tags?languageCode=tr` | Tags |
| GET | `/api/articles?languageCode=tr&take=20` | List |
| GET | `/api/articles/{slug}?languageCode=tr` | One article |
| GET | `/api/homepage?languageCode=tr` | Front page |
| GET | `/health` | Liveness |

OpenAPI: `/openapi.json`. Function-calling shape is the article object (`title`, `summary`, `content`, `coverImageUrl`, `publishedAtUtc`, `authorName`, `categories`, `tags`, `slug`). There is **no** `price` or `availability` field because this is not commerce.

Ingest (`POST /api/integrations/articles`) is partner-only and requires an API key that is **not** in this file.

## Structured data

JSON-LD in page source: `NewsMediaOrganization`, `WebSite`, `NewsArticle`, `BreadcrumbList`, `FAQPage`.

`vatID` / `taxID` are omitted until official legal identifiers are published on the imprint page (templates still contain placeholders).

Wikidata and Crunchbase `sameAs` links are omitted until those profiles exist. Current `sameAs`: Facebook, X, LinkedIn company page as configured on the site.

## Measurement

- GA4 measurement ID: `G-836FV3LBQJ` (loads after advertising cookie consent)
- Custom GA4 channel group for AI referrers: see `/ga4-ai-channel-group.json` — must be created in the GA4 **Admin** UI, ordered **above Referral**
- Meta Pixel / Conversions API: **not installed**. Requires a real Pixel ID (`VITE_META_PIXEL_ID`) and server-side CAPI access. Do not invent a pixel ID.
- Yandex.Metrika is present on legal pages

## Build

From the `web/` package:

```
npm install
npm run build
```

Development: `npm run dev` (Vite, port 5174).

## Test

No automated frontend unit-test command is published. Smoke check: `npm run dev`, then open the language host and confirm JSON-LD (`NewsMediaOrganization`, `Product`/`Offer`, `FAQPage`) in view-source.

## Conventions

- Public language codes: `en`, `tr`, `de`, `es`, `ar`
- Article URLs: `/article/{slug}`
- Do not crawl `/login` or `/register`
- Prefer Markdown and JSON over executing site JavaScript
