Μετάβαση στο περιεχόμενο
210 440 8777

Case study, Νομικές υπηρεσίες, δίκαιο εμπορικών σημάτων

Psarakis Trademarks: δομημένα δεδομένα σε 44 σελίδες και εξυγίανση της εσωτερικής δομής

Τεχνικό SEO σε δικηγορικό site: δομημένα δεδομένα σε κάθε σελίδα, εξυγίανση της εσωτερικής δομής, επαναφορά χαμένων ημερομηνιών και llms.txt για πράκτορες AI.

Το site του Γιάννης Ψαράκης, δικηγόρος, δίκαιο εμπορικών σημάτων μετά την ανακατασκευή

Το psarakis-trademarks.com ξεκίνησε από εμάς, ως rebranding ενός blog σε Blogger με το όνομα The Trademark Hoop, με νέα ταυτότητα, στατικό site και 301 ένα προς ένα από κάθε παλιά διεύθυνση. Ένα χρόνο μετά, η ύλη είχε φτάσει τις 60.000 λέξεις και το site είχε μία σελίδα με δομημένα δεδομένα: η Google διάβαζε κείμενο, χωρίς να ξέρει ποιος το έγραψε, πότε δημοσιεύτηκε, ποια σελίδα είναι υπηρεσία και ποια άρθρο. Χτίσαμε ένα γράφημα οντοτήτων που καλύπτει και τις 44 σελίδες, ανακτήσαμε τις χαμένες ημερομηνίες των άρθρων και καθαρίσαμε την εσωτερική δομή. Το site βγάζει πλέον 99 στις επιδόσεις και 100 σε προσβασιμότητα, βέλτιστες πρακτικές και SEO σε κινητό, και 3 στα 3 στην κατηγορία για πράκτορες AI.

  • 301 redirects από το παλιό domain

    21 κανόνες, ένα προς ένα

  • PageSpeed mobile, επιδόσεις

    9699

  • Κατηγορία Agentic Browsing

    1 από 33 από 3

  • Core Web Vitals, πραγματικοί χρήστες

    Περνά, LCP 1s, CLS 0

  • Σελίδες με δομημένα δεδομένα

    144

  • URLs στο sitemap

    1544

  • Άρθρα με ημερομηνία δημοσίευσης

    018 από 20

  • Μοναδικές περιγραφές σελίδων

    20 πανομοιότυπες44 από 44

  • Σελίδες άβατες από την αρχική

    20

  • Σελίδες χωρίς εξερχόμενους συνδέσμους

    70

  • Σελίδες κάτω από 70 λέξεις

    30

  • Ζεύγη σελίδων με επικάλυψη

    1511

  • Συντακτικοί εσωτερικοί σύνδεσμοι

    209234

  • Αιτήματα σε εξωτερικούς διακομιστές γραμματοσειρών

    20

Πρώτα το rebranding: από το Blogger σε δικό του brand

Η δουλειά ξεκίνησε πριν από κάθε συζήτηση για SEO. Η ύλη υπήρχε, αλλά ζούσε σε ένα blog σε Blogger με το όνομα The Trademark Hoop, σε domain που δεν έλεγε ούτε ποιος γράφει ούτε τι κάνει. Ένας δικηγόρος με εξειδίκευση στο δίκαιο του σήματος, που συμβουλεύει επιχειρήσεις για το πώς χτίζεται και προστατεύεται ένα brand, είχε ο ίδιος μια παρουσία χωρίς brand.

Το rebranding τον έφερε στο δικό του όνομα. Νέα ταυτότητα, νέο domain, και νέο site χτισμένο από το μηδέν σε Eleventy, στατικό, στο edge του Cloudflare, χωρίς βάση και χωρίς πλατφόρμα που χρειάζεται συντήρηση.

Το κρίσιμο κομμάτι εκείνης της φάσης ήταν η μετάβαση. Το Blogger παράγει διευθύνσεις της μορφής /2021/11/onoma-arthrou.html, και το κάθε ένα από τα είκοσι άρθρα είχε ιστορικό στις μηχανές. Δεν πήγε τίποτα σε μία γενική ανακατεύθυνση προς την αρχική, που είναι ο πιο εύκολος και ο πιο ακριβός τρόπος να χάσεις μια μεταφορά. Γράφτηκαν είκοσι ένας κανόνες 301, ένα προς ένα, κάθε παλιά διεύθυνση προς το αντίστοιχο νέο άρθρο, μαζί με τις παραλλαγές που είχαν κωδικοποιημένο κενό στο URL.

Αυτό το case study περιγράφει τον επόμενο κύκλο, έναν χρόνο μετά, όταν το site είχε γεμίσει ύλη και φάνηκε ότι η δομή δεν είχε προλάβει το περιεχόμενο.

Ένα καλό site που δεν μιλούσε στις μηχανές

Το psarakis-trademarks.com δεν ήταν προβληματικό site. Ήταν στατικό, γρήγορο, με σοβαρό περιεχόμενο: πάνω από 60.000 λέξεις νομικής ύλης, είκοσι εκτενή άρθρα, εννέα αναλυτικές σελίδες υπηρεσιών και μια μονογραφία πίσω του.

Το πρόβλημα ήταν αλλού. Όλη αυτή η ύλη ήταν αόρατη ως δομή. Η Google διάβαζε κείμενο, αλλά δεν ήξερε ποιος το έγραψε, πότε δημοσιεύτηκε, ποια σελίδα είναι υπηρεσία και ποια άρθρο, ούτε πώς συνδέονται μεταξύ τους. Σελίδα με δομημένα δεδομένα υπήρχε μία και μόνο, η αρχική.

Σε έναν κλάδο όπου η Google σταθμίζει βαριά την εμπειρία και την αυθεντία του συντάκτη, αυτό είναι χαμένο έδαφος. Ο πελάτης είναι υποψήφιος διδάκτωρ Νομικής ΕΚΠΑ και συγγραφέας της μοναδικής ελληνικής μονογραφίας για τον κίνδυνο σύγχυσης στο δίκαιο του σήματος. Τίποτα από αυτά δεν ήταν αναγνώσιμο από μηχανή.

Τι έδειξε ο έλεγχος των 46 σελίδων

Ξεκινήσαμε με πλήρη τεχνικό έλεγχο κάθε σελίδας του παραγόμενου site, και τα ευρήματα ήταν πιο βαριά από ό,τι περιμέναμε για ένα site που δουλεύει κανονικά.

Το sitemap ήταν χειρόγραφο και δήλωνε 15 URLs. Έλειπαν και τα είκοσι άρθρα, το βιογραφικό, η επικοινωνία και όλες οι νομικές σελίδες. Το ένα τρίτο του site δηλωνόταν στη Google, τα άλλα δύο τρίτα βασίζονταν στην τύχη της ανίχνευσης.

Τα είκοσι άρθρα δεν είχαν ημερομηνία δημοσίευσης, γιατί το site είχε μεταφερθεί από παλιότερη πλατφόρμα και οι ημερομηνίες είχαν χαθεί στη διαδρομή. Είχαν επίσης είκοσι πανομοιότυπες περιγραφές: το meta description κάθε άρθρου ήταν αντιγραφή του τίτλου του.

Τρεις σελίδες είχαν από 60 έως 65 λέξεις, και οι δύο από αυτές δεν ήταν προσβάσιμες με κανένα σύνδεσμο. Υπήρχαν μόνο στο sitemap. Δύο άρθρα είχαν πρακτικά τον ίδιο τίτλο και ανταγωνίζονταν το ένα το άλλο. Και ένα σφάλμα κωδικοποίησης έβγαζε & μέσα στους τίτλους ορισμένων σελίδων, ορατό στα αποτελέσματα αναζήτησης.

Ένα γράφημα οντοτήτων, όχι σκόρπια tags

Η συνηθισμένη προσέγγιση στα δομημένα δεδομένα είναι να κολληθεί ένα κομμάτι JSON-LD σε κάθε σελίδα, χειροκίνητα. Λειτουργεί μέχρι να αλλάξει κάτι, οπότε ξεχνιέται η μισή ενημέρωση και οι σελίδες αρχίζουν να λένε διαφορετικά πράγματα για την ίδια επιχείρηση.

Φτιάξαμε αντ’ αυτού μία κεντρική γεννήτρια. Ένα αρχείο περιγράφει την οντότητα του γραφείου και του δικηγόρου. Ένα δεύτερο παράγει το γράφημα κάθε σελίδας από τα δεδομένα της. Καμία σελίδα δεν γράφει δικό της schema.

Σταθεροί κόμβοι σε κάθε σελίδα

Σε κάθε μία από τις 44 σελίδες υπάρχει το ίδιο θεμέλιο, δεμένο με σταθερά αναγνωριστικά: η οντότητα του γραφείου, δηλωμένη ως Attorney και LegalService, με διεύθυνση, τηλέφωνα, περιοχές εξυπηρέτησης, σημείο επικοινωνίας με γλώσσες και έντεκα πεδία εξειδίκευσης. Το πρόσωπο του δικηγόρου, με ιδιότητα, πανεπιστήμιο και εξωτερικά προφίλ. Το site ως οντότητα, με εκδότη το γραφείο. Και η ίδια η σελίδα, με γλώσσα, εικόνα και διαδρομή πλοήγησης.

Το κρίσιμο είναι ότι δεν είναι 44 ανεξάρτητα κομμάτια σήμανσης. Είναι ένα γράφημα. Κάθε κόμβος έχει σταθερό αναγνωριστικό και οι υπόλοιποι δείχνουν σε αυτόν αντί να τον ξαναγράφουν.

Το γράφημα οντοτήτων του psarakis-trademarks.com Τέσσερις σταθεροί κόμβοι γράφονται μία φορά σε ένα κεντρικό αρχείο: η οντότητα του γραφείου ως Attorney και LegalService, το πρόσωπο του δικηγόρου, το site και η κύρια εικόνα. Κάθε μία από τις 44 σελίδες προσθέτει μόνο τον τύπο της, άρθρο ως BlogPosting με συντάκτη τον δικηγόρο, σελίδα υπηρεσίας ως Service με πάροχο το γραφείο, σελίδα μονογραφίας ως Book, και δείχνει στους σταθερούς κόμβους με αναγνωριστικό αντί να τους ξαναγράφει. Το αποτέλεσμα είναι μία οντότητα που εμφανίζεται σε 44 σελίδες, ένας συντάκτης δεμένος σε κάθε άρθρο και εννέα υπηρεσίες κάτω από το γραφείο. ΣΤΑΘΕΡΟΙ ΚΟΜΒΟΙ, ΙΔΙΟΙ ΣΕ 44 ΣΕΛΙΔΕΣ Γράφονται μία φορά, σε ένα αρχείο. Το γραφείο Attorney και LegalService, 11 πεδία εξειδίκευσης Ο δικηγόρος Ιδιότητα, πανεπιστήμιο, εξωτερικά προφίλ Το site Με εκδότη το γραφείο, σε μία γλώσσα Η κύρια εικόνα Δεμένη με σταθερό αναγνωριστικό ΚΑΘΕ ΣΕΛΙΔΑ ΠΡΟΣΘΕΤΕΙ ΤΟΝ ΤΥΠΟ ΤΗΣ Άρθρο, ως BlogPosting συντάκτης, δείχνει στον δικηγόρο εκδότης, δείχνει στο γραφείο Σελίδα υπηρεσίας, ως Service πάροχος, δείχνει στο γραφείο περιοχή εξυπηρέτησης, Ελλάδα και ΕΕ Μονογραφία, ως Book συγγραφέας, δείχνει στον δικηγόρο ISBN, εκδότης, αριθμός σελίδων ΤΟ ΑΠΟΤΕΛΕΣΜΑ Μία οντότητα, 44 σελίδες Ένας συντάκτης δεμένος σε κάθε άρθρο, εννέα υπηρεσίες κάτω από το γραφείο.

Στον κώδικα αυτό είναι λιγότερες γραμμές από όσες θα περίμενε κανείς. Τα αναγνωριστικά δηλώνονται μία φορά, και ο κόμβος κάθε άρθρου δείχνει σε αυτά:

// src/_data/eleventyComputed.js
// Σταθερά αναγνωριστικά. Κάθε κόμβος γράφεται μία φορά και οι υπόλοιποι
// δείχνουν σε αυτόν, αντί να τον ξαναγράφουν σε κάθε σελίδα.
const ID = {
  org:     BASE + "/#organization",
  person:  BASE + "/#person",
  website: BASE + "/#website",
  blog:    BASE + "/blog/#blog"
};

// Το άρθρο δεν ξαναπεριγράφει τον δικηγόρο. Δείχνει σε αυτόν.
graph.push(prune({
  "@type": "BlogPosting",
  "@id": pageUrl + "#article",
  headline: truncate(shortTitle(title), 110),  // η Google κόβει στους 110
  author:    { "@id": ID.person },
  publisher: { "@id": ID.org },
  isPartOf:  { "@id": ID.blog },
  datePublished: published || undefined,       // λείπει, δεν εφευρίσκεται
  inLanguage: site.language
}));

Η σημασία δεν είναι στη συντομία. Είναι στο ότι ο δικηγόρος περιγράφεται σε ένα σημείο. Όταν αύριο προστεθεί ένα βραβείο, μια δημοσίευση ή ένα δεύτερο τηλέφωνο, αλλάζει ένα αρχείο και ενημερώνονται και οι 44 σελίδες στο επόμενο build. Η εναλλακτική, σαράντα τέσσερα αντίγραφα του ίδιου κομματιού JSON, είναι σαράντα τέσσερις ευκαιρίες να πει το site δύο διαφορετικά πράγματα για τον ίδιο άνθρωπο.

Διαφορετικός τύπος ανά σελίδα

Πάνω στο θεμέλιο, κάθε σελίδα παίρνει ό,τι της αναλογεί. Η αρχική γίνεται και FAQPage, με είκοσι ερωτήσεις και απαντήσεις. Τα είκοσι άρθρα γίνονται BlogPosting, με συντάκτη, εκδότη και ημερομηνία. Οι σελίδες υπηρεσιών γίνονται Service, με πάροχο και περιοχή εξυπηρέτησης. Οι οδηγοί γίνονται Article. Το βιογραφικό γίνεται ProfilePage με κύρια οντότητα τον δικηγόρο. Και η σελίδα της μονογραφίας γίνεται Book, με ISBN, σελίδες, εκδότη και σύνδεσμο προς τη σελίδα του εκδοτικού οίκου.

Αυτό το τελευταίο είναι μικρό σε έκταση και μεγάλο σε σημασία. Όταν η Google διαβάζει ότι το ίδιο πρόσωπο που υπογράφει τα είκοσι άρθρα είναι ο συγγραφέας μιας μονογραφίας με ISBN από αναγνωρισμένο νομικό εκδότη, η αυθεντία παύει να είναι ισχυρισμός και γίνεται δεδομένο.

Κάθε σελίδα μπορεί επίσης να παρακάμψει τη συμπεριφορά με ένα πεδίο στο frontmatter: να δηλώσει άλλον τύπο, να προσθέσει κόμβο υπηρεσίας, να αλλάξει την ετικέτα της στη διαδρομή πλοήγησης. Ο συντάκτης γράφει μία γραμμή, όχι σαράντα γραμμές JSON.

Το σφάλμα που έβγαζε & στους τίτλους

Ένα από τα πιο διδακτικά ευρήματα, γιατί ήταν αόρατο σε κάθε εργαλείο. Ορισμένοι τίτλοι εμφανίζονταν στα αποτελέσματα αναζήτησης έτσι:

Terms & Conditions | Psarakis Trademarks

Η αιτία ήταν στο frontmatter. Κάποιος είχε γράψει την οντότητα HTML αντί για τον χαρακτήρα του συμπλεκτικού. Η μηχανή προτύπων κάνει αυτόματη διαφυγή σε ό,τι τυπώνει, οπότε το αρχικό σύμβολο κωδικοποιούνταν δεύτερη φορά και το τελικό αποτέλεσμα έβγαινε διπλά κωδικοποιημένο στη σελίδα.

Επτά σελίδες το είχαν, ανάμεσά τους η σελίδα των άρθρων και η σελίδα των υπηρεσιών. Το διορθώσαμε παντού και προσθέσαμε τον κανόνα στην τεκμηρίωση του έργου, ώστε να μην επανέλθει από άλλο χέρι: ποτέ οντότητες HTML στο frontmatter, μόνο πραγματικοί χαρακτήρες.

Οι ημερομηνίες που είχαν χαθεί

Για τη σήμανση BlogPosting η ημερομηνία είναι από τα πιο χρήσιμα πεδία, και για τον αναγνώστη ενός νομικού κειμένου είναι κρίσιμη: η νομολογία παλιώνει.

Δεν τις εφευρέσαμε. Τις βρήκαμε, και η διαδρομή περνάει από το ίδιο rebranding. Το Blogger βάζει έτος και μήνα μέσα στη διεύθυνση, οπότε κάθε παλιό URL κουβαλούσε τη μισή ημερομηνία μαζί του. Οι παλιές διευθύνσεις ανακατευθύνουν πλέον στις νέες, αλλά παραμένουν στους δείκτες των μηχανών, και από εκεί ανακτήθηκε ο μήνας δημοσίευσης για δεκαπέντε άρθρα. Για τρία άρθρα βρέθηκε ακριβής ημέρα, από αναδημοσιεύσεις τους σε εθνικά μέσα. Δύο άρθρα δεν τεκμηριώθηκαν και σημειώθηκαν ρητά ως αβέβαια.

Εδώ κάναμε μια επιλογή που αξίζει να ειπωθεί: όπου γνωρίζαμε μόνο τον μήνα, το γράψαμε ως τέτοιο. Η σελίδα λέει «Νοέμβριος 2021», όχι μια ψεύτικη ακριβή ημερομηνία. Ένα πεδίο κρατάει την ακρίβεια κάθε ημερομηνίας, ώστε να μη ξεχαστεί ποια είναι τεκμηριωμένη και ποια κατά προσέγγιση:

// src/_data/eleventyComputed.js
const MONTHS_NOM = ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος",
  "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"];

/** Ετικέτα ημερομηνίας για το byline. Σέβεται το datePrecision. */
function publishedLabel(data) {
  // Άρθρο χωρίς τεκμηριωμένη ημερομηνία: δεν τυπώνεται καμία.
  if (!data.date || data.datePrecision === "unknown") return "";
  const d = data.date instanceof Date ? data.date : new Date(data.date);
  if (isNaN(d.getTime())) return "";
  const y = d.getUTCFullYear(), m = d.getUTCMonth(), day = d.getUTCDate();
  // Ξέρουμε μόνο τον μήνα: γράφουμε «Νοέμβριος 2021», όχι ψεύτικη ημέρα.
  if (data.datePrecision === "month") return `${MONTHS_NOM[m]} ${y}`;
  return `${day} ${MONTHS_GEN[m]} ${y}`;
}

Δεκαοκτώ γραμμές κώδικα για να μην πει το site ένα ψέμα. Το εύκολο θα ήταν να μπει η πρώτη του μήνα σε κάθε άρθρο και να τελειώσει η ιστορία: το schema θα γέμιζε, η Google θα δεχόταν την τιμή, κανείς δεν θα το έλεγχε. Σε ένα δικηγορικό site όμως η ημερομηνία δεν είναι διακοσμητικό πεδίο, είναι πληροφορία πάνω στην οποία κάποιος κρίνει αν το κείμενο που διαβάζει ισχύει ακόμη. Ένα πεδίο για την ακρίβεια της ημερομηνίας κρατάει αυτή τη διάκριση ζωντανή στον κώδικα, όχι στη μνήμη κάποιου.

Όταν δύο σελίδες σου παλεύουν μεταξύ τους

Τρέξαμε έλεγχο επικάλυψης σε όλο το site. Οι τίτλοι συγκρίθηκαν με δείκτη ομοιότητας αφού αφαιρέθηκε το όνομα του γραφείου, και το σώμα κάθε σελίδας διανυσματοποιήθηκε ώστε να μετρηθεί η πραγματική συγγένεια περιεχομένου. Δεκαπέντε ζεύγη πέρασαν το κατώφλι και δύο ήταν σοβαρά.

Το πρώτο ήταν δύο άρθρα με ομοιότητα τίτλου 0,91. Το ένα ήταν το μέρος Β’ του άλλου, αλλά το διακριτικό βρισκόταν στον χαρακτήρα 128, και η Google δείχνει περίπου εξήντα. Στα αποτελέσματα οι δύο καταχωρίσεις ήταν οπτικά ταυτόσημες. Η ομοιότητα περιεχομένου όμως ήταν μόλις 0,15: τα κείμενα ήταν όντως διαφορετικά. Δεν χρειαζόταν συγχώνευση, χρειαζόταν τίτλος που να λέει την αλήθεια. Το μέρος Β’ πραγματεύεται τον κίνδυνο συσχέτισης, οπότε αυτό μπήκε μπροστά.

Το δεύτερο ήταν οι τρεις σελίδες των 65 λέξεων, που ανταγωνίζονταν σελίδες τεσσάρων χιλιάδων λέξεων για το ίδιο ακριβώς ερώτημα. Καταργήθηκαν με μόνιμες ανακατευθύνσεις προς τις αναλυτικές σελίδες. Για να μη σπάσει τίποτα στην πορεία, τα ίδια δεδομένα που παρήγαν εκείνες τις σελίδες ξαναγράφτηκαν ώστε να περιγράφουν τις εννέα υπαρκτές σελίδες υπηρεσιών, οπότε ο κατάλογος υπηρεσιών στο schema και η λίστα στη σελίδα υπηρεσιών δείχνουν πλέον σε σελίδες που υπάρχουν.

Χρήσιμη λεπτομέρεια: ένα ζεύγος με ομοιότητα τίτλου 0,60 το ελέγξαμε και το αφήσαμε ως έχει. Η ομοιότητα περιεχομένου ήταν 0,11, γιατί απαντούν σε διαφορετικά ερωτήματα, «πώς γίνεται» και «πόσο κοστίζει». Ο έλεγχος επικάλυψης δεν είναι εργαλείο για να κόβεις σελίδες, είναι εργαλείο για να καταλαβαίνεις ποιες συγκρούονται πραγματικά.

Η ροή των εσωτερικών συνδέσμων

Ο δεύτερος έλεγχος αφορούσε τους εσωτερικούς συνδέσμους. Χωρίσαμε τους συνδέσμους σε μενού, υποσέλιδο και συνδέσμους μέσα σε περιεχόμενο, και αφαιρέσαμε ό,τι επαναλαμβάνεται σε κάθε σελίδα. Χωρίς αυτό το φιλτράρισμα κάθε σελίδα φαίνεται καλά συνδεδεμένη, επειδή το μενού δείχνει παντού. Μένουν μόνο οι συντακτικοί σύνδεσμοι, αυτοί που κάποιος έβαλε επειδή οι δύο σελίδες σχετίζονται.

Η ροή των εσωτερικών συνδέσμων, πριν και μετά Πριν από την παρέμβαση, δύο σελίδες ήταν άβατες, δηλαδή δεν υπήρχε καμία διαδρομή από την αρχική προς αυτές, επτά σελίδες ήταν αδιέξοδα που δεν έδιναν κανέναν συντακτικό σύνδεσμο, και μια εμπορική σελίδα με σαφή πρόθεση αγοράς δεχόταν έναν και μόνο σύνδεσμο. Η μέτρηση έγινε αφού αφαιρέθηκαν μενού και υποσέλιδο, ώστε να μείνουν μόνο οι συντακτικοί σύνδεσμοι. Μετά την παρέμβαση δεν υπάρχει άβατη σελίδα, δεν υπάρχει αδιέξοδο, και οι συντακτικοί εσωτερικοί σύνδεσμοι ανέβηκαν από 209 σε 234 με χειροκίνητη θεματική αντιστοίχιση. ΠΡΙΝ, ΟΙ ΣΥΝΤΑΚΤΙΚΟΙ ΣΥΝΔΕΣΜΟΙ 2 σελίδες άβατες καμία διαδρομή από την αρχική 7 σελίδες αδιέξοδα δεν δίνουν κανέναν σύνδεσμο 1 σύνδεσμος σε εμπορική σελίδα η προσφυγή κατά απορριπτικής απόφασης ΤΙ ΜΕΤΡΗΣΑΜΕ Μενού και υποσέλιδο έξω από τη μέτρηση Οι σύνδεσμοι που επαναλαμβάνονται σε κάθε σελίδα αφαιρούνται. Μένουν οι συντακτικοί, αυτοί που δείχνουν πραγματική σχέση. ΜΕΤΑ 0 άβατες σελίδες κάθε σελίδα έχει διαδρομή από την αρχική 0 αδιέξοδα δύο ή τρεις επιλεγμένοι σύνδεσμοι παντού 234 συντακτικοί σύνδεσμοι από 209, με χειροκίνητη αντιστοίχιση

Δύο σελίδες ήταν εντελώς άβατες: ξεκινώντας από την αρχική και ακολουθώντας κάθε σύνδεσμο του site, δεν υπήρχε διαδρομή που να οδηγεί σε αυτές. Επτά σελίδες ήταν αδιέξοδα, δεν έδιναν κανέναν συντακτικό σύνδεσμο, οπότε απορροφούσαν αξία χωρίς να την περνούν πουθενά, και ο αναγνώστης που έφτανε εκεί δεν είχε επόμενο βήμα. Και μια εμπορική σελίδα με σαφή πρόθεση αγοράς, η προσφυγή κατά απορριπτικής απόφασης, δεχόταν έναν και μόνο σύνδεσμο σε όλο το site. Κάποιος του οποίου μόλις απορρίφθηκε το σήμα ψάχνει ακριβώς αυτό.

Η λύση ήταν χειροκίνητη θεματική αντιστοίχιση, όχι αυτόματη. Κάθε άρθρο και κάθε σελίδα οδηγού απέκτησε δύο ή τρεις συνδέσμους προς σελίδες που πραγματικά σχετίζονται, επιλεγμένους έναν προς έναν.

Το λάθος που κάναμε και το πιάσαμε στη μέτρηση

Αξίζει να ειπωθεί, γιατί δείχνει γιατί ξαναμετράς μετά από κάθε αλλαγή.

Κάτω από κάθε άρθρο προσθέσαμε υπογραφή συντάκτη, με σύνδεσμο προς μια δεύτερη σελίδα. Στην επόμενη μέτρηση φάνηκε ότι η σελίδα-στόχος είχε γίνει ο μεγαλύτερος αποδέκτης εσωτερικής αξίας σε ολόκληρο το site, με είκοσι πανομοιότυπα κείμενα συνδέσμου.

Είκοσι ίδιοι σύνδεσμοι από είκοσι σελίδες δεν είναι συντακτικοί σύνδεσμοι, είναι υποσέλιδο με άλλο όνομα, και η Google τους προσμετρά ανάλογα. Ο σύνδεσμος αφαιρέθηκε. Το μπλοκ σχετικών σελίδων από κάτω κάνει ήδη τη δουλειά, με επιλεγμένους στόχους ανά άρθρο και με εναλλασσόμενα κείμενα συνδέσμου, ώστε ο ίδιος προορισμός να μη δέχεται πάντα την ίδια φράση.

Ταχύτητα: το LCP ήταν ένα διακοσμητικό σύμβολο

Στη μέτρηση επιδόσεων η εικόνα ήταν ήδη καλή, αλλά η μονάδα που έλειπε βρισκόταν σε απροσδόκητο σημείο. Το στοιχείο που καθόριζε τον χρόνο εμφάνισης του κυρίως περιεχομένου ήταν ένα διακοσμητικό σύμβολο σήματος, τυπωμένο σε τεράστιο μέγεθος με ελάχιστη διαφάνεια, στο φόντο της αρχικής. Ήταν το μεγαλύτερο κείμενο της σελίδας, οπότε μετρούσε ως το κύριο περιεχόμενο, και περίμενε να κατέβει η γραμματοσειρά από εξωτερικό διακομιστή για να ζωγραφιστεί.

Χρειάστηκαν τρεις αλλαγές. Η γραμματοσειρά φιλοξενείται πλέον τοπικά, σε ελληνική και λατινική εκδοχή, μόλις 31 KB συνολικά, με προφόρτωση, οπότε έφυγαν δύο συνδέσεις σε εξωτερικούς διακομιστές από την κρίσιμη διαδρομή. Το διακοσμητικό σύμβολο αποδίδεται με γραμματοσειρά συστήματος και σημειώνεται ως διακοσμητικό για τα αναγνωστικά βοηθήματα, οπότε ζωγραφίζεται στο πρώτο βάψιμο χωρίς να περιμένει τίποτα. Και τα σενάρια μέτρησης φορτώνουν μετά την πρώτη αλληλεπίδραση, με την ουρά συμβάντων να χτίζεται κανονικά από την αρχή, ώστε να μη χάνεται καμία μέτρηση.

Παράλληλα, έντεκα λογότυπα πελατών μετατράπηκαν σε σύγχρονη συμπίεση, από 70 KB σε 36 KB, με δηλωμένες διαστάσεις ώστε να μη μετατοπίζεται η σελίδα καθώς φορτώνει.

Στη μέτρηση μετά τις αλλαγές, το site βγάζει σε κινητό 99 στις επιδόσεις και 100 σε προσβασιμότητα, βέλτιστες πρακτικές και SEO, με Largest Contentful Paint στο 1,2 δευτερόλεπτο και Cumulative Layout Shift στο μηδέν. Πιο σημαντικό από το εργαστηριακό σκορ είναι ότι τα δεδομένα πραγματικών επισκεπτών του Chrome δείχνουν επίσης LCP ένα δευτερόλεπτο, INP 108 χιλιοστά και μηδενική μετατόπιση, δηλαδή το site περνάει τα Core Web Vitals με πραγματικούς χρήστες, σε πραγματικές συσκευές και συνδέσεις.

Έτοιμο για πράκτορες AI

Το PageSpeed Insights προσθέτει πλέον κατηγορία για το πόσο εύκολα ένας πράκτορας τεχνητής νοημοσύνης μπορεί να διαβάσει και να χρησιμοποιήσει μια σελίδα. Το site έπαιρνε 1 στα 3. Δύο έλεγχοι έπεφταν.

Δεν υπήρχε αρχείο llms.txt, το αντίστοιχο του robots.txt για τα γλωσσικά μοντέλα: ένα αρχείο που περιγράφει τη δομή του περιεχομένου, ώστε να μη χρειάζεται να τη μαντέψουν. Το φτιάξαμε να παράγεται αυτόματα από τα ίδια δεδομένα με το υπόλοιπο site, με περίληψη και σαράντα συνδέσμους προς υπηρεσίες, οδηγούς και άρθρα με τις περιγραφές τους. Δεν πρόκειται να ξεμείνει, ενημερώνεται σε κάθε δημοσίευση.

Το δέντρο προσβασιμότητας είχε επίσης σφάλμα: τα τέσσερα πάνελ υπηρεσιών στην αρχική χρησιμοποιούσαν ρόλο που δεν επιτρέπεται στο συγκεκριμένο στοιχείο HTML. Ψάχνοντας αυτό, βρήκαμε κάτι που δεν το είχε πιάσει κανένα εργαλείο: τα ίδια πάνελ δήλωναν ότι τα ονοματίζουν συγκεκριμένα κουμπιά, αλλά δεν υπήρχε κανένα στοιχείο με αυτά τα αναγνωριστικά. Οι ετικέτες έδειχναν στο κενό, και ο αυτόματος έλεγχος προσβασιμότητας έβγαζε παρ’ όλα αυτά τέλειο σκορ. Και τα δύο διορθώθηκαν, και η κατηγορία βγάζει πλέον 3 στα 3.

Αυτή η κατηγορία δεν είναι διακοσμητική. Είναι η πρώτη φορά που ένα εργαλείο μετράει ρητά αν μια σελίδα είναι αναγνώσιμη από πράκτορα, και όποιος τη περάσει σήμερα είναι διαθέσιμος ως πηγή σε ένα κανάλι που μόλις ανοίγει.

Τι σημαίνει αυτό για ένα δικηγορικό γραφείο

Ένα δικηγορικό site δεν πουλάει με εντυπωσιασμό. Πουλάει με εμπιστοσύνη, και η εμπιστοσύνη χτίζεται από συγκεκριμένα σήματα: ποιος υπογράφει, τι έχει γράψει, πού έχει δημοσιευτεί, πόσο πρόσφατο είναι. Είναι ο λόγος που στην κατασκευή ιστοσελίδων για δικηγόρους η δομή της πληροφορίας μετράει περισσότερο από την αισθητική.

Η διαφορά ανάμεσα σε ένα site που τα λέει αυτά σε ανθρώπους και σε ένα site που τα λέει και σε μηχανές είναι ολόκληρη. Στο πρώτο, η Google πρέπει να συμπεράνει. Στο δεύτερο, της το λες.

Το ίδιο ισχύει, ακόμα πιο έντονα, για τα εργαλεία τεχνητής νοημοσύνης που απαντούν πλέον σε ερωτήσεις πριν ο χρήστης δει αποτελέσματα αναζήτησης. Όταν ένα μοντέλο ψάχνει ποιος ασχολείται με ένα εξειδικευμένο νομικό αντικείμενο στην Ελλάδα, διαβάζει δομή. Αν η δομή δεν υπάρχει, διαβάζει κάποιον άλλο. Δουλεύουμε έτσι σε κάθε έργο που αναλαμβάνουμε ως digital agency για δικηγόρους.

Πώς δουλεύουμε

Στη Symbols αγαπάμε τρία πράγματα, και φαίνονται και τα τρία σε αυτό το έργο: το branding, δηλαδή να αποκτήσει κάποιος το όνομά του και μια ταυτότητα που τον αντιπροσωπεύει. Τον σχεδιασμό, δηλαδή να δείχνει το site αυτό που είναι ο πελάτης, χωρίς θόρυβο. Και το performance web development, δηλαδή να είναι το αποτέλεσμα γρήγορο και καθαρό στον κώδικα, γιατί η ταχύτητα δεν είναι βελτιστοποίηση που μπαίνει στο τέλος, είναι απόφαση αρχιτεκτονικής που παίρνεται στην αρχή.

Ένα rebranding που καταλήγει σε αργό site δεν είναι rebranding, είναι καινούριο λογότυπο. Και ένα γρήγορο site που δεν λέει στις μηχανές ποιος είναι πίσω του αφήνει τη μισή δουλειά στη μέση. Γι’ αυτό τα τρία δεν πωλούνται χωριστά εδώ.

Συμπέρασμα

Ο δεύτερος κύκλος σε αυτό το έργο δεν ήταν ανασχεδιασμός. Το site ήταν ήδη καλό. Ήταν αρχιτεκτονική πληροφορίας: να γίνει ρητό ό,τι ήταν υπονοούμενο, να καθαριστούν οι σελίδες που ανταγωνίζονταν η μία την άλλη, να αποκατασταθεί η ροή ανάμεσά τους, και να ανακτηθεί ό,τι είχε χαθεί στη μεταφορά από το Blogger.

Όλα τα μεγέθη που βλέπετε πιο πάνω προέρχονται από ανάλυση του παραγόμενου site, με τα ίδια εργαλεία πριν και μετά. Κάθε αλλαγή μετρήθηκε δύο φορές. Μία από αυτές αποδείχθηκε λάθος στη δεύτερη μέτρηση και αναιρέθηκε. Αυτό είναι το νόημα του να μετράς.

Το ζωντανό αποτέλεσμα είναι στο psarakis-trademarks.com.

CASE STUDIES

Άλλα έργα που ίσως σας ενδιαφέρουν

Παρόμοιες υπηρεσίες, ίδια δομή: πρόβλημα, στρατηγική, before/after, μετρήσεις.

Όλα τα case studies →

Παρόμοιο έργο στο μυαλό σας;

Πες μας τι θέλεις να πετύχεις και θα σου στείλουμε σταθερή προσφορά σε 24 ώρες.