{% comment %} SEO Score engine — include at the END of {% block extra_js %} AFTER setting window.SEO_CONFIG. Required window.SEO_CONFIG: title_id — ID of the main title/name field has_image — bool: object already has a saved image image_input_name — name attr of the file upload input Optional window.SEO_CONFIG: tldr_id — field ID for TL;DR (null = skip check) tags_id — field ID for tags (null = skip check) canonical_id — field ID for canonical URL (null = skip for Europe hreflang check) has_faqs — bool: include "at least one FAQ pair" check has_sources — bool: include "at least one official source" check check_image_fn — custom function() to override default image check extra_checks — array of {label:str, fn:function} appended after base checks Usage example: window.SEO_CONFIG = { title_id: 'f_title', has_image: true, image_input_name: 'thumbnail', tldr_id: 'f_tldr', tags_id: 'f_tags', canonical_id: 'f_canonical', has_faqs: true, has_sources: true, extra_checks: [ {label:'Author title (E-E-A-T)', fn:function(){ return !!v('f_author_title'); }} ] }; {% endcomment %}