മിക്ക ഡെവലപ്പർമാരും ബ്രൗസറിൽ കാണാൻ തികച്ചും മികച്ച രീതിയിൽ ഒരു ഫീച്ചർ പുറത്തിറക്കിയ ശേഷം കഠിനാധ്വാനം അവസാനിച്ചു എന്ന് കരുതാറുണ്ട്. എന്റെ Django ഫുഡ് ബ്ലോഗ് നിർമ്മിക്കുമ്പോൾ ഞാനും ഇതേ തെറ്റ് ചെയ്തു. റെസിപ്പികൾ കൃത്യമായി കാണിക്കപ്പെട്ടു. ഡാറ്റാബേസ് റിലേഷനുകൾ കൃത്യമായിരുന്നു. മൊബൈലിലും ഡെസ്ക്ടോപ്പിലും ടെംപ്ലേറ്റുകൾ മികച്ച രീതിയിൽ കാണപ്പെട്ടു. എന്നാൽ സെർച്ച് എഞ്ചിനുകൾ എല്ലാം സ്വയം കണ്ടെത്താൻ ഞാൻ അവരെ വിട്ടേച്ചു, അവയ്ക്ക് കാര്യങ്ങൾ ഊഹിച്ചെടുക്കാൻ കഴിയില്ല.
കഴിഞ്ഞ കുറച്ച് ഡെവലപ്മെന്റ് സെഷനുകളിലൂടെ ഞാൻ ആ വീഴ്ച പരിഹരിച്ചു. ഞാൻ പ്രധാനപ്പെട്ട SEO അടിത്തറ പൂർത്തിയാക്കി. പിശകുകളില്ലാതെ പ്രവർത്തിക്കുന്ന കോഡിനേക്കാൾ എത്രയോ അധികം കാര്യങ്ങൾ ഒരു പ്രൊഡക്ഷൻ-റെഡി ആപ്ലിക്കേഷന് ആവശ്യമാണെന്നതിന്റെ ഓർമ്മപ്പെടുത്തലായിരുന്നു അത്.
ഫീച്ചർ ഫാക്ടറിക്ക് അപ്പുറം
പ്രവർത്തിക്കുന്ന സോഫ്റ്റ്വെയർ എന്നത് ഒരു തുടക്കം മാത്രമാണ്. ഉപയോക്താക്കൾക്ക് കണ്ടെത്താൻ കഴിയുന്ന ഒരു ഉൽപ്പന്നത്തെ മാത്രമേ അവർക്ക് ഇഷ്ടപ്പെടാൻ കഴിയൂ, കൂടാതെ മിക്ക കണ്ടന്റ് അധിഷ്ഠിത സൈറ്റുകൾക്കും സെർച്ച് എഞ്ചിനുകളാണ് പ്രധാന വഴി. "overnight sourdough bread" എന്ന് തിരയുന്ന ഒരാൾ ശരിയായ സമയത്ത് ശരിയായ പേജിൽ എത്തുന്നുണ്ടോ എന്നതിനെ ആശ്രയിച്ചാണ് ഒരു റെസിപ്പി ബ്ലോഗിന്റെ വിജയം നിലനിൽക്കുന്നത്.
ഈ കണ്ടെത്തൽ (discoverability) തനിയെ സംഭവിക്കുന്ന ഒന്നല്ല. ഓരോ പേജിലും എന്താണുള്ളതെന്ന് വിശദീകരിക്കുന്ന മെറ്റാഡാറ്റ അതിന് ആവശ്യമാണ്. ഒരു HTML ബ്ലോക്കിനെ പാചക സമയം, ചേരുവകൾ, റേറ്റിംഗുകൾ എന്നിവയുള്ള കൃത്യമായ ഒരു എൻ്റിറ്റിയായി മാറ്റുന്ന സ്ട്രക്ചേർഡ് ഡാറ്റയും ആവശ്യമാണ്. ഈ ഘടകങ്ങളില്ലാതെ, ഏറ്റവും മികച്ച ഉള്ളടക്കവും ലോകത്തിന് കാണാൻ കഴിയാത്തവിധം ക്രോളർമാരുടെ (crawlers) കണ്ണിൽപ്പെടാതെ ഒറ്റപ്പെട്ടുപോകുന്നു.
എന്റെ Django പ്രോജക്റ്റിൽ എല്ലാ ഫങ്ഷണൽ ഭാഗങ്ങളും ഉണ്ടായിരുന്നു. എന്നാൽ എന്റെ കോഡും സെർച്ച് എഞ്ചിൻ ലോജിക്കും തമ്മിലുള്ള ഒരു ട്രാൻസ്ലേഷൻ ലെയർ അതിൽ കുറവായിരുന്നു. ആ വിടവ് നികത്തുക എന്നതിനർത്ഥം ടെക്നിക്കൽ SEO-യെ ഒരു മാർക്കറ്റിംഗ് കാര്യമായി കാണുന്നതിന് പകരം ഒരു എഞ്ചിനീയറിംഗ് ആവശ്യകതയായി പരിഗണിക്കുക എന്നതായിരുന്നു.
ഒരു പ്രധാന SEO അടിത്തറ യഥാർത്ഥത്തിൽ എങ്ങനെയിരിക്കും
ഈ ജോലി കീവേഡ് സ്റ്റഫിംഗിനെക്കുറിച്ചോ ക്ലിക്ക്ബെയ്റ്റ് ടൈറ്റിലുകൾ എഴുതുന്നതിനെക്കുറിച്ചോ ആയിരുന്നില്ല. ഒരു Django ആപ്ലിക്കേഷനായുള്ള ടെക്നിക്കൽ SEO എന്നത് വളരെ കൃത്യവും മെക്കാനിക്കലുമാണ്, കൂടാതെ ഫ്രെയിംവർക്ക് എങ്ങനെ പേജുകൾ നൽകുന്നു എന്നതിനോട് അത് ആഴത്തിൽ ബന്ധപ്പെട്ടിരിക്കുന്നു.
ഓരോ ഡോക്യുമെന്റിന്റെയും ഹെഡറിൽ (head) കാണപ്പെടുന്ന അടിസ്ഥാന കാര്യങ്ങളിൽ നിന്നാണ് ഞാൻ തുടങ്ങിയത്. ഡൈനാമിക് ടൈറ്റിൽ ടാഗുകളും മെറ്റാ ഡിസ്ക്രിപ്ഷനുകളും ഇപ്പോൾ നേരിട്ട് മോഡൽ ഫീൽഡുകളിൽ നിന്ന് എടുക്കുന്നു. ഒരു ഉപയോക്താവ് ഒരു റെസിപ്പി പേജ് സന്ദർശിക്കുമ്പോൾ, ടൈറ്റിൽ ടാഗ് വെറുമൊരു സൈറ്റ് ഹെഡർക്ക് പകരം യഥാർത്ഥ റെസിപ്പി പേരും കാറ്റഗറിയും കാണിക്കുന്നു. അവയ്ക്കൊപ്പം Open Graph ടാഗുകളും ഉണ്ട്, അതിനാൽ ഷെയർ ചെയ്യപ്പെടുന്ന ലിങ്കുകൾ ഒരു ശൂന്യമായ കാർഡ് എന്നതിന് പകരം ശരിയായ ചിത്രം, വിവരണം, പ്രിവ്യൂ ടെക്സ്റ്റ് എന്നിവയോടെ കാണപ്പെടുന്നു.
പിന്നീട് ഞാൻ സ്കീമ മാർക്കപ്പിലേക്ക് (schema markup) തിരിഞ്ഞു. റെസിപ്പികൾക്ക് സാർവത്രികമായി മനസ്സിലാക്കാവുന്ന ഗുണങ്ങൾ ഉള്ളതിനാൽ ഒരു ഫുഡ് ബ്ലോഗ് സ്ട്രക്ചേർഡ് ഡാറ്റയ്ക്ക് അനുയോജ്യമാണ്. ഓരോ പേജിലും JSON-LD Recipe മാർക്കപ്പ് ചേർക്കുന്നതിലൂടെ, തയ്യാറാക്കുന്ന സമയം, പാചക സമയം, ചേരുവകളുടെ പട്ടിക, റിവ്യൂ സംഗ്രഹം എന്നിവ സെർച്ച് എഞ്ചിനുകൾക്ക് നേരിട്ട് മനസ്സിലാകുന്ന ഭാഷയിൽ ആപ്ലിക്കേഷന് കൈമാറാൻ കഴിയും. ഇത് വെറുമൊരു അലങ്കാരമല്ല. ഒരു സാധാരണ നീല ലിങ്ക് ആയി കാണപ്പെടുന്നതിനും, സെർച്ച് പേജിൽ തന്നെ സ്റ്റാർ റേറ്റിംഗുകളും പാചക സമയവും കാണിക്കുന്ന റിച്ച് റിസൾട്ടുകൾക്കായി (rich results) യോഗ്യത നേടുന്നതിനും ഇടയിലുള്ള വ്യത്യാസമാണിത്.
നിങ്ങൾ അവ അവഗണിച്ചാൽ Django ഉണ്ടാക്കിയേക്കാവുന്ന അപകടങ്ങളും ഞാൻ പരിഹരിച്ചു. Class-based views ഉപയോഗിക്കുമ്പോൾ സമാനമായ ഉള്ളടക്കം വ്യത്യസ്ത URL പാറ്റേണുകളിൽ എളുപ്പത്തിൽ നൽകാൻ സാധ്യതയുണ്ട്, ഇത് നിങ്ങളുടെ SEO അതോറിറ്റിയെ ഡ്യൂപ്ലിക്കേറ്റ് പേജുകളിലായി വിഭജിക്കുന്നു. ഈ സിഗ്നലുകളെ ഏകീകരിക്കാനും ഓരോ റിസോഴ്സിന്റെയും കൃത്യമായ പതിപ്പിലേക്ക് സെർച്ച് എഞ്ചിനുകളെ നയിക്കാനും ഞാൻ canonical URLs ചേർത്തു.
ഒടുവിൽ, ഞാൻ ഡിസ്കവറി ഇൻഫ്രാസ്ട്രക്ചർ കോൺഫിഗർ ചെയ്തു. Django-യിൽ ഒരു sitemap framework ലഭ്യമാണ്, അത് ഉപയോഗിക്കുന്നത് വഴി സൈറ്റിലെ പ്രധാനപ്പെട്ട കാര്യങ്ങളുടെ ഒരു കൃത്യമായ ഇൻഡക്സ് ക്രോളർമാർക്ക് ലഭിക്കുന്നു. ശരിയായി കോൺഫിഗർ ചെയ്ത ഒരു robots.txt ഇതിനോടൊപ്പം ഉണ്ടായിരിക്കും, ഇത് ബോട്ടുകളെ മൂല്യമുള്ള ഉള്ളടക്കങ്ങളിലേക്ക് നയിക്കുകയും യൂസർ ഡാഷ്ബോർഡുകൾ അല്ലെങ്കിൽ അഡ്മിൻ റൂട്ടുകൾ പോലുള്ള സെർച്ച് റിസൾട്ടുകളിൽ വരാൻ പാടില്ലാത്ത പേജുകളിൽ നിന്ന് അവയെ അകറ്റുകയും ചെയ്യുന്നു.
ഈ മാറ്റങ്ങൾ ചേർന്ന് മൂന്ന് വ്യക്തമായ ഫലങ്ങൾ നൽകുന്നു:
- ക്രോളർമാർ വേഗത്തിൽ പ്രവർത്തിക്കുന്നു. വൃത്തിയുള്ള സൈറ്റ്മാപ്പും യുക്തിസഹമായ ഇന്റേണൽ ലിങ്കിംഗും ഉള്ള ഒരു സൈറ്റ് ആർക്കിടെക്ചർ എന്നാൽ സെർച്ച് എഞ്ചിൻ ബോട്ടുകൾ വഴിതെറ്റാതെ കാര്യക്ഷമമായി സമയം ചിലവഴിക്കുന്നു എന്നാണ് അർത്ഥമാക്കുന്നത്.
- ഉള്ളടക്കം കൃത്യമായി ഇൻഡക്സ് ചെയ്യപ്പെടുന്നു. വ്യക്തമായ മെറ്റാഡാറ്റയും സെമാന്റിക് മാർക്കപ്പും ഒരു പേജിൽ എന്താണുള്ള എന്നതിനെക്കുറിച്ച് യാതൊരു സംശയവും അവശേഷിപ്പിക്കുന്നില്ല. ഒരു പേജ് ഒരു റെസിപ്പി ആണെന്ന് ഊഹിച്ചെടുക്കാൻ സെർച്ച് എഞ്ചിന് ആവശ്യമില്ല, അതിന് അത് അറിയാം.
- പേജുകൾക്ക് യഥാർത്ഥ സെർച്ച് വിസിബിലിറ്റി ലഭിക്കുന്നു. റിച്ച് സ്നിപ്പറ്റുകളും (Rich snippets) മെച്ചപ്പെട്ട ലിസ്റ്റിംഗുകളും യാദൃശ്ചികമായി സംഭവിക്കുന്നതല്ല. റിസൾട്ടുകളിൽ നിങ്ങളുടെ ഉള്ളടക്കം പ്രത്യേക രീതിയിൽ അവതരിപ്പിക്കാൻ സഹായിക്കുന്ന സ്ട്രക്ചേർഡ് ഡാറ്റയിൽ നിന്നാണ് അവ ഉണ്ടാകുന്നത്.
അദൃശ്യമായ ഇൻഫ്രാസ്ട്രക്ചർ പ്രധാനമാകുന്നത് എന്തുകൊണ്ട്
നിങ്ങളുടെ canonical ലിങ്ക് ടാഗുകളെ ആരും അഭിനന്ദിക്കില്ല. നിങ്ങളുടെ മെറ്റാ ഡിസ്ക്രിപ്ഷനുകളെയോ സ്കീമ ഇംപ്ലിമെന്റേഷനെയോ പുകഴ്ത്തി ആരും കമന്റ് എഴുതില്ല. ഈ മാറ്റങ്ങൾ അവയിൽ നിന്ന് പ്രയോജനം നേടുന്ന ആളുകളിൽ നിന്ന് പൂർണ്ണമായും മറഞ്ഞിരിക്കും, അതാണ് അവയെ പ്രൊഫഷണൽ ആക്കുന്നത്.
പ്രൊഡക്ഷൻ-ഗ്രേഡ് സോഫ്റ്റ്വെയറുകളെ നിർവചിക്കുന്നത് അദൃശ്യമായ ഇൻഫ്രാസ്ട്രക്ചറുകളാണ്. ഡാറ്റ സുരക്ഷിതമായി സംരക്ഷിക്കപ്പെടുമ്പോൾ മാത്രമാണ് ഉപയോക്താക്കൾ ശരിയായ അതന്റിക്കേഷൻ (authentication) ശ്രദ്ധിക്കുന്നത്. ഒരു ക്വറി (query) ഉടനടി ലോഡ് ചെയ്യപ്പെടുമ്പോൾ മാത്രമാണ് അവർ ഡാറ്റാബേസ് ഇൻഡക്സിംഗിനെക്കുറിച്ച് ചിന്തിക്കുന്നത്. ഇതേ തത്വം തന്നെയാണ് ഇവിടെയും ബാധകമാകുന്നത്. കൃത്യമായ ഒരു സോഷ്യൽ പ്രിവ്യൂ (social preview) തടസ്സമില്ലാതെ പ്രവർത്തിക്കുന്നു. ഒരാൾ ഇതിന് പിന്നിൽ Open Graph-ഉം schema markup-ഉം കോർത്തിണക്കുന്ന അത്ര വലിയ ശ്രദ്ധ ആവശ്യമില്ലാത്ത ജോലികൾ ചെയ്തതുകൊണ്ടാണ് ഒരു റെസിപ്പി ശരിയായ തംബ്നെയിലോടും (thumbnail) റേറ്റിംഗോടും കൂടി സെർച്ചിൽ വരുന്നത്.
ഈ മറഞ്ഞിരിക്കുന്ന പാളികൾ ഒരു പ്രോജക്റ്റിനെ യഥാർത്ഥ ലോകത്ത് ഉപയോഗിക്കാൻ പാകത്തിൽ സജ്ജമാക്കുന്നു. ഹോബി പ്രോജക്റ്റുകൾ ഫ്രണ്ട്എൻഡ് മിനുക്കിയെടുക്കുകയും ബാക്കി കാര്യങ്ങൾ ഗൂഗിൾ ചെയ്തോളും എന്ന് പ്രതീക്ഷിക്കുകയും ചെയ്യുന്നു. എന്നാൽ ഗൗരവകരമായ പ്രോജക്റ്റുകൾ, സെക്യൂരിറ്റിയോ ഡാറ്റാ ഇന്റഗ്രിറ്റിയോ പോലെ തന്നെ പ്രധാനപ്പെട്ട ഒന്നായി 'discoverability'-യെ കാണുന്നു. ഈ അടിസ്ഥാനം പൂർത്തിയാക്കുന്നതിലൂടെ, ഉപയോക്താക്കളെ ബന്ധിപ്പിക്കുന്ന സിസ്റ്റങ്ങൾക്ക് അവർ എന്താണ് നോക്കുന്നത് എന്ന് മനസ്സിലാക്കാൻ കഴിയില്ലെങ്കിൽ, മികച്ച കോഡിന് വലിയ പ്രസക്തിയില്ലെന്ന് ഞാൻ തിരിച്ചറിഞ്ഞു.
മുന്നോട്ടുള്ള പാത
SEO അടിസ്ഥാനം ഉറപ്പാക്കിയതോടെ, ഉപയോക്താക്കൾക്ക് നേരിട്ട് കാണാനും ഉപയോഗിക്കാനും കഴിയുന്ന ജോലികളിലേക്ക് ഞാൻ തിരികെ വരികയാണ്. ബ്ലോഗ് കൂടുതൽ ഉപകാരപ്രദമാക്കുന്ന പുതിയ ഫീച്ചറുകൾ നിർമ്മിക്കുക, പേജുകൾ വേഗത്തിൽ ലോഡ് ചെയ്യാനായി പെർഫോമൻസ് ഒപ്റ്റിമൈസ് ചെയ്യുക, പ്രൊഡക്ഷൻ ഡിപ്ലോയ്മെന്റിനായി തയ്യാറെടുക്കുക എന്നിവയാണ് എന്റെ അടുത്ത മുൻഗണനകൾ.
വെറും സ്റ്റാറ്റിക് റെസിപ്പി പ്രസന്റേഷനിൽ നിന്നും അപ്പുറത്തേക്ക് സൈറ്റിന്റെ പ്രവർത്തനക്ഷമത വർദ്ധിപ്പിക്കാൻ പുതിയ ഫീച്ചറുകൾ സഹായിക്കും. പെർഫോമൻസ് ഒപ്റ്റിമൈസേഷനിലൂടെ ക്വറി എഫിഷ്യൻസി (query efficiency), ഇമേജ് ഹാൻഡ്ലിംഗ് എന്നിവ മെച്ചപ്പെടുത്തും; കൂടാതെ ലോക്കൽ ആയി പ്രവർത്തിക്കുന്ന ഒരു സൈറ്റും വലിയ ട്രാഫിക് കൈകാര്യം ചെയ്യുന്ന ഒരു സൈറ്റും തമ്മിലുള്ള വ്യത്യാസവും പരിഹരിക്കും. പ്രൊഡക്ഷൻ ഡിപ്ലോയ്മെന്റ് എന്നാൽ എൻവയോൺമെന്റ് വേരിയബിളുകൾ (environment variables) സുരക്ഷിതമാക്കുക, സ്റ്റാറ്റിക് ഫയൽ ഡെലിവറി കോൺഫിഗർ ചെയ്യുക, ശരിയായ രീതിയിൽ ലോഗിംഗ് (logging) സെറ്റ് ചെയ്യുക, യഥാർത്ഥ ഡാറ്റയും ഉപയോക്താക്കളും കൈകാര്യം ചെയ്യുമ്പോൾ ഒഴിവാക്കാൻ പാടില്ലാത്ത സെക്യൂരിറ്റി ചെക്ക്ലിസ്റ്റുകൾ പരിശോധിക്കുക എന്നിവയാണ്.
ഈ ജോലികളെല്ലാം ഇപ്പോൾ ശക്തമായ ഒരു അടിത്തറയ്ക്ക് മേലാണ് നിൽക്കുന്നത്. ആപ്ലിക്കേഷൻ സെർച്ച് എഞ്ചിനുകളുടെ ഭാഷ സംസാരിക്കുന്നു. സാങ്കേതികമായ കാര്യങ്ങൾ കൃത്യമായി ക്രമീകരിച്ചാൽ മാത്രം ലഭിക്കുന്ന വലിയ ട്രാഫിക്കിനെ നേരിടാൻ ഇത് തയ്യാറാണ്.
പ്രധാന പാഠം: ഡെവലപ്മെന്റ് കഴിഞ്ഞാൽ ചെയ്യേണ്ട മറ്റൊരാളുടെ ജോലിയായാണ് ഡെവലപ്പർമാർ പലപ്പോഴും SEO-യെ കാണുന്നത്. ആ വേർതിരിവ് കൃത്രിമവും ചിലവേറിയതുമാണ്. മെറ്റാഡാറ്റ (metadata), സ്ട്രക്ചേർഡ് ഡാറ്റ (structured data), ക്രൗളർ ആക്സസിബിലിറ്റി (crawler accessibility) എന്നിവ തുടക്കം മുതൽ തന്നെ എഞ്ചിനീയറിംഗ് ജോലികളായി പരിഗണിച്ചാൽ, വെറുമൊരു ഫങ്ഷണൽ ആപ്പ് എന്നതിലുപരി പൂർണ്ണതയുള്ള ആപ്ലിക്കേഷനുകൾ നിങ്ങൾക്ക് നിർമ്മിക്കാൻ കഴിയും. അദൃശ്യമായ കാര്യങ്ങൾ കൃത്യമാക്കുക. ഒരു പ്രോജക്റ്റ് വെറുതെ പ്രവർത്തിക്കുന്നതിനും അത് ശ്രദ്ധേയമാകുന്നതിനും ഇടയിലുള്ള വ്യത്യാസം ഇതാണ്.
