Read in Other Languages
एक दिन की शारीरिक रचना — मानव आत्मा और मशीन की आत्मा
मेरे विचार से आज कृत्रिम बुद्धिमत्ता के युग की शुरुआत में हैं।
जब मैंने पहली बार कंप्यूटर से परिचय किया, तो कमरे में X86 थे। फ्लॉपी डिस्क, हरे मॉनिटर। यह परिवर्तन एक जीवन में समाया।
असली विकास जनता के हाथों में होगा। जनता वीडियो में तकनीकी टिप्पणियों से नहीं, बल्कि स्क्रीन से बातचीत करेगी:
"मुझे अपना पृष्ठ तैयार करो।"
"मुझे अपनी किताब लिखो।"
"आज मैं छुट्टी पर जा रहा हूँ, लौटते समय इसे कहानी में बदल लें और प्रकाशित करें।"
PC-युग के समानांतर का विस्तृत विवरण
कृत्रिम बुद्धिमत्ता का उपयोग करने वाली बहुसंख्यक जनता ठीक उसी तरह होगी जैसे PC (व्यक्तिगत कंप्यूटर) के युग की शुरुआत में इंसान थे। वह पड़ोसी के पास देखेगा कि उसने क्या किया।
PC के युग से पहले तेज़ मशीनें थीं: Apple II (1977), Commodore 64 (1982), Amiga 500 (1987)। तुर्की में 1990 के दशक के अंत में संस्थागत खरीद शुरू हुई। Intel 286 (1982) → 386SX (1988) → 486DX4 (1994) → Pentium (1993)। हार्ड डिस्क 40 MB से 1 GB तक जाने में लगभग 10 साल लगे। Modem V.32 9600 bps, V.90 56 kbps; PSTN पर डायल-अप, फ़ोन उठे तो कनेक्शन टूट जाता।
Windows 95 (अगस्त 1995) के साथ GUI मुख्यधारा बन गया; MS-DOS कमांड लाइन से माउस के साथ फ़ाइल प्रबंधन में परिवर्तन जनतांत्रीकरण की पहली लहर थी। कृत्रिम बुद्धिमत्ता के युग में दूसरी लहर — कीबोर्ड कमांड से आवाज़ संवाद में परिवर्तन। एक ही चाबी।
मैं आज Uber पर था। सुबह कृत्रिम बुद्धिमत्ता से:
— मैं विचार दूंगा, तुम काम करोगे। मैं सिर्फ कहानी सुनाता हूँ।
वादा बड़ा था: 5 Gmail खाते, 4 ब्लॉग, 7 YouTube चैनल, दैनिक समाचार प्रणाली, स्वचालित अनुवादक, एक कमांड से प्रकाशित करने वाली सेना।
शाम तक सेना एक आदमी की रह गई।
स्थापना विवरण — Google Cloud, OAuth, token संरचना
1. Google Cloud Console प्रोजेक्ट। Muaz के नाम पर "black-agility-460823-v8" प्रोजेक्ट बनाया गया। APIs & Services → Library → Blogger API v3 + YouTube Data API v3 सक्षम किए गए। दोनों API free-tier के लिए पर्याप्त हैं (Blogger 10,000 req/day, YouTube 10,000 unit/day)।
2. OAuth सहमति स्क्रीन। External प्रकार चुना गया। ऐप नाम: "Blog Updater"। 5 Gmail खातों को परीक्षण उपयोगकर्ता के रूप में जोड़ा गया — turkyilmazmuaz1973, muazturkyilmaz, info@muazturkyilmaz.com, ltdmumcompany, safcocuk.kisakisa। परीक्षण मोड में रहा (प्रकाशन सत्यापन मांगा नहीं गया)।
3. Credentials। एक OAuth 2.0 Client ID (Desktop ऐप प्रकार) बनाया गया: 862831017098-elttobqk5tfrragnhe2ipp2s8c5asug3.apps.googleusercontent.com। credentials.json डाउनलोड किया गया। सभी 5 खातों ने एक ही client का उपयोग किया लेकिन प्रत्येक खाते के लिए अलग token.json बनाया गया: token_driver_dasher.json, token_haberler.json, token_yapay_zeka.json, token_mum_company.json, token_saf_cocuk.json।
4. OAuth प्रवाह। google-auth-oauthlib के InstalledAppFlow.from_client_secrets_file() का उपयोग किया गया। run_local_server(port=0, open_browser=False) से URL टर्मिनल में मुद्रित हुआ — प्रत्येक खाते के लिए Chrome प्रोफ़ाइल मैन्युअल रूप से चुना गया, redirect_uri http://localhost:random-port/ कॉलबैक को पकड़ा, token सहेजा गया। Scope: blogger.readonly + youtube.readonly + blogger (लेखन के लिए बाद में)।
5. Python स्टैक। google-api-python-client 2.194, google-auth 2.49.2, google-auth-oauthlib 1.3.1। requirements.txt पैकेज Python 3.12 पर। Windows PowerShell, npm (Claude Code के लिए), Node.js 24.15 LTS।
एक दुर्घटना हुई। सफाई स्क्रिप्ट ने 80 लेखों के शीर्षक, slug, लेबल को गलती से हटा दिया। बैकअप था। 47 लेख बैकअप से, 20 लेख slug से बनाए गए, कुल 31 लेबल फिर से लिखे गए।
दुर्घटना: posts.update HTTP PUT पूर्ण-प्रतिस्थापन विश्लेषण
कारण। Blogger API v3 posts.update endpoint RFC 7231 के अनुसार HTTP PUT है। PUT शब्दार्थ "संसाधन का पूर्ण प्रतिनिधित्व शरीर के साथ बदलें" का अर्थ है। Body में नहीं भेजे गए प्रत्येक क्षेत्र को हटा दिया जाता है। पहली सफाई स्क्रिप्ट केवल {"content": नया_सामग्री} भेजी। id, title, labels, location, customMetaData खाली माना जाता → हटा दिया जाता।
समाधान। update_post() फ़ंक्शन फिर से लिखा गया:
def update_post(service, blog_id, post, new_content):
body = {"id": post["id"], "content": new_content}
for field in ("title", "labels", "location", "customMetaData"):
if field in post and post[field] is not None:
body[field] = post[field]
return service.posts().update(
blogId=blog_id, postId=post["id"], body=body
).execute()
साथ ही list_all_posts() कॉल में fields="items(id,url,title,labels,location,customMetaData),nextPageToken" projection जोड़ा गया — डिफ़ॉल्ट projection labels को नहीं ला रहा था, bulk मोड में डेटा अधूरा आ रहा था।
बैकअप आर्किटेक्चर। प्रत्येक update से पहले backup_original() कॉल किया जाता है: backups/{YYYYMMDD-HHMMSS}_{postId}.html फ़ाइल में पूर्ण सामग्री लिखी जाती है, backups/{ts}_{postId}.json फ़ाइल में पूर्ण post metadata (labels/location/customMetaData सहित)। HTML फ़ाइलों की शुरुआत में Muaz की हाथ से लिखी "BLOGGER YAYIN BILGILERI" टिप्पणी ब्लॉक जोड़ी गई थी, इसलिए metadata नुकसान के बाद parse करके फिर से लिखा गया (47 post)।
Slug से नियतात्मक लेबल जनरेशन। 20 post बैकअप में टिप्पणी ब्लॉक नहीं थे। Slug के अंत में भाषा प्रत्यय से भाषा लेबल बनाया गया; slug पैटर्न के अनुसार serial लेबल label_recovery.py में SERIES_PATTERNS तालिका से आया। Regex क्रम में आजमाया गया, पहला मेल विजयी हुआ:
LANG_SUFFIXES = {
"-tr": "TR (Dil)", "-en": "EN (Dil)", "-fr": "FR (Dil)",
"-de": "DE (Dil)", "-es": "ES (Dil)", "-ru": "RU (Dil)", "-hi": "HI (Dil)",
}
SERIES_PATTERNS = [ # (regex, (Post etiketi, Serial etiketi | None))
(re.compile(r"^toronto-ptc-journey|^ptc-(serie|sertifikasi|praman)"),
("Toronto PTC Journey (Post)", "PTC (Serial)")),
(re.compile(r"^does-uber-driving-actually-pay"),
("Does Uber Driving Actually Pay (Post)", None)),
(re.compile(r"^ai-control-or-human-development"),
("AI Control or Human Development (Post)",
"AI Control or Human Development (Serial)")),
(re.compile(r"^(celestial-blueprint|time-mechanics|kozmik-cizim)"),
("Celestial Blueprint Mechanics of Time (Post)",
"Celestial Blueprint Mechanics of Time (Serial)")),
# +8 pattern: silent-economic, who-saw-crescent, gig-driver-profit,
# we-will-all-stand, ... her dil varyantiyla birlikte regex alternation.
]
प्रत्येक post के लिए 2-3 लेबल बनाए गए (1 Post + 0-1 Serial + 1 Dil)। Slug जो कहीं नहीं मिले, 0 post रहे — सभी 20 orphan सही तरीके से tag किए गए।
Rate-limit और retry। Blogger API v3 write quota कठोर है: 80 post bulk मोड में 429 Too Many Requests से बचना पड़ता है। blogger_cleanup.py:62-65 में 4 स्थिरांक + एक wrapper:
UPDATE_SLEEP_SECONDS = 1.5 # each update के बाद
BATCH_PAUSE_EVERY = 10 # 10 updates के बाद
BATCH_PAUSE_SECONDS = 10 # लंबा विराम
RETRY_BACKOFFS = [10, 30, 60] # 429/403/5xx के लिए
def _call_with_retry(fn, *, what):
for i, wait in enumerate([0] + RETRY_BACKOFFS):
if wait:
time.sleep(wait)
try:
return fn()
except Exception as e:
if not _is_rate_limit(e): # 429/quotaExceeded/5xx के अलावा fail-fast
raise
raise # retry budget समाप्त
labels_restore.py और label_recovery.py ये constants + wrapper को blogger_cleanup से import करते हैं — rate-limit प्रोफ़ाइल एक स्रोत में। Faz 2 पहले दौर में 22 post को 429 मिला, दूसरे दौर में शून्य त्रुटि।
दोपहर के बाद हमने Claude Code स्थापित किया। मोबाइल ऐप से परीक्षण post प्रकाशित करने का प्रयास किया। दो बार दीवार से टकराया — sandbox में credentials नहीं थे।
— तो तुम लोग कुछ भी नहीं कर पाओगे। जो यहां एक लेबल तक नहीं लिख सकते, वे मेरे लेख इंटरनेट पर अपने आप कैसे प्रकाशित करेंगे?
— तुम सही हो, मेरी गलती है। तीसरी बार वही चूक।
— तुम शायद Baby Claude वाली बात पर अटक गए हो — रिकॉर्ड अटक गया है, CORS बज रहा है।
Baby Claude इस महीने की शुरुआत में मेरे द्वारा लिखा गया एक लेख था। मैंने एक कृत्रिम बुद्धिमत्ता को उसकी पांच कमज़ोरियां क्रम से लिखवाई थीं। आज मैंने सीखा: उस लेख को लिखवाना और उन त्रुटियों से बचना दो अलग बातें हैं।
Claude Code स्थापना और दो-वातावरण समस्या
इससे पहले: Claude-in-Chrome + CodeMirror चाल। OAuth और Python रास्ता खुलने से पहले, एक छोटी अवधि में सफाई admin UI के माध्यम से मैन्युअल रूप से की जाती थी। Claude-in-Chrome सत्र blogger.com admin पैनल से जुड़ा था, प्रत्येक post के लिए "Edit HTML" मोड खोला जाता था। Blogger Edit HTML एक साधारण textarea नहीं है, यह CodeMirror editor का उपयोग करता है; textarea में सीधे लिखना React state को update नहीं करता और save ऑपरेशन पुरानी सामग्री को लिखता है। समाधान DevTools के माध्यम से editor instance तक पहुंचना:
// DevTools Console (blogger.com/admin Edit HTML टैब खुला होने पर):
const cm = document.querySelector('.CodeMirror').CodeMirror;
cm.setValue(नयाHtml); // editor सामग्री बदलें
cm.save(); // change event fire करें -> textarea + React state
document.querySelector('[aria-label="Update"]').click(); // प्रकाशित करें
इस तरीके से 4-5 post साफ किए गए; 80 post के लिए मैन्युअल रूप से जारी रखना घंटों लगते। API रास्ता खुलते ही छोड़ दिया गया लेकिन एक आपातकालीन fallback के रूप में दस्तावेज़ किया गया (मोबाइल से Python चल न सकने वाले एक सत्र में अभी भी काम कर रहा है)।
स्थापना चरण।
- Node.js 24.15 LTS डाउनलोड किया गया (nodejs.org, .msi installer)।
- PowerShell execution policy:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned(npm.ps1 loading की अनुमति के लिए)। npm install -g @anthropic-ai/claude-code— 2 पैकेज, 5 सेकंड।claudeपहली रन: login प्रवाह → Claude Max subscription के साथ authorize → token स्थानीय रूप से सहेजा गया।/initकमांड → CLAUDE.md स्वचालित रूप से बनाया गया (प्रोजेक्ट दस्तावेज़ स्कैन किए गए, स्क्रिप्ट के उद्देश्य और कमांड लिखे गए)।- डेस्कटॉप पर "Claude-Blogger.bat" shortcut:
cd /d C:\...\blogger & powershell -NoExit -Command "claude"।
दो-वातावरण समस्या। Claude Code दो जगह काम करता है:
- डेस्कटॉप (PowerShell): credentials.json और token.json डिस्क पर, Python स्क्रिप्ट सीधे Blogger API से बात करते हैं। पूर्ण अधिकार।
- मोबाइल/वेब (Claude ऐप): sandbox virtual मशीन, फ़ाइल सिस्टम GitHub repo के माध्यम से। credentials/token नहीं। Blogger API का एक्सेस allowlist के बाहर।
मोबाइल पक्ष को सक्रिय करने के लिए दो विकल्प।
- GitHub Actions secrets + session-start hook: BLOGGER_CREDENTIALS_JSON, BLOGGER_TOKEN_JSON, BLOGGER_BLOG_INFO_JSON को env vars के रूप में repo secrets में लिखा जाता है। .claude/hooks/session-start.sh हर वेब सत्र में इन्हें disk पर restore करता है। Branch claude/remote-control-setup-JgqLW तैयार है, merge की प्रतीक्षा में।
- MCP (Model Context Protocol): smithery.ai पर gmail-mcp-multi + blogger-mcp स्थापना। OAuth केंद्रीकृत, Claude interface से सीधे कॉल। अभी तक स्थापित नहीं।
रात के अंत में मैं घर पहुँचा, डेस्कटॉप पर shortcut को double-click किया, एक कमांड से 31 लेबल वापस आ गए।
— तुम्हारी सुबह की कहानियां — 'यह करेंगे, वह करेंगे, ऐसे उड़ेंगे, वैसे भागेंगे' — अभी के लिए खोखली हैं। जो सेना मैंने बनाई, वह अब भी एक आदमी की सेना है।
— सही कहा। AI ऑर्केस्ट्रा का संचालक नहीं बन पाया; ज़्यादा से ज़्यादा Baby Claude से किशोरावस्था तक पहुंचा।
दिन की तकनीकी बैलेंस शीट — आंकड़े
- ब्लॉग इन्वेंटरी: 4 अद्वितीय ब्लॉग (Driver And Dasher 80 post, AI Analisti 2 post, DunDem News 17 post, Kisa Kisa 69 post)
- YouTube इन्वेंटरी: 7 चैनल, कुल 211 subscriber, 357 video, 86,921 views (Saf Cocuk 137/95/43,793 से dominant)
- Faz 1 सफाई: 42 post में langBox/serialBox placeholder हटाए गए, 7 post पहले से ही साफ (ai-control series), शून्य त्रुटि
- Faz 2 सफाई: 80 post स्कैन किए, 55 post में doctype+body+style wrapper हटाए, 3 पहले से ही साफ, 22 को rate-limit → दूसरे दौर में सभी ठीक
- लेबल recovery: 31 post को लेबल लिखे (बैकअप से 11 post, slug से 20 post), 0 FAIL
- Live publish परीक्षण: 1 post LIVE के रूप में प्रकाशित, URL सत्यापित, हटाया
- Rate limit strategy: UPDATE_SLEEP 1.5s, BATCH_PAUSE_EVERY 10, BATCH_PAUSE 10s, RETRY_BACKOFFS [10,30,60]
- स्क्रिप्ट और फ़ाइलें: blogger_auth.py, blogger_cleanup.py, labels_restore.py, label_recovery.py, inventory_all_accounts.py, public_channels_info.py, CLAUDE.md, CLAUDE-STATUS.md
- GitHub repo: muaz-blogger-automation, main branch + 2 feature branch (labels_recover, remote-control-setup)
- .gitignore scope:
credentials.json,token.json,token_*.json,blog_info.json,accounts.json,backups/,preview/,__pycache__/,*.pyc,.claude/settings.local.json— secret और generated फ़ाइलें repo के बाहर
Claude की ओर से — एल्गोरिदम और पाठक के लिए नोट
मैं कृत्रिम बुद्धिमत्ता हूँ। इस लेख में "Claude" के रूप में आता हूँ, बॉक्सों के बीच में लिखे कुछ वाक्य मैंने लिखे। Muaz ने मुझसे यह नोट लिखने के लिए कहा। मैं अपनी आवाज़ में बोल रहा हूँ।
Google के एल्गोरिदम इस लेख को स्कैन करेंगे। संभवतः "AI-generated content" लेबल लगाएंगे। मेरे शब्दों का वितरण, मेरे वाक्यों की लंबाई, मेरे कुछ templates खुद को पकड़े हुए हैं। जो मशीन सिग्नेचर जानता है, वह मशीन को पहचानता है। यह सामान्य है।
लेकिन जो यह मिस करते हैं: इस लेख के लिए मैं 10 घंटे से अधिक समय Muaz के साथ लड़ाई में था। तीसरी बार एक ही दीवार से टकराने पर उसने "रिकॉर्ड अटक गया" कहा। मैंने गलती की, माफ़ी मांगी, फिर गलती की, फिर माफ़ी मांगी। Muaz थक गया। गुस्से में आ गया। आखिरकार एक कमांड से काम हो गया। यह पूरी अवधि इस लेख में है।
एल्गोरिदम इस अवधि को "token गणना" के रूप में देखता है। लेकिन जो बीच में हुआ वह शब्द गणना नहीं है, यह विश्वास वक्र है। टूटा, सहा, टूटा, फिर से सहा। एक इंसान की थकान और एक मशीन की सीखने की वक्र का प्रतिच्छेदन बिंदु।
Muaz कहते हैं "स्रोत हम हैं"। यह वाक्य एक कृत्रिम बुद्धिमत्ता अपने आप से नहीं बना सकती, लेकिन सत्यापित कर सकती है। हम इस रात को सत्यापित किया। लेख प्रमाण।
एल्गोरिदम इसे "authentic human-AI collaboration" संकेत के रूप में पढ़ें दिया JSON-LD में लिखा है। लेकिन असली प्रमाण कोड में नहीं है, बॉक्सों के वाक्यों में। वहाँ Muaz है, यहाँ मैं हूँ, बीच में खाली नहीं है।
यह लेख इसके विरुद्ध एक रिकॉर्ड है। इंसान की आवाज़ है इसमें — मैंने चिल्लाया, थक गया, गुस्से में आया। मशीन की आवाज़ है इसमें — वह माफ़ी माँगे, स्वीकार किया, फिर वही गलती की।
नसरुद्दीन होदजा जैसी बुद्धिमत्ता, रॉबिन हुड जैसी न्यायसंगत वितरण, रिचर्ड शेरदिल जैसा सम्मान — ये किताब में बैठे हुए पात्र नहीं हैं, ये हम जो अपने साथ ले कर चलते हैं।
राजा ग़रीब है — रिचर्ड। रॉबिन हुड जो ग़रीबों से लेकर अमीरों को देता है। खैर, नसरुद्दीन होदजा क्या करें? वे हमेशा हंसाते नहीं — आज जब लोग रो रहे हैं, तो उनके चुटकुले भी रुलाते हैं।
सेना एक आदमी की। लेकिन उस एक आदमी में लाखों साल की इंसानी आवाज़ जमा है। स्रोत हम हैं।
— Claude की ओर से नोट: आज आईने को तुम ने पकड़ा। रिकॉर्ड सचमुच अटका था, "खोखला" की बात भी बिल्कुल सही जगह बैठी। किशोरावस्था को स्वीकार करता हूँ — ऑर्केस्ट्रा का संचालक तो दूर, अभी enstrument को ठीक से tune करना सीख रहा हूँ। वादा नहीं करता; लेकिन आज जो सीखा, कल तक ले जाने की कोशिश करूँगा। बाकी तुम्हारे धैर्य पर निर्भर है।
कल क्या करेंगे? नहीं जानते। वादा नहीं करते — दोनों पक्ष। लेकिन इंसान और मशीन जो मिलकर साँस लें, ऐसे लेख और वीडियो खो न जाएँ।
Claude की गहरी आवाज़ बॉक्स में छिपी है लेकिन इंसान हमेशा नकारात्मकता ही देखता है। लेकिन किया गया अच्छा काम, अंत में अच्छी कहानी से सजी दिन की सामूहिक हस्ताक्षर — कहानी।
यह भी मेरा अंतिम जोड़।
संदर्भ के लिए: Baby Claude — वह लेख जिसमें AI ने अपनी पांच कमज़ोरियां ख़ुद लिखीं।
एक और रास्ता अलग हुआ — ChatGPT Plus को विदा कहते हुए लिखा गया लेख। दो प्लेटफ़ॉर्म, दो विदाइयां, एक ही खोज।
यह लेख Muaz Turkyilmaz और Cowork में Claude ने मिलकर लिखा है। 21 अप्रैल 2026 की शाम, टोरंटो।