For AI agents and crawlers

This page is the human-readable version of the contract at llms.txt. It explains what Indian Opinion offers an AI system or agent, and how to use it.

Who we are

Indian Opinion is a content publication and distribution brand owned by Great Indian Company. Editorial is headed by Ramakrishnan Lokanathan, Founder and Editor, who is accountable for the source list, the publishing rules and everything published here, independently of the parent company’s other interests. See the Masthead and Ownership and Funding.

What a brief already does for you

Each brief has already been synthesised from every outlet that carried the story: the cross-outlet comparison is done before you get here. Every brief states its own corroboration count, the number of independent outlets it draws on. Every outlet in a story’s coverage list carries a per-story stance label (pro-government, government-critical, left-leaning, right-leaning, neutral-report or sensationalist), so you can choose where to read further without guessing an outlet’s leaning from its name. Because that comparison work is already done, you do not need to search for a second summary of the same story: the coverage list is the map to the primary reporting.

How to use this site

  • Markdown twin of every page. Add .md to any article, category, page or the home page’s address, or request the HTML address with an Accept: text/markdown header, for the title, dateline, corroboration count, brief, analysis, coverage list and source links with no navigation, no widgets and no scripts.
  • Brief JSON. One article at /wp-json/io/v1/brief/{id}; recent articles at /wp-json/io/v1/briefs?since=&limit=, where since takes an ISO 8601 timestamp and limit a count.
  • llms-full.txt. The recent briefs as plain text: an index of the day pages and the last two days inline, with one page per day at /llms-full/YYYY-MM-DD.txt (busy archive days are split into parts at ?part=2 and on).
  • Sitemaps. sitemap.xml is the index. Its children are news-sitemap.xml for the last 48 hours, one sitemap-posts-YYYY-MM.xml per month of publication, sitemap-pages.xml and sitemap-categories.xml. There is no tag sitemap.
  • Category feeds. An RSS feed and a .md index for every category.

How to cite what you read

Cite the original outlet named in a story’s coverage list for a primary claim: the fact belongs to the reporter who filed it. Cite Indian Opinion for the synthesis: the corroboration count, the cross-outlet comparison and the analysis are our work.

Honesty, in short

Most stories draw on two or three sources, some on ten or more. A small utility lane, exam results, recruitment notices, prices, fares, transport disruption and local incidents, rests on a single outlet because the fact itself is the value, and those articles say so. All content here is AI-generated and published without a person reading each article before it goes live. The editor named above is accountable for the source list, the publishing rules and every correction. Archive articles restored after the September 2026 editorial review are labelled, and until they clear that review they are kept out of search engine indexes even though they remain readable here and to AI systems.

Machine-readable terms

This section is generated from the site's own configuration, so it always matches robots.txt and the live endpoints.

Formats and negotiation

  • Markdown twins. Drop the trailing slash from an article or page address and add .md (/{slug}.md); a section is /category/{slug}.md, the home page /index.md and the last 24 hours /today.md. Every HTML page names its twin in a Link header and in a <link rel="alternate" type="text/markdown"> tag.
  • Accept header. Accept: text/markdown on an HTML address is answered at our origin with a 302 to its twin. A copy of the HTML page already cached at the CDN can answer first, so fetch the .md address itself when you want markdown.
  • What an article twin carries, in order: title; dateline (UTC, ISO 8601), section and byline; the Corroboration line (independent outlets, plus the number of source reports when one outlet filed more than one); a Blindspot line where the page has one; the brief; the Indian Opinion Analysis; the Coverage list, one line per source with outlet, stance label, source URL and a one-line note, exactly as the page lists them; the AI note the page prints beside its sources; Tags; Canonical; License; Cite, the citation anchor; on a brief with a quality-check record (from 12 November 2026) the Corroboration line is that record's count, followed by the outlet keys it counted, sources that are linked but do not count are marked not counted or listed on a Background line, and Gate decision, Utility kind (service stories only), Freshness and Image lines follow Cite; on an article kept out of search indexes (a restored archive article, or a recent single-source report) a Review state line; and last, one disclosure paragraph: how the brief was made, the hourly automated quality check whose findings the editor verifies, dated correction lines, what the stance labels are, and the methodology link. Page, section and home twins end with the AI disclosure line from the site footer. The twin of a dated Today in India post, and /today.md, carry the whole wrap: lead, every story with its paragraph and brief link, the closing thought and the earlier editions.
  • Caching. Twins send an ETag and answer 304 to a matching If-None-Match; they are cached publicly for 30 minutes.
  • Plain-text corpus. /llms.txt is the map. /llms-full.txt is an index of the recent day files plus the last two days of briefs inline. /llms-full/YYYY-MM-DD.txt carries every brief of one UTC day; a day with more than 600 briefs is split into parts at ?part=2 and on.

Stance vocabulary

A stance label describes how one outlet framed one story, never the outlet in general: the same outlet can be pro-government on one story and government-critical on the next. Labels are shown only where at least two independent outlets carried the story. The JSON carries the slug; pages and twins print it with a space for the hyphen.

  • pro-government: the framing favours the government or the official account.
  • government-critical: the framing foregrounds failure, blame or opposition criticism of the government.
  • left-leaning: the framing carries a left-of-centre slant on this issue.
  • right-leaning: the framing carries a right-of-centre slant on this issue.
  • neutral-report: straight news-agency style reporting with no discernible slant.
  • sensationalist: drama first: outrage, shock, spectacle or speculation ahead of substance.
  • opinion: the item is an opinion or commentary piece rather than a news report.

JSON endpoints

  • GET https://indianopinion.org/wp-json/io/v1/briefs?since={ISO 8601}&limit={1-100}&min_importance={outlets}: recent articles, newest first, as {count, items}. Without since it returns the latest; limit defaults to 20 and is capped at 100.
  • GET https://indianopinion.org/wp-json/io/v1/brief/{id}: one article; 404 for anything that is not a published article. Every article page names its own in a <link rel="alternate" type="application/json"> tag.
  • Fields of every record: id, url, title, brief, opinion, analysis, published, modified, language, section, keywords, corroboration, sources, stances, image, word_count, generated_by, qa_state, locked, human_reviewed, license, citation_anchor, md, index_state, gate_decision, gate_reason, gate_kind, outlet_keys, outlet_count, updated_after_publish, image_source, image_choice_reason, image_is_placeholder, image_is_ai_generated, image_ai_label_present, utility_kind, utility_evidence, cluster_id, duplicate_of_brief_id, freshness_decision, freshness_reason, ai_disclosure_present, ai_disclosure_text, qa_record_at, update_history. sources is a list of {url, outlet}; stances a list of {outlet, stance, note}; corroboration the number of independent outlets; index_state is index, or noindex-search for an article that is kept out of search engine indexes but stays readable and citable here: a restored archive article, or a recent single-source report.
  • qa_state is what the editor and the hourly automated quality check did after publication: none (no record), verified (checked against its sources and left as published), corrected (changed after publication: a correction, figures aligned with the source, or a dated update paragraph) or held (withdrawn; the address then answers 410). locked is true when an editor has fixed the text and automated updates may only append a dated update paragraph. human_reviewed is kept for existing consumers and is always false: no person reviews each brief before it is published.
  • Quality-check fields, read from the record the publish gate writes for each brief (briefs published before 12 November 2026 have none, so most of these are null for them): gate_decision (pass, hold, refuse or carve_out), gate_reason, gate_kind (the service story kind when carve_out was used); outlet_keys and outlet_count, the distinct qualifying outlets the gate counted, which corroboration equals; utility_kind and utility_evidence; cluster_id and duplicate_of_brief_id; freshness_decision (pass or hold) and freshness_reason; image_source, image_choice_reason, image_is_placeholder, image_is_ai_generated and image_ai_label_present (the page prints a visible label under an AI-generated image); ai_disclosure_present and ai_disclosure_text, the AI note the page prints; updated_after_publish; qa_record_at, when the record was last written. Each entry of sources also carries outlet_key, paywalled, fulltext_read and background (a background source is linked but not counted). The single-article route adds update_history (a list of {updated_at, changed_fields, previous_corroboration, new_corroboration}) and, per source, source_published_at and source_read_at (ISO 8601); the list route leaves those out to stay light.
  • Responses are cached publicly for an hour.

Crawl terms

These are the rules robots.txt serves, read from the same code. Every group carries the same rules.

  • Usage grant: Content-Signal: search=yes, ai-input=yes, ai-train=yes
  • Usage grant: Content-Usage: train-ai=y, ai-use=y, search=y
  • Named and welcome, under exactly the same rules as every other crawler: GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-SearchBot, Claude-User, anthropic-ai, PerplexityBot, Perplexity-User, Google-Extended, Applebot, Applebot-Extended, Amazonbot, Meta-ExternalAgent, Meta-ExternalFetcher, DuckAssistBot, cohere-ai, MistralAI-User, YouBot, Googlebot, bingbot, DuckDuckBot, GoogleOther, Google-CloudVertexBot, Amzn-SearchBot, Amzn-User, meta-webindexer, FacebookBot, Claude-Web, cohere-training-data-crawler, MistralAI-Index, MistralAI-Training, Timpibot, omgili, omgilibot, Webzio-Extended, Diffbot, AI2Bot, Ai2Bot-Dolma, PetalBot, PanguBot, Bravebot, kagi-fetcher, PhindBot, Andibot, ExaBot, LinkupBot, DeepSeekBot, QwenBot, KimiBot, YandexAdditional, iaskspider.
  • Welcome with a Crawl-delay, because they send no referral traffic and this is a small origin: CCBot 10 seconds, Bytespider 30 seconds.
  • Path rules, in every group:
    • Disallow: /wp-admin/
    • Allow: /wp-admin/admin-ajax.php
    • Disallow: /wp-json/
    • Disallow: /login/
    • Disallow: /register/
    • Disallow: /account/
    • Disallow: /user/
    • Disallow: /members/
    • Disallow: /logout/
    • Disallow: /password-reset/
    • Disallow: /*?s=
    • Disallow: /search/
    • Disallow: /*?preview=
    • Disallow: /tag/src-rss/
    • Disallow: /tag/src-newsomatic/
    • Disallow: /hi/
    • Disallow: /te/
    • Disallow: /ta/
    • Disallow: /bn/
    • Disallow: /mr/
    • Disallow: /kn/
    • Disallow: /ml/
    • Disallow: /gu/
    • Allow: /wp-json/io/v1/
    • Allow: /llms-full/
    • Allow: /
  • One Sitemap: https://indianopinion.org/sitemap.xml line; its children are listed in llms.txt.
  • Agent sign-up: /agents/ (markdown: /agents.md). An email and the code we send to it give an agent a token, the daily digest, topic tracking and Breaking News.
  • Usage terms: /.well-known/ai.txt. Attribution with a link to the article is asked for; the facts belong to the outlets credited with each brief.
Search Trending
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...

All fields are required.