तकनीकी किताब को AI एजेंट स्किल में कैसे बदलें
PDF या EPUB फाइलों को AI एजेंट स्किल में बदलने का तरीका जानें। यह गाइड इंडेक्सिंग, टोकन बजट प्रबंधन, हेडलेस रन और MIT लाइसेंसिंग के साथ आपकी फाइलों को उपयोग योग्य बनाने में मदद करती है।
तकनीकी पुस्तक को एजेंट स्किल में बदलना: आपको क्या मिलता है
किसी तकनीकी पुस्तक को एजेंट स्किल में बदलने के लिए आप एक कनवर्टर को PDF, EPUB, DOCX एक्सपोर्ट या अपने पास मौजूद आंतरिक दस्तावेजों के फोल्डर की ओर निर्देशित करते हैं। यह एक स्किल डायरेक्टरी बनाता है: एक एंट्री फाइल जिसमें नामित फ्रेमवर्क और अध्यायों का इंडेक्स होता है, और प्रति अध्याय एक फाइल जिसे एजेंट केवल तब पढ़ता है जब आपका प्रश्न उसकी मांग करता है। पूरी पुस्तक कभी भी कॉन्टेक्स्ट विंडो में नहीं जाती है, केवल इंडेक्स जाता है।
यह शून्य से एजेंट स्किल लिखने के विपरीत कार्य है, जहाँ आप एक ऐसी प्रक्रिया को एनकोड करते हैं जिसे आप पहले से जानते हैं। यहाँ ज्ञान पहले से मौजूद है और कोई भी उस तक पहुँच नहीं सकता: जैसे 800-पृष्ठ की वेंडर PDF, या कोई हैंडबुक जिसे लिखने वाले व्यक्ति के जाने के बाद से किसी ने नहीं खोला है। यह कार्य संपीड़न (compression) और इंडेक्सिंग का है। यदि 'स्किल' शब्द आपके लिए नया है, तो पहले एजेंट स्किल वास्तव में क्या है पढ़ें।
यहाँ उपयोग किया गया कनवर्टर book-to-skill है, जो एक MIT-लाइसेंस प्राप्त स्किल है और आपकी अपनी मशीन पर चलता है। अगस्त 2026 तक का वर्तमान टैग v1.4.0 है। इसके द्वारा तैयार की गई संरचना टूल से अधिक महत्वपूर्ण है, और FAQ से पहले का अंतिम अनुभाग यह दिखाता है कि समान संरचना को मैन्युअल रूप से कैसे बनाया जाए।
टोकन बजट ही संपूर्ण डिज़ाइन का आधार क्यों है
किसी किताब को कॉन्टेक्स्ट विंडो में पेस्ट करने पर हर उस बातचीत में उसका पूरा आकार खर्च होता है जिसमें उसकी आवश्यकता होती है। एक स्किल के लिए उसकी एंट्री फाइल एक बार खर्च होती है, और उसके बाद केवल वे अध्याय खर्च होते हैं जिन्हें प्रश्न वास्तव में छूता है। प्रोजेक्ट प्रत्येक फाइल के लिए एक बजट निर्धारित करता है जिसे वह जेनरेट करता है।
The data behind this chart
[
{
"label": "SKILL.md entry file",
"tokens": "4,000"
},
{
"label": "One chapter file",
"tokens": "1,000"
},
{
"label": "glossary.md",
"tokens": "1,500"
},
{
"label": "patterns.md",
"tokens": "2,000"
},
{
"label": "cheatsheet.md",
"tokens": "1,000"
}
]एंट्री फाइल, SKILL.md, को 4,000 टोकन तक सीमित रखा जाता है और इसमें नामित फ्रेमवर्क और अध्याय सूचकांक (chapter index) शामिल होते हैं। प्रत्येक अध्याय फाइल लगभग 1,000 टोकन की होती है और डिस्क पर तब तक रहती है जब तक कोई उसे मांग न ले। सहायक फाइलें भी इसी तरह की हैं: glossary.md के लिए 1,500 टोकन, patterns.md के लिए 2,000 टोकन, और cheatsheet.md के लिए 1,000 टोकन।
ये बजट इस बात के अनुरूप हैं कि Claude Code वास्तव में कॉन्टेक्स्ट कैसे खर्च करता है। किसी स्किल की description स्किल लिस्टिंग में रहती है ताकि मॉडल को पता रहे कि स्किल मौजूद है। जब स्किल को इनवोक (invoke) किया जाता है तो उसकी बॉडी लोड होती है, और एक बार लोड होने के बाद यह सत्र के शेष भाग के लिए कॉन्टेक्स्ट में बनी रहती है, इसलिए एंट्री फाइल की हर लाइन एक आवर्ती लागत (recurring cost) है। सहायक फाइलें केवल तभी लोड होती हैं जब एजेंट उन्हें पढ़ता है, जो प्रति-अध्याय फाइलों को किफायती बनाता है।
उस एंट्री-फाइल संख्या के पीछे एक कठिन सीमा है। जब ऑटो-कॉम्पैक्शन एक लंबी बातचीत का सारांश तैयार करता है, तो Claude Code सारांश के बाद प्रत्येक स्किल के सबसे हालिया इनवोकेशन को फिर से जोड़ता है और प्रत्येक के पहले 5,000 टोकन को सुरक्षित रखता है, जो सभी पुनः-जुड़ी स्किल्स के लिए 25,000 टोकन के संयुक्त बजट के भीतर होता है। 5,000 टोकन के भीतर आने वाली एंट्री फाइल कॉम्पैक्शन के बाद भी पूरी तरह सुरक्षित रहती है। 20,000-टोकन वाली एंट्री फाइल का केवल पहला चौथाई हिस्सा ही वापस आता है, और कोई भी आपको यह नहीं बताता कि कौन से तीन चौथाई हिस्से गायब हो गए हैं।
यह प्रोग्रेसिव डिस्क्लोजर है: एक छोटा इंडेक्स जो हमेशा अपनी लागत के लायक होता है, और सामग्री का बड़ा हिस्सा उस दरवाजे के पीछे जिसे एजेंट जानबूझकर खोलता है। Claude Code अपनी कॉन्टेक्स्ट विंडो को कैसे मैनेज करता है उस अकाउंटिंग के बाकी हिस्सों को कवर करता है।
अपने VPS पर converter इंस्टॉल करें, एक release पर पिन करें
यह skill एक git repository है। इसे उस agent की skills directory में clone करें जिसका आप उपयोग करते हैं। directory का नाम ही slash command बन जाता है, इसलिए clone path को अपनी पसंद से न बदलें।
git clone --depth 1 --branch v1.4.0 \
https://github.com/virgiliojr94/book-to-skill.git \
~/.claude/skills/book-to-skill--branch एक tag स्वीकार करता है, इसलिए यह v1.4.0 को चेक करता है और उसके बाद के किसी भी बदलाव को नहीं। इसे पिन करें, क्योंकि एक skill उन निर्देशों का समूह है जिनका आपका agent पालन करता है, और उन निर्देशों में बिना समीक्षा किया गया कोई भी बदलाव आपके सर्वर पर चलने वाली चीज़ों में बदलाव है। GitHub Copilot CLI इसके बजाय ~/.copilot/skills/ को पढ़ता है, और Amp ~/.agents/skills/ को पढ़ता है।
एक one-line install, npx skills add virgiliojr94/book-to-skill भी उपलब्ध है, जो वर्तमान में जो भी उपलब्ध हो उसे fetch करता है। tool को आज़माने के लिए इसका उपयोग करें। जिसे आप बार-बार run करते हैं, उसके लिए pinned clone का उपयोग करें।
अब पुष्टि करें कि box में कौन से extractors हैं:
cd ~/.claude/skills/book-to-skill
python3 scripts/extract.py --check--check रिपोर्ट करता है कि कौन से extractors इंस्टॉल हैं और प्रत्येक missing extractor के लिए install command प्रिंट करता है। package के लिए Python 3.9 या उससे नया वर्ज़न आवश्यक है।
यदि clone करने के बाद autocomplete में /book-to-skill दिखाई नहीं देता है, तो अपने agent को restart करें। Claude Code उन skill directories को watch करता है जो session शुरू होने के समय मौजूद थीं, इसलिए दो मिनट पहले बनाई गई ~/.claude/skills/ अभी watch नहीं की जा रही है।
आपको वास्तव में किन extractors की आवश्यकता है?
Python के अलावा किसी और चीज की आवश्यकता नहीं है, क्योंकि प्रत्येक format के लिए standard-library fallback उपलब्ध है। Fallbacks का प्रदर्शन खराब होता है, और एक छोटे सर्वर पर उन extractors को इंस्टॉल करने में समय बर्बाद होता है जिनकी आपको आवश्यकता नहीं है।
pdftotext, जोpoppler-utilspackage का हिस्सा है, text-heavy PDFs को संभालता है और लगभग तुरंत काम करता है। इसेsudo apt install poppler-utilsके साथ इंस्टॉल करें।pypdfऔरpdfminer.six, PDF के लिए Python fallbacks हैं।doclingउन technical PDFs के लिए है जिनका मूल्य उनकी tables और code listings में होता है। यह प्रोजेक्ट प्रति पृष्ठ लगभग 1.5 सेकंड का समय लेता है।ebooklibऔरbeautifulsoup4, EPUB को सही ढंग से पढ़ते हैं। इनके बिना, टूल stdlibzipfilereader पर वापस चला जाता है।python-docx, DOCX को पढ़ता है औरstriprtf, RTF को पढ़ता है।- MOBI और AZW फाइलों के लिए Calibre का
ebook-convertआवश्यक है। ocrmypdf, स्कैन की गई किताबों पर OCR (optical character recognition) चलाता है, जिनमें कोई text layer नहीं होती।
Ubuntu 24.04 पर एक साधारण pip3 install pypdf इस त्रुटि के साथ रुक जाता है:
error: externally-managed-environmentयह pip का खराब होना नहीं है। Ubuntu और Debian सिस्टम Python को apt द्वारा प्रबंधित मानते हैं, इसलिए pip इसमें कुछ भी लिखने से मना कर देता है। दो समाधान काम करते हैं। sudo apt install poppler-utils एक binary इंस्टॉल करता है और इसमें pip की आवश्यकता नहीं होती, और pdftotext अधिकांश prose PDFs को स्वयं संभाल लेता है। Python extractors के लिए, एक virtual environment बनाएँ और अपने agent को उसके अंदर से शुरू करें, ताकि skill जिस python3 को कॉल करे, वह वही interpreter हो जिसमें packages मौजूद हैं।
python3 -m venv ~/.venvs/book-to-skill
source ~/.venvs/book-to-skill/bin/activate
pip install "$HOME/.claude/skills/book-to-skill[pdf,epub,docx]"
claudeRepository में extras pdf, epub, docx, rtf, technical और all घोषित किए गए हैं, जहाँ technical का अर्थ docling है। प्रोजेक्ट का install page pip install "book-to-skill[pdf,epub,docx]" भी दिखाता है, लेकिन अगस्त 2026 तक यह नाम PyPI पर प्रकाशित नहीं है, इसलिए ऊपर बताए अनुसार अपने स्वयं के checkout से इंस्टॉल करें।
docling को तब तक न छोड़ें जब तक किसी किताब के लिए इसकी आवश्यकता न हो। यह एक machine learning stack को इंस्टॉल करता है, इसलिए इसे इंस्टॉल करने से पहले छोटे प्लान पर उपलब्ध disk space की जाँच कर लें।
इसे दस्तावेजों के फोल्डर पर चलाएं, जिसमें हेडलेस मोड भी शामिल है
यह कमांड एक फाइल, एक फोल्डर, एक कोटेड ग्लोब (quoted glob), या एक साथ कई पाथ ले सकती है, जिसके बाद एक वैकल्पिक स्किल नाम दिया जा सकता है। आप एक डायरेक्टरी में जो कुछ भी रख सकते हैं, वह काम करता है, जिसमें RFC सेट (request for comments, वे दस्तावेज जो इंटरनेट प्रोटोकॉल को परिभाषित करते हैं) भी शामिल हैं।
/book-to-skill ~/library/platform-docs/ platform-handbook
/book-to-skill "~/books/*.epub" my-library
/book-to-skill ~/papers/paper1.pdf ~/notes/export.txt unified-researchग्लोब को कोट करें ताकि स्किल द्वारा देखे जाने से पहले आपका शेल इसे एक्सपैंड न करे। कमांड को किसी मौजूदा स्किल डायरेक्टरी पर पॉइंट करने से नए सोर्स उस स्किल में जुड़ जाते हैं, बजाय इसके कि एक दूसरी स्किल बनाई जाए।
एक इंटरैक्टिव रन आपसे सवाल पूछता है। क्या सामग्री तकनीकी है या टेक्स्ट-हैवी है, जो एक्सट्रैक्टर का निर्णय करता है। क्या आप रेफरेंस डेप्थ चाहते हैं या स्टडी डेप्थ, जो प्रति-चैप्टर बजट तय करता है। स्किल का नाम क्या होना चाहिए, और इसे किस स्किल रूट में जाना चाहिए। यह जनरेशन से पहले टोकन और समय का अनुमान भी प्रिंट करता है और आपके कन्फर्म करने का इंतजार करता है।
हेडलेस रन में उन सवालों के जवाब देने के लिए कोई नहीं होता। यूजर-इनवोकेबल स्किल्स claude -p में काम करती हैं: प्रॉम्प्ट स्ट्रिंग में स्लैश कमांड डालें और Claude Code रन शुरू होने से पहले इसे एक्सपैंड कर देता है। इसलिए उसी प्रॉम्प्ट में सवालों के जवाब दें।
claude -p "/book-to-skill ~/library/platform-docs/ platform-handbook
The sources are technical. Use reference depth. Write the skill to
~/.claude/skills/. Do not publish it to GitHub. Proceed without asking me." \
--allowedTools "Bash,Read,Write,Edit"--allowedTools रन के लिए आवश्यक टूल्स को पहले से अप्रूव कर देता है, क्योंकि बिना टर्मिनल अटैच किए परमिशन प्रॉम्प्ट वाला रन कभी पूरा नहीं होता। --output-format json जोड़ने से परिणाम में total_cost_usd शामिल हो जाता है, जो आपके बिल के बजाय क्लाइंट-साइड अनुमान होता है।
एक्सट्रैक्शन हर सोर्स को किसी भी मॉडल द्वारा पढ़े जाने से पहले /tmp के तहत एक अस्थायी वर्क डायरेक्टरी में समेकित करता है, और रन का अंतिम चरण उस डायरेक्टरी को डिलीट कर देता है। जो सोर्स एक्सट्रैक्ट होने में विफल रहता है उसे छोड़ दिया जाता है ताकि बैच सुरक्षित रहे, जिसका अर्थ है कि एक रन आपके द्वारा प्रदान की गई फाइलों से कम फाइलें पढ़कर भी सफलता की रिपोर्ट दे सकता है। अंतिम रिपोर्ट में फाइल इन्वेंट्री की तुलना फोल्डर में मौजूद फाइलों से करें। एक गायब चैप्टर आमतौर पर एक गायब सोर्स होता है।
रन को ऐसा सर्वर दें जिसे आप किसी एजेंट को सौंपने में सहज हों। VPS पर सुरक्षित रूप से Claude Code चलाना उस पक्ष की परमिशन को कवर करता है।
आउटपुट कहाँ जाता है ताकि आपका कोडिंग एजेंट उसे ढूँढ सके
तैयार किया गया skill एक skills root में सुरक्षित होता है। इनमें से दो महत्वपूर्ण हैं।
~/.claude/skills/<skill-name>/व्यक्तिगत है, और उस मशीन पर हर project में उपलब्ध रहता है।.claude/skills/<skill-name>/एक repository के अंदर रहता है और उसके साथ ही चलता है।
इनमें से किसी के भी अंदर आपको SKILL.md मिलता है, जो एक chapters/ directory है जिसमें हर chapter के लिए एक file और सहायक files होती हैं। directory का नाम ही command है, इसलिए ~/.claude/skills/platform-handbook/ आपको /platform-handbook देता है, और आप इसके बाद कोई topic या सामान्य प्रश्न लिख सकते हैं।
root का चुनाव सुविधा के बजाय लाइसेंसिंग के आधार पर करें। आपके द्वारा खरीदी गई पुस्तक से बनाया गया skill आपकी व्यक्तिगत directory में होना चाहिए। आपकी टीम द्वारा लिखी गई documentation से बनाया गया skill repository में होना चाहिए, जो कई repositories में एक skill साझा करने को हल करने वाली अगली समस्या बना देता है।
हर skill जोड़ने के साथ एक लागत बढ़ती है। हर skill का विवरण skill listing में रहता है ताकि model यह तय कर सके कि इसका उपयोग करना है या नहीं, संयुक्त विवरण text को प्रति entry 1,536 characters पर छोटा कर दिया जाता है, और पूरी listing का एक बजट होता है। दस पुस्तक skills का मतलब है कि दस विवरण इसके लिए प्रतिस्पर्धा कर रहे हैं। जिन्हें आप हमेशा नाम से पुकारते हैं, उनके लिए generated frontmatter में एक line जोड़ें:
---
name: platform-handbook
description: Frameworks and chapter index from the internal platform handbook.
disable-model-invocation: true
---disable-model-invocation: true के साथ विवरण पूरी तरह से context से बाहर रहता है, और जब आप /platform-handbook टाइप करते हैं तो skill अभी भी पूरी तरह से load हो जाता है। आप automatic discovery छोड़ देते हैं और आपको एक शांत context window मिलती है।
Licensing: MIT कन्वर्टर के लिए है, किताब के लिए नहीं
इस बारे में स्पष्ट रहें, क्योंकि यहाँ विफलता तकनीकी नहीं है।
- MIT license कन्वर्टर के कोड और उसकी skill definition को कवर करती है। यह उस दस्तावेज़ के बारे में कुछ नहीं कहती जिसे आप इसमें डालते हैं।
- आपके द्वारा खरीदी गई किताब पर, आपके नियंत्रण वाले हार्डवेयर पर कन्वर्टर चलाना, अपनी ही कॉपी से नोट्स बनाने जैसा है।
- परिणाम को प्रकाशित करना वितरण (distribution) है, और टूल पर मौजूद MIT license आपको किसी और की किताब से व्युत्पन्न (derived) किसी भी चीज़ को वितरित करने का अधिकार नहीं देती है।
- आउटपुट एक derivative work है। Frameworks और chapter takeaways अभी भी स्रोत (source) द्वारा आकारित होते हैं, और एक derivative work अभी भी स्रोत के कॉपीराइट द्वारा शासित होता है।
- ऐसी सामग्री से बनी skill जिसे आप पुनर्वितरित (redistribute) नहीं कर सकते, वह उसी मशीन पर रहनी चाहिए जिसने इसे बनाया है। न कि किसी public repository पर। न ही किसी shared team marketplace पर।
- तभी प्रकाशित करें जब स्रोत आपका हो या openly licensed हो: जैसे आपकी टीम द्वारा लिखा गया दस्तावेज़, या कोई मानक (standard) जिसकी शर्तें पुनर्वितरण की अनुमति देती हैं।
टूल इसी आधार पर बनाया गया है। यह कोई किताब सामग्री शिप नहीं करता, extraction स्थानीय रूप से चलता है, और इसका publish step repository visibility के लिए एक अलग प्रश्न पूछता है जो केवल public या private शब्द स्वीकार करता है, न कि किसी का अनुमान लगाता है। उस प्रॉम्प्ट को licensing निर्णय के रूप में मानें, क्योंकि वह वास्तव में वही है।
Internal handbooks के साथ एक दूसरी समस्या है। उनमें अक्सर लोगों के स्वीकार करने से कहीं अधिक credentials होते हैं, और एक कन्वर्टर ऐसी PDF को, जिसे कोई नहीं खोलता, एक ऐसी फ़ाइल में बदल देता है जिसे आपका agent मांग पर पढ़ता है। जनरेट की गई फ़ाइलों को commit करने से पहले एक बार पढ़ें, और देखें keeping secrets out of your AI agents।
एक कन्वर्जन की लागत क्या है?
नीचे दिए गए आंकड़े हमारे नहीं, बल्कि प्रोजेक्ट द्वारा स्वयं प्रकाशित किए गए माप हैं।
The data behind this chart
[
{
"label": "Think Python 2",
"cost_usd": 0.88
},
{
"label": "Working Backwards",
"cost_usd": 0.96
},
{
"label": "Pro Git",
"cost_usd": 1.23
},
{
"label": "Moby-Dick",
"cost_usd": 1.42
}
]प्रोजेक्ट द्वारा मापी गई 4 पुस्तकों में, एक कन्वर्जन की लागत 0.88 और 1.42 अमेरिकी डॉलर के बीच रही, जिसमें Pro Git की लागत 1.23 थी। इन आंकड़ों को Claude Sonnet 4.5 पर मापा गया था, जिसमें tiktoken से टोकन गणना के लिए cl100k_base का उपयोग किया गया था, और इन्हें अगस्त 2026 तक प्रोजेक्ट के docs/performance.md में प्रकाशित किया गया है। आपकी अपनी लागत आपके मॉडल और आपकी कीमतों के अनुसार बदल सकती है।
प्रोजेक्ट यह भी बताता है कि पूरी पुस्तक को कॉन्टेक्स्ट में पेस्ट करने की तुलना में, स्किल से किसी एक प्रश्न का उत्तर देने के लिए 24 से 51 गुना कम टोकन खर्च होते हैं। इसे एक वादे के बजाय बचत के स्वरूप के रूप में देखें, क्योंकि यह पुस्तक और प्रश्न पर निर्भर करता है। संरचनात्मक बिंदु दोनों ही स्थितियों में मान्य है: कन्वर्जन के लिए भुगतान एक बार किया जाता है, जबकि कॉन्टेक्स्ट डंप के लिए हर उस बातचीत में भुगतान करना पड़ता है जिसमें पुस्तक की आवश्यकता होती है।
PDF को पेस्ट क्यों न करें या RAG इंडेक्स क्यों न बनाएँ?
पेस्ट करना काम करता है, और यह एक दस्तावेज़ के बारे में एक प्रश्न के लिए सही उत्तर है। जब वही किताब मंगलवार को और फिर शुक्रवार को चाहिए होती है, तो यह सही उत्तर नहीं रह जाता, क्योंकि आप हर बार इसके पूरे आकार के लिए भुगतान करते हैं।
Retrieval, या RAG (retrieval augmented generation), क्वेरी के समय खोज करता है और आपके शब्दों से मेल खाने वाले अंश वापस देता है। यह तब प्रभावी होता है जब आपको सटीक वाक्य की आवश्यकता हो। यह तब कमजोर हो जाता है जब उपयोगी जानकारी एक अध्याय में फैला हुआ कोई framework हो, क्योंकि कोई भी एक अंश उसे समाहित नहीं करता। एक skill उस निष्कर्षण (extraction) को एक बार, कन्वर्जन के समय करती है, और अंशों के बजाय संरचना को स्टोर करती है।
ईमानदार सीमा: एक जनरेट की गई skill एक मॉडल द्वारा लिखा गया lossy सारांश है। यह एक अध्ययन सहायता है, और स्रोत अभी भी स्रोत ही है। जब सटीक शब्दावली का कानूनी या प्रोटोकॉल महत्व हो, तो PDF को रखें और उससे उद्धरण लें। MCP servers और rules files के मुकाबले Skills की तुलना इस बात को कवर करता है कि कौन सा दृष्टिकोण कहाँ उपयुक्त है।
विफलता के प्रकार और वे संदेश जो आपको दिखाई देंगे
स्कैन की गई PDF से कुछ भी प्राप्त नहीं होता है। एक्सट्रैक्टर शुरुआती पेजों में टेक्स्ट लेयर की जांच करता है और 400 पेजों की इमेज प्रोसेस करने के बजाय एक स्पष्टीकरण के साथ रुक जाता है। पहले ocrmypdf input.pdf output.pdf चलाएं, फिर आउटपुट फाइल को इसमें फीड करें।
pip इंस्टॉल करने से मना कर देता है। Ubuntu 24.04 पर error: externally-managed-environment सिस्टम Python की सुरक्षा के लिए होता है। ऊपर बताए गए virtual environment का उपयोग करें, या poppler-utils इंस्टॉल करें और pip को पूरी तरह छोड़ दें।
अध्याय (chapters) गलत तरीके से अलग हो रहे हैं। अध्याय का पता लगाने के लिए Chapter 7 जैसे स्पष्ट शीर्षकों और उनकी भाषा के प्रकारों को देखा जाता है। यदि किसी किताब में केवल साधारण सेक्शन टाइटल या रोमन अंक हैं, तो विभाजन सही नहीं होगा। इसका समाधान यह है कि आप रन को स्वयं बताएं कि अध्याय कहाँ से शुरू होते हैं, बजाय इसके कि आप सिस्टम के अनुमान पर निर्भर रहें।
कमांड मौजूद नहीं है। यदि ऑटो-कम्प्लीट में /book-to-skill नहीं दिख रहा है, तो इसका मतलब है कि स्किल्स डायरेक्टरी आपके सेशन शुरू होने के बाद बनाई गई थी। एजेंट को रीस्टार्ट करें।
Docling बहुत अधिक समय ले रहा है। लगभग 1.5 सेकंड प्रति पेज की दर से, एक लंबी किताब के लिए यह CPU का काफी समय लेता है। एक शेयर्ड सर्वर पर यह रन आपके द्वारा होस्ट की जा रही अन्य सभी सेवाओं के साथ प्रतिस्पर्धा करता है। जब रन कंटेंट टाइप के बारे में पूछे तो "text-heavy" उत्तर दें, या जब आप स्वयं scripts/extract.py चलाएं तो --mode text पास करें। --mode technical वह उत्तर है जो docling का चयन करता है।
कोई सोर्स चुपचाप गायब हो जाता है। जिस फाइल को पढ़ा नहीं जा सकता, उसे छोड़ दिया जाता है ताकि बैच पूरा हो सके। रन उन सोर्स की तुलना में कम सोर्स पर सफलता की रिपोर्ट देता है जो आपने उसे दिए थे, और यह केवल अंतिम रिपोर्ट की फाइल इन्वेंट्री में ही दिखाई देता है।
इसी पैटर्न को मैन्युअल रूप से लागू करें
यह टूल केवल सुविधा के लिए है। इसकी संरचना ही वह हिस्सा है जिसे कहीं भी इस्तेमाल किया जा सकता है, और एक टेक्स्ट एडिटर का उपयोग करके आप इसे अपनी किसी भी संदर्भ सामग्री (reference material) के लिए बना सकते हैं।
- एक एंट्री फाइल लिखें और उसे उन 4,000 टोकन्स के पास रखें जिन्हें कन्वर्टर टारगेट करता है। इसमें नामित कॉन्सेप्ट्स को उनके सटीक विवरण के साथ रखें, साथ ही एक इंडेक्स भी जोड़ें जिसमें प्रत्येक डिटेल फाइल और उस फाइल में शामिल टॉपिक्स की सूची हो।
- सामग्री को लगभग 1,000 टोकन्स वाली फाइलों में विभाजित करें। प्रत्येक फाइल में एक टॉपिक रखें और फाइल का नाम ऐसा रखें कि उसे पढ़ते ही पता चल जाए कि उसके अंदर क्या है।
- एंट्री फाइल से इन फाइलों में से प्रत्येक का वर्णन करें, उस वाक्य में जिसमें यह बताया गया हो कि इसे कब पढ़ना है।
स्टेप 3 वह है जिसे लोग अक्सर छोड़ देते हैं, और यही वह स्टेप है जो इस पैटर्न को प्रभावी बनाता है। एजेंट इंडेक्स को पढ़कर ही चुनता है कि कौन सी फाइल खोलनी है, इसलिए जिस फाइल का वर्णन इंडेक्स में नहीं होता, उसे एजेंट कभी नहीं खोलता। इंडेक्स ही मुख्य उत्पाद है, और चैप्टर फाइलें केवल स्टोरेज हैं।
एंट्री फाइल को कॉम्पैक्शन बजट के भीतर रखें, इससे पूरी संरचना लंबे सेशन के दौरान भी सुरक्षित रहती है। यह नियम तब भी लागू होता है चाहे फाइलें कन्वर्टर ने लिखी हों या आपने खुद।
FAQ
क्या मैं खरीदी गई किताब से बना स्किल पब्लिश कर सकता हूँ?
नहीं, जब तक कि उस किताब का लाइसेंस पुनर्वितरण (redistribution) की अनुमति न दे। कनवर्टर पर मौजूद MIT लाइसेंस केवल कनवर्टर के कोड पर लागू होता है, न कि उस सामग्री पर जिसे आप इसमें डालते हैं, और तैयार किया गया स्किल उस किताब का एक व्युत्पन्न कार्य (derivative work) है। इसे अपनी मशीन पर ~/.claude/skills/ में ही रखें। यदि दस्तावेज़ आपने स्वयं लिखे हैं या वे खुले लाइसेंस (openly licensed) वाले स्रोतों से हैं, तो उन्हें पब्लिश करना ठीक है। यह टूल आपसे रिपॉजिटरी की दृश्यता (visibility) के बारे में अलग से पूछता है और केवल public या private को ही स्वीकार करता है, ताकि यह निर्णय जानबूझकर लिया जाए।
क्या मुझे docling की आवश्यकता है, या pdftotext पर्याप्त है?
गद्य (prose) के लिए poppler-utils का pdftotext पर्याप्त है और यह लगभग तुरंत काम करता है। जब किताब का मूल्य उसकी तालिकाओं (tables) और कोड लिस्टिंग में हो, तब docling इंस्टॉल करें, क्योंकि एक साधारण टेक्स्ट एक्सट्रैक्टर इन्हें हटा देता है। इसमें गति का समझौता करना पड़ता है: यह प्रोजेक्ट docling की गति को प्रति पृष्ठ लगभग 1.5 सेकंड मापता है, इसलिए 300 पृष्ठों का मैनुअल VPS पर कई मिनट का CPU समय ले सकता है।
मेरे VPS पर pip 'externally-managed-environment' के साथ विफल क्यों होता है?
Ubuntu 24.04 और वर्तमान Debian सिस्टम Python को apt द्वारा प्रबंधित (managed) के रूप में चिह्नित करते हैं, इसलिए pip इसमें इंस्टॉल करने से इनकार कर देता है और error: externally-managed-environment प्रिंट करता है। python3 -m venv ~/.venvs/book-to-skill के साथ एक वर्चुअल एनवायरनमेंट बनाएँ, उसे सक्रिय करें, एक्सट्रैक्टर्स को वहाँ इंस्टॉल करें, और फिर उसी शेल से अपना एजेंट शुरू करें। स्किल python3 को कॉल करता है, इसलिए यह आपके PATH पर मौजूद किसी भी इंटरप्रेटर का उपयोग करता है, जो अब वर्चुअल एनवायरनमेंट वाला है।
मेरा जनरेट किया गया स्किल स्लैश कमांड के रूप में क्यों नहीं दिख रहा है?
इसके दो कारण हैं। कमांड का नाम डायरेक्टरी के नाम से आता है, इसलिए स्किल को ~/.claude/skills/<name>/SKILL.md या .claude/skills/<name>/SKILL.md में होना चाहिए, और SKILL.md की स्पेलिंग बिल्कुल वैसी ही होनी चाहिए। यदि पाथ सही है, तो एजेंट को रीस्टार्ट करें। Claude Code उन स्किल डायरेक्टरीज़ में किए गए बदलावों को पहचान लेता है जिन्हें वह पहले से देख रहा है, लेकिन सेशन शुरू होने के बाद बनाई गई स्किल्स डायरेक्टरी को वह बिल्कुल भी मॉनिटर नहीं करता है।