व्हिडिओ URL कॅनोनिकलायझेशन (Canonicalization) पाइपलाइन तयार करणे
मी माझ्या प्रोडक्शन SQLite डेटाबेसवर एक क्वेरी चालवली आणि मला एक मोठी समस्या आढळली.
'videos' टेबलमध्ये ४१,२८३ रो (rows) होत्या, परंतु फक्त २९,००० युनिक (unique) शीर्षके होती. आम्ही एकाच व्हिडिओची माहिती वारंवार साठवत होतो.
हे का घडले? तोच YouTube व्हिडिओ वेगवेगळ्या URL फॉरमॅटमध्ये येत होता:
• शॉर्ट लिंक्स: youtu.be/ID • डेस्कटॉप लिंक्स: youtube.com/watch?v=ID • मोबाईल लिंक्स: m.youtube.com/watch?v=ID • शॉर्ट्स: youtube.com/shorts/ID
एका व्हिडिओचा अर्थ डेटाबेसमध्ये चार रो आणि चार जवळजवळ सारख्या वेब पेजेस असा होता. यामुळे माझा क्रॉल बजेट (crawl budget) वाया गेला आणि Google Search Console मध्ये त्रुटी (errors) दिसून आल्या.
मी TrendVidStream चालवतो. आम्ही आठ वेगवेगळ्या क्षेत्रांतून ट्रेंडिंग डेटा गोळा करतो. प्रत्येक क्षेत्रात तोच व्हायरल व्हिडिओ वेगवेगळ्या URL स्वरूपात समोर येऊ शकतो.
मी PHP 8.4 आणि SQLite वापरून हे सुधारण्यासाठी एक पाइपलाइन तयार केली.
ही पाइपलाइन कशी काम करते ते खाली दिले आहे:
- एक्सट्रॅक्ट (Extract): कोणत्याही URL व्हेरिएंटचे रूपांतर एका स्थिर ११-अक्षरी व्हिडिओ ID मध्ये करा.
- नॉर्मलाईज (Normalize): त्या ID वरून एकच कॅनोनिकल (canonical) URL तयार करा.
- व्हॅलिडेट (Validate): डेटाबेसमध्ये बदल करण्यापूर्वी जलद तपासणी करा.
- अपसर्ट (Upsert): नवीन रो जोडण्याऐवजी डेटा मर्ज करण्यासाठी SQLite UPSERT वापरा.
- एमिट (Emit): कॅनोनिकल टॅग्स आणि 301 रिडायरेक्ट्स जोडा जेणेकरून सर्च इंजिनला एकच URL मिळेल.
महत्त्वाचे तांत्रिक निर्णय:
• अचूक होस्ट अलाऊलिस्ट (allowlist) वापरा. सफिक्स मॅचिंग (suffix matching) वापरू नका. यामुळे सुरक्षा धोके टाळता येतात. • ID कधीही लोअरकेस (lowercase) करू नका. YouTube IDs केस-सेन्सिटिव्ह (case-sensitive) असतात. त्यांना लोअरकेस केल्यास वेगवेगळे व्हिडिओ एकत्र मिसळले जाऊ शकतात. • video_id वर UNIQUE कन्स्ट्रेंट (constraint) वापरा. डुप्लिकेट्सपासून वाचण्यासाठी हा तुमचा सर्वात मजबूत बचाव आहे. • SQLite WAL मोड वापरा. यामुळे डेटा लिहिण्याची प्रक्रिया (writes) जलद आणि विश्वसनीय होते.
परिणाम:
आमचे व्हिडिओ टेबल ४१,२८३ रो वरून २८,०९४ रो वर आले. आम्ही एकही व्हिडिओ गमावला नाही. Google Search Console मधील त्रुटी ४१२ वरून ९ वर आल्या. सर्च रिझल्ट्स अधिक स्पष्ट झाले कारण आम्ही तोच व्हिडिओ चार वेळा दाखवणे थांबवले.
धडा साधा आहे: जेव्हा तुम्ही अनेक स्रोतांकडून डेटा एकत्रित करता, तेव्हा प्रथम तुमच्या सिस्टममध्ये 'आयडेंटिटी' (identity) तयार करा. एक स्थिर ID एक्सट्रॅक्ट करा, डेटाबेस कन्स्ट्रेंट्सद्वारे त्याची अंमलबजावणी करा आणि प्रत्येक 'राईट' (write) आयडेम्पोटेंट (idempotent) बनवा.
तुम्हाला जटिल साधनांची गरज नाही. PHP आणि SQLite पुरेसे आहेत.
