llms.txt, robots.txt और पेजों को मार्कडाउन के रूप में परोसना
एजेंट ब्राउज़र से अलग पढ़ते हैं। हर साइट उन्हें देती है: llms.txt, नाम वाली AI-क्रॉलर नीति, और हर पेज मार्कडाउन में।
किसी छोटे कारोबार के बारे में सुनने वाले लोगों का एक बढ़ता हिस्सा उसकी वेबसाइट कभी खोलेगा ही नहीं। वे किसी मॉडल से पूछेंगे, और मॉडल वही जवाब देगा जो वह पढ़ पाया।
इसलिए "क्या कोई एजेंट यह साइट पढ़ सकता है?" तकनीकी जिज्ञासा नहीं, वितरण का सवाल बन जाता है। इससे तीन बातें निकलती हैं, और यहाँ बनी हर साइट को तीनों बिना माँगे मिलती हैं।
robots.txt में AI क्रॉलर का नाम होना चाहिए
उनके बारे में कुछ न कहें तो वे User-agent: * पर लौट जाते हैं। यह कोई नीति नहीं, विरासत में मिला डिफ़ॉल्ट है।
इसलिए हम उनके नाम लिखते हैं। वे सर्च और उत्तर देने वाले एजेंट जो हवाले वापस भेजते हैं - OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot - और ट्रेनिंग क्रॉलर GPTBot, ClaudeBot, Google-Extended, meta-externalagent। हर एक को बिल्कुल वही Disallow सूची मिलती है जो बाकी सबको: किसी बॉट को API नहीं मिलता, और किसी को सिर्फ़-सदस्यों वाला पेज नहीं।
उनके नाम लिखना उदार होने के बारे में नहीं है। यह इस बारे में है कि नीति कहीं लिखी हो, जहाँ उसे सोच-समझकर बदला जा सके।
llms.txt विषय-सूची है, विज्ञापन नहीं
llms.txt का चलन सीधा है: एक शीर्षक, ब्लॉककोट में एक अनुच्छेद का सारांश, फिर लिंक वाले सेक्शन। इस पर पहुँचे मॉडल को एक ही फ़ेच में, बिना कुछ रेंडर किए, समझ आ जाना चाहिए कि यह साइट क्या है और ज़रूरी पेज कहाँ हैं।
हमारी llms.txt साइट की परिभाषा से बनती है, जो सुनने से ज़्यादा मायने रखता है। सूची उसी सार्वजनिक/निजी नियम से छनती है जिससे साइटमैप:
# Piekarnia Lune
> A sourdough bakery in Kraków. Bread baked daily, cakes to order,
> open from seven.
## Pages
- [Menu](https://...): What we bake, and what it costs.
- [Order a cake](https://...): Wedding and birthday cakes, two weeks' notice.एक सूची, तीन बार पढ़ी गई - साइटमैप द्वारा, llms.txt द्वारा और robots मेटा टैग द्वारा। तीनों के अलग होने का कोई रास्ता नहीं, क्योंकि सिंक में रखने को कुछ है ही नहीं।
हर पेज, मार्कडाउन में
ग़लत पढ़े जाने का सबसे तेज़ तरीका है पाठक से तीन वाक्य ढूँढने के लिए लेआउट भरा पेज पार्स करवाना। इसलिए हर बनी साइट का हर पेज HTML के साथ-साथ मार्कडाउन में भी जवाब देता है:
Accept: text/markdownभेजें और उसी URL पर पेज मार्कडाउन में मिलता है।- या पाथ में
.mdजोड़ें, उन कई एजेंटों के लिए जो नेगोशिएट नहीं करते।
इसे ईमानदार रखने वाले नियम बताने लायक हैं। यह रीराइट है, रीडायरेक्ट नहीं। यह सिर्फ़ साफ़ text/markdown अनुरोध पर होता है, */* पर कभी नहीं - "कुछ भी" भेजने वाला ब्राउज़र पेज चाहता है। दोनों जवाबों में Vary: Accept होता है, ताकि साझा कैश एक ही बॉडी सबको न परोसे। और मार्कडाउन संस्करण noindex है, इसलिए वह अपनी ही मूल पेज से सर्च में होड़ नहीं करता।
सीरियलाइज़र रेंडर किए HTML को नहीं, साइट की परिभाषा को पढ़ता है, इसीलिए नतीजा साफ़ आता है: फ़ीचर्स सेक्शन सूची बन जाता है, FAQ शीर्षक और जवाब, और दाम की तालिका एक तालिका। नक्शा या बुकिंग कैलेंडर एक ईमानदार पंक्ति बन जाता है जो बताती है कि वहाँ क्या है, बजाय इसके कि वह जो दिखाता उसकी कल्पना गढ़े।
यह हम पर भी लागू होता है
यह पोस्ट उसी URL पर अंत में .md जोड़कर उपलब्ध है। crea.site का हर दूसरा पेज भी, और हमारी अपनी llms.txt उन्हें सूचीबद्ध करती है।
जिस वेबसाइट बिल्डर के अपने पेज कोई एजेंट पढ़ न सके, वह अपने ही ख़िलाफ़ दलील दे रहा है।