AI एजेंट के लिए Markdown: Accept text/markdown, Content-Signal और Link Header समझिए

SEOgrinder की ओर से · प्रकाशित · 12 मिनट में पढ़ें

संक्षिप्त उत्तर: AI एजेंट के लिए Markdown का मतलब है कि जब कोई क्लाइंट अनुरोध के हेडर Accept: text/markdown से इसे माँगे, तो आपका सर्वर उसी पते पर HTML की जगह सादा Markdown लौटाए। ब्राउज़र को HTML मिलता रहता है। इसके लिए सर्वर कोड की कुछ पंक्तियाँ या CDN की एक सुविधा चालू करना काफ़ी है, और एजेंट को मेन्यू और स्क्रिप्ट के बिना साफ़ टेक्स्ट मिलता है। रैंकिंग या AI हवालों में इसका फ़ायदा साबित नहीं है, इसलिए इसे पढ़ने लायक HTML, अच्छी robots.txt और sitemap के ऊपर एक सस्ता अतिरिक्त कदम मानिए, उनकी जगह कभी नहीं।

AI एजेंट को Markdown क्यों पसंद आता है?

वेब पेज ब्राउज़र के लिए बनाया जाता है। जिस टेक्स्ट को आप पढ़ना चाहते हैं, उसके चारों ओर नेविगेशन, कुकी बैनर, स्क्रिप्ट, स्टाइल क्लास और फ़ुटर होते हैं। इंसान की आँख यह सब आसानी से छोड़ देती है। जिस प्रोग्राम को पेज किसी भाषा मॉडल तक पहुँचाना है, वह इसे मुफ़्त में नहीं छोड़ सकता, क्योंकि मॉडल की context window सीमित होती है और हर फ़ालतू तत्व उसका एक हिस्सा खा जाता है।

Markdown वही रखता है जो पढ़ने के लिए ज़रूरी है: शीर्षक, पैराग्राफ़, सूचियाँ, तालिकाएँ, लिंक। इसीलिए एजेंट और ऐसे ही दूसरे औज़ार इसे माँगने वाले स्वाभाविक उम्मीदवार हैं, और इसीलिए llms.txt का प्रस्ताव भी Markdown में लिखा गया है। उस फ़ाइल के बारे में हमने llms.txt क्या है लेख में लिखा है।

आकार का फ़र्क Cloudflare की Markdown for Agents वाली घोषणा में दिखता है: उसके उदाहरण-जवाब में एक x-markdown-tokens हेडर है, जिसमें टोकनों की अनुमानित संख्या है (उदाहरण में 725), ताकि क्लाइंट अंदाज़ा लगा सके कि पेज कितना context लेगा।

इससे यह पता नहीं चलता कि बड़े AI सर्च सिस्टम Markdown माँगते हैं या नहीं। Cloudflare की घोषणा में OAI-SearchBot को दिए गए Markdown जवाबों का Radar डेटा दिखता है। यह साबित करता है कि ऐसे जवाब दिए जाते हैं, यह नहीं कि क्रॉलर उन्हें माँगता है; OpenAI इसका दस्तावेज़ नहीं देती। इसलिए हम यह दावा नहीं करते। दस्तावेज़ों में दर्ज बात यह है कि कुछ एजेंट इसे पहले से माँगते हैं, जैसा अगले हिस्से दिखाते हैं।

Content negotiation कैसे काम करती है: Accept, Vary और Content-Type

Content negotiation (यानी क्लाइंट और सर्वर का आपस में तय करना कि जवाब किस रूप में आए) HTTP का पुराना हिस्सा है। एक ही पते के कई रूप हो सकते हैं, और क्लाइंट बताता है कि उसे कौन-सा पसंद है। तीन हेडर पूरी व्यवस्था चलाते हैं:

हेडरकौन भेजता हैमतलब
Acceptक्लाइंट, अनुरोध मेंउसे किस तरह की सामग्री चाहिए, चाहें तो वज़न (weight) के साथ (q=0.8)
Content-Typeसर्वर, जवाब मेंसर्वर ने असल में क्या भेजा, यहाँ text/markdown; charset=utf-8
Vary: Acceptसर्वर, जवाब मेंजवाब Accept हेडर पर निर्भर है, इसलिए कैश अलग-अलग रूपों को आपस में न मिलाएँ

ब्राउज़र पहले text/html भेजता है और विकल्प के तौर पर वाइल्डकार्ड */* जोड़ देता है। जो एजेंट Markdown चाहता है, वह उसका साफ़ तौर पर नाम लेता है, जैसे Accept: text/markdown या Accept: text/markdown, text/html;q=0.8। Cloudflare लिखती है कि Claude Code और OpenCode जैसे आम कोडिंग एजेंट ऐसे Accept हेडर पहले से भेजते हैं।

सबको सुरक्षित रखने वाला नियम सीधा है: Markdown तभी लौटाइए जब text/markdown का साफ़ तौर पर नाम लिया गया हो और उसका वज़न text/html से कम न हो। वाइल्डकार्ड */* कभी नहीं गिना जाना चाहिए। वरना ब्राउज़र, लिंक-चेकर और सोशल प्रीव्यू बॉट, जो सब "कुछ भी" स्वीकार करते हैं, अचानक Markdown पा जाएँगे।

Cloudflare के साथ AI एजेंट के लिए Markdown

12 फ़रवरी 2026 को Cloudflare ने Markdown for Agents की घोषणा की। अगर यह आपके ज़ोन के लिए चालू है (यह बीटा में है और Pro, Business व Enterprise प्लान में बिना अतिरिक्त शुल्क के मिलती है), तो Accept: text/markdown वाले अनुरोध को आपका HTML तुरंत Markdown में बदलकर मिलता है। आपका मूल सर्वर बदलता नहीं।

घोषणा का उदाहरण-जवाब दिखाता है कि कौन-से हेडर मिलेंगे:

content-type: text/markdown; charset=utf-8
vary: accept
x-markdown-tokens: 725
content-signal: ai-train=yes, search=yes, ai-input=yes

अगर आपकी साइट पहले से इन्हीं प्लानों में से किसी पर Cloudflare के पीछे चल रही है और बदला हुआ नतीजा ठीक दिखता है, तो यह सबसे तेज़ रास्ता है। उस पर भरोसा करने से पहले नतीजे को curl से जाँचिए ("curl से जाँच कैसे करें" हिस्सा देखें)। अगर आप खुद तय करना चाहते हैं कि Markdown रूप में क्या लिखा हो, या आपकी साइट कहीं और चलती है, तो इसे खुद बनाइए।

खुद बनाइए: Node का एक छोटा उदाहरण

नीचे के खाके में ऊपर के सारे नियम शामिल हैं: Markdown सिर्फ़ साफ़ माँग पर, दोनों रूपों पर Vary: Accept, जो क्लाइंट negotiation नहीं करते उनके लिए स्थायी पता /index.md, और Markdown जवाब के हेडर में canonical लिंक। यह एक न्यूनतम उदाहरण है, प्रोडक्शन कोड नहीं।

import http from 'node:http';
import { readFileSync } from 'node:fs';

function wantsMarkdown(accept = '') {
  const weight = new Map();
  for (const part of accept.toLowerCase().split(',')) {
    const [range, ...params] = part.trim().split(';');
    const q = params.find((p) => p.trim().startsWith('q='));
    weight.set(range.trim(), q ? Number(q.trim().slice(2)) : 1);
  }
  const md = weight.get('text/markdown') ?? 0;
  const html = weight.get('text/html') ?? weight.get('text/*') ?? weight.get('*/*') ?? 0;
  return md > 0 && md >= html; // अकेला वाइल्डकार्ड कभी Markdown नहीं चुनता
}

http.createServer((req, res) => {
  if (req.url === '/index.md' || (req.url === '/' && wantsMarkdown(req.headers.accept))) {
    res.writeHead(200, {
      'Content-Type': 'text/markdown; charset=utf-8',
      'Vary': 'Accept',
      'Link': '<https://example.com/>; rel="canonical"',
    });
    return res.end(readFileSync('index.md'));
  }
  if (req.url === '/') {
    res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8', 'Vary': 'Accept' });
    return res.end(readFileSync('index.html'));
  }
  res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' }); // बाकी हर पता 404 देता है
  res.end('Not found');
}).listen(3000);

तीन बातें गौर से देखने लायक हैं:

  • दोनों रूपों पर Vary। HTML जवाब को भी Vary: Accept चाहिए, वरना साझा कैश HTML को सहेजकर उस एजेंट को दे सकता है जिसने Markdown माँगा था, या इसका उलटा।
  • स्थायी पता। /index.md हमेशा Markdown लौटाता है, क्लाइंट कुछ भी भेजे। एजेंट और लोग इस पर लिंक कर सकते हैं, और यह वहाँ भी चलता है जहाँ हेडर सेट नहीं किए जा सकते। हमारी अपनी साइट seogrinder.com/index.md यही करती है।
  • canonical हेडर। Markdown रूप उसी पेज का दूसरा रूप है। Google के दस्तावेज़ के अनुसार जो फ़ाइलें HTML नहीं हैं, उनके लिए rel="canonical" HTTP हेडर के रूप में भेजा जा सकता है। यह इस बात का मज़बूत संकेत है कि Markdown रूप उस पेज का ही हिस्सा है, गारंटी नहीं (Google)।

Markdown फ़ाइल हाथ से लिखिए या उसी स्रोत से बनाइए जिससे HTML बनता है। दोनों हालत में वह वही कहे जो पेज कहता है, बस ढाँचे के बिना।

Link header: एजेंट को अपनी साइट के विवरण तक पहुँचाना

Link रिस्पॉन्स हेडर RFC 8288 में तय है। वह किसी संबंधित पते और संबंध के प्रकार को बताता है, जैसे Link: </llms.txt>; rel="describedby"। describedby संबंध पंजीकृत है, और उसका अर्थ यहाँ ठीक बैठता है: जुड़ा हुआ संसाधन इस संसाधन का वर्णन करता है। जो क्लाइंट रिस्पॉन्स हेडर पढ़ता है, उसे जवाब का मुख्य हिस्सा पढ़ने से पहले ही पता चल जाता है कि आपकी साइट का विवरण कहाँ है।

seogrinder.com अपने होमपेज पर यह हेडर भेजता है और अपनी llms.txt की ओर इशारा करता है। Markdown जवाब में यही Link हेडर ऊपर दिखाया गया canonical संबंध भी साथ लाता है, कॉमा से अलग किया हुआ।

आज कोई एजेंट इन लिंकों को फ़ॉलो करता है या नहीं, यह साबित नहीं है। लागत सर्वर कॉन्फ़िगरेशन की एक पंक्ति है।

Content-Signal पंक्ति

सितंबर 2025 में Cloudflare ने robots.txt के लिए एक पंक्ति शुरू की, जो बताती है कि क्रॉलर आपकी सामग्री को ले आने के बाद उसका क्या कर सकता है:

Content-Signal: search=yes, ai-input=yes, ai-train=no

search का मतलब इंडेक्सिंग और स्निपेट है, ai-input का मतलब AI जवाबों में सामग्री का सीधा इस्तेमाल, और ai-train का मतलब किसी मॉडल की ट्रेनिंग या फ़ाइन-ट्यूनिंग। इस फ़ॉर्मेट का वर्णन Cloudflare की घोषणा और contentsignals.org में है। यह एक घोषणा है, कोई दीवार नहीं: इसे मानने के लिए कोई मजबूर नहीं है। Cloudflare कहती है कि Content Signals पसंद-नापसंद बताते हैं, तकनीकी रोक नहीं हैं, और कुछ कंपनियाँ उन्हें बस अनदेखा कर सकती हैं। जैसा ऊपर दिखा, Cloudflare के Markdown उदाहरण में भी एक content-signal रिस्पॉन्स हेडर है।

यह पंक्ति आपकी robots.txt में, AI बॉट के बाकी सारे नियमों के साथ रहती है। विवरण, और हर बॉट के अलग समूह वाली आम गलती, AI क्रॉलर के लिए robots.txt लेख में हैं। seogrinder.com की robots.txt सभी क्रॉलर के लिए एक साझा समूह और नौ AI पहचान-नामों का उपयोग करती है, Content-Signal: search=yes, ai-input=yes, ai-train=yes के साथ।

curl से जाँच कैसे करें

उसी औज़ार से जाँचिए जिसे कोई एजेंट इस्तेमाल करता। विकल्प -I सिर्फ़ हेडर दिखाता है:

curl -sI -H "Accept: text/markdown" https://example.com/

जवाब में चार बातें देखिए: स्टेटस 200, content-type: text/markdown, ऐसा vary जिसमें Accept हो, और canonical पते वाला link हेडर। seogrinder.com के लिए नतीजा ऐसा दिखता है, ज़रूरी पंक्तियों तक छोटा किया हुआ:

HTTP/2 200
content-type: text/markdown; charset=utf-8
vary: Accept
link: </llms.txt>; rel="describedby"; type="text/plain", <https://seogrinder.com/>; rel="canonical"

फिर उलटी जाँचें कीजिए। इनमें से हर एक को text/html लौटाना चाहिए:

curl -sI -H "Accept: text/html" https://example.com/
curl -sI -H "Accept: */*" https://example.com/
curl -sI https://example.com/

आख़िर में -H "Accept: text/markdown, text/html;q=0.8" भेजिए। Markdown को जीतना चाहिए, क्योंकि उसका वज़न ज़्यादा है।

SEOgrinder इसे कैसे जाँचता है

स्कैन के बाद SEOgrinder में AI के लिए तैयारी टैब खोलिए। "AI एजेंट के लिए जाँचें" के नीचे सात पंक्तियाँ हैं। उनमें से तीन इस लेख से जुड़ी हैं, और तीनों "अतिरिक्त" समूह में हैं:

  • HTML के बजाय टेक्स्ट देना (Markdown Negotiation): तब पूरा माना जाता है जब Accept: text/markdown वाले अनुरोध को Markdown वापस मिले।
  • एजेंट को अपने डेटा तक पहुँचाना (Link Headers): रिस्पॉन्स हेडर में काम के संबंध ढूँढता है।
  • सामग्री के उपयोग की घोषणा (Content Signals): ऐसी पूरी Content-Signal पंक्ति ढूँढता है जो ai-train, search और ai-input तीनों को समेटे।

अधूरे बिंदुओं में एजेंट प्रॉम्प्ट कॉपी करें बटन सीधे पंक्ति में दिखता है। पूरे हो चुके बिंदुओं में यह बटन तभी दिखता है जब आप पंक्ति खोलते हैं, और साथ में वह टेक्स्ट भी दिखता है जो मिला। अधूरे बिंदु के लिए प्रॉम्प्ट बताता है कि क्या बनाना है, curl से मौजूदा हालत दिखाता है और नतीजा जाँचने की एक कमांड देता है। पूरे हो चुके बिंदु के लिए वह आपके कोडिंग असिस्टेंट से कहता है कि जो मौजूद है उसे जाँचे, सिर्फ़ वही बदले जो ज़रूरी है, और कोई ऐसा नियम हटाने से पहले आपसे पूछे जिसे वह समझ नहीं पाया। AI क्रॉलर को अनुमति देने या रोकने जैसे फ़ैसले आपके पास ही रहते हैं, और अधूरे बिंदुओं के कुछ प्रॉम्प्ट उदाहरण-मान सुझाते हैं, इसलिए पहले खुद तय कीजिए और प्रॉम्प्ट को Claude Code, Cursor, GitHub Copilot या ChatGPT में चिपकाने से पहले पढ़ लीजिए।

बदलाव के बाद दोबारा स्कैन के लिए दोबारा जाँचें दबाइए। रिपोर्टें अधिकतम 24 घंटे तक कैश में रहती हैं, और दोबारा जाँचें नया रन ज़बरदस्ती चलाता है (घंटे में कुछ ही बार)।

SEOgrinder "अतिरिक्त" समूह के बारे में साफ़ कहता है: ये अलग-अलग निर्माताओं के सुझाव हैं, और Google पर इनका असर साबित नहीं है। यह टूल यह भी नहीं मापता कि ChatGPT, Gemini या Perplexity आपके ब्रांड का नाम सचमुच लेते हैं या नहीं। वह तकनीकी बुनियाद जाँचता है: क्या मशीनें आपका पेज पा और पढ़ सकती हैं?

क्या मेहनत सार्थक है?

यह इस पर निर्भर है कि आपकी साइट क्या देती है। डॉक्यूमेंटेशन, संदर्भ पेज, लंबी गाइड और नॉलेज बेस उस तरह की सामग्री हैं जिसे एजेंट किसी ठोस सवाल का जवाब देने के लिए खोलते हैं, और वहाँ साफ़ Markdown रूप काम आता है। पाँच पेजों वाली छोटी दुकान या स्थानीय कारोबार के लिए समय बुनियादी चीज़ों पर लगाना बेहतर है: ऐसा टेक्स्ट जो JavaScript के बिना HTML में मौजूद हो, ऐसी robots.txt जो सर्च बॉट को अंदर आने दे, और एक sitemap।

Google के अपने AI फ़ीचर के बारे में Google कहता है कि AI Overviews या AI Mode में दिखने के लिए कोई अतिरिक्त शर्त नहीं है और कोई विशेष ऑप्टिमाइज़ेशन भी ज़रूरी नहीं; ब्योरा Google के दस्तावेज़ में है। इसलिए वहाँ Markdown रूप कोई शर्त नहीं है। दूसरे असिस्टेंट अलग बर्ताव कर सकते हैं, पर कोई यह वादा नहीं कर सकता कि कोई AI असिस्टेंट आपके पेज का हवाला देगा।

आम गलतियाँ

  • Vary हेडर न होना। Vary: Accept के बिना कोई कैश या CDN अगले विज़िटर को गलत रूप दे सकता है।
  • सामने लगा कैश, जो हेडर को अनदेखा करता है। जाँच सार्वजनिक पते से कीजिए, सिर्फ़ अपने मूल सर्वर से नहीं।
  • ब्राउज़र को Markdown देना। अगर आपकी जाँच वाइल्डकार्ड */* को Markdown की माँग मान लेती है, तो विज़िटर को कच्चा टेक्स्ट दिखेगा। किसी सामान्य ब्राउज़र से जाँचिए।
  • canonical लिंक न होना। तब Markdown रूप को अलग पेज की तरह गिना जा सकता है। हमने noindex की जगह canonical हेडर चुना, क्योंकि negotiation से मिला रूप उसी पते पर रहता है जिस पर पेज है।
  • ऐसा Markdown रूप जो कुछ और कहे। सामग्री वही रखिए जो HTML पेज पर है, बस ढाँचे के बिना। सर्च इंजन दोनों रूपों के अंतर को कैसे देखते हैं, इसका हमारे पास कोई स्रोत नहीं है, इसलिए दोनों को हूबहू एक जैसा रखिए।
  • पुरानी पड़ चुकी फ़ाइल। हाथ से लिखी index.md, जो पिछले साल की पेशकश गिनाती है, एजेंट को भटकाती है। उसे पेज के स्रोत से बनाइए, या अपनी जाँच-सूची में रखिए।
  • खाली HTML पेज। अगर HTML में JavaScript चलने तक कोई टेक्स्ट नहीं है, तो एजेंटों के लिए Markdown बाकी क्लाइंट की समस्या ठीक नहीं करता, जैसे सोशल प्रीव्यू। SEOgrinder ऐसे पेज बताता है जो सिर्फ़ ब्राउज़र में बनते हैं।

अक्सर पूछे जाने वाले सवाल

क्या AI एजेंट के लिए Markdown रैंकिंग फ़ैक्टर है?

इसका कोई सबूत नहीं है। इसे मशीनों के लिए एक डिलीवरी फ़ॉर्मेट मानिए, रैंकिंग का औज़ार नहीं।

क्या ChatGPT, Claude या Perplexity Markdown माँगते हैं?

Cloudflare लिखती है कि Claude Code और OpenCode जैसे कोडिंग एजेंट Accept: text/markdown पहले से भेजते हैं। बड़ी कंपनियों के सर्च क्रॉलर के बारे में ऐसा कोई दस्तावेज़ नहीं है कि वे इसे माँगते हैं; Cloudflare का Radar डेटा OAI-SearchBot को Markdown जवाब दिखाता है, जो अनुरोध के हेडर का सबूत नहीं है। इसलिए यह साबित नहीं है।

क्या मुझे Cloudflare चाहिए?

नहीं। Cloudflare यह रूपांतरण एक सुविधा के रूप में देती है (बीटा में, Pro, Business और Enterprise प्लान पर)। ऊपर का Node खाका दिखाता है कि सर्वर कोड की कुछ पंक्तियाँ काफ़ी हैं, और यही नियम किसी भी सर्वर या फ़्रेमवर्क में लगाए जा सकते हैं।

content negotiation इस्तेमाल करूँ या अलग .md पता?

आप दोनों कर सकते हैं। /index.md जैसे स्थायी पते पर लिंक करना और उसे जाँचना आसान है। negotiation दोनों तरह के पाठकों के लिए एक ही पता रखता है। seogrinder.com अपने होमपेज के लिए दोनों देता है।

क्या आम विज़िटर कभी Markdown रूप देखेंगे?

नहीं, अगर आप वाइल्डकार्ड वाला नियम मानते हैं: Markdown तभी जाता है जब text/markdown का साफ़ तौर पर नाम लिया गया हो और उसका वज़न text/html से कम न हो।

आपका अगला कदम

SEOgrinder में मुफ़्त स्कैन चलाइए और AI के लिए तैयारी टैब खोलिए। Markdown, Link Headers और Content Signals की तीन "अतिरिक्त" पंक्तियाँ देखिए और तय कीजिए कि आपकी साइट उन साइटों में आती है या नहीं जिन्हें एजेंट पढ़ते हैं। अगर आती है, तो एजेंट प्रॉम्प्ट कॉपी कीजिए, अपने असिस्टेंट से बदलाव करवाइए, नतीजा curl से जाँचिए और दोबारा स्कैन कीजिए।

ब्लॉग के और लेख