לאורך שנים רבות הוגדרו טקסטים וקישורים מוסתרים, ובמיוחד טקסטים הכוללים את מילות המפתח בצפיפות חריגה, כעבירה על ההנחיות של Google למנהלי אתרים. טקסט מוסתר הוא טקסט המופיע בקוד הדף, אך הגולש לא יכול לראותו. טקסט מוסתר באתר יכול לגרום לירידה בביצועי האתר בתוצאות החיפוש, ואף לכך שהאתר ייענש על ידי גוגל, ויוסר לחלוטין מתוצאות החיפוש. אילו טקסטים מוסתרים מוגדרים על ידי גוגל כבעייתיים, וכיצד נוכל להימנע מן העונשים הללו?
ההנחיות העדכניות של גוגל בנושא טקסט מוסתר מתייחסות למספר מקרים עיקריים:
- שימוש בטקסט בצבע זהה (או דומה מאד) לצבע הרקע
- מיקום טקסט מאחורי תמונה או אובייקט אחר
- שימוש ב-CSS על מנת למקם את הטקסט מחוץ לאזור המוצג לגולש
- הגדרת גודל גופן קטן מאד עד שהטקסט בלתי קריא
- הגדרת קישור כאשר אובייקט קטן משמש עבורו כעוגן (תמונה קטנה, אות בודדת או טקסט ריק)
כדאי להוסיף לשיטות אלה שיטה שלא מופיעה בהנחיות כיום, אך דורשת לדעתי התייחסות זהה, והיא הכנסה של תוכן אל תוך מיכל (container) אותו מגדירים כ-invisible או כ-display: none ללא יכולת של הגולש להציגו.
חשוב לציין כי גוגל מגדירים טקסט מוסתר ככזה שמטרתו להטעות את רובוט הסריקה של גוגל, ולהשפיע בצורה בלתי הוגנת על תוצאות החיפוש. מכאן שלא כל טקסט מוסתר הוא טקסט בעייתי בעיני גוגל. קיימים מספר מקרים בהם טקסט מוסתר אינו נחשב לשימוש העובר על ההנחיות:
- הכנסת תיאור עבור פריטים שאינם קריאים לגוגל לצורך שיפור הנגישות באתר (תמונות, יחידות JavaScript, קבצי פלאש, אזורי Ajax, וכו').
- הכנסת טקסט המוסתר בתחילה, אך ניתן לראותו בעקבות פעולה של הגולש (טאבים, הרחבת טקסט עם "קרא עוד", תפריטים נפתחים וכו').
טקסט לצורך שיפור הנגישות באתר
גולשים הסובלים ממגבלות ראייה עושים ברוב המקרים שימוש בתוכנת "קורא מסך", המקריאה להם את הטקסטים המופיעים על גבי המסך. אך מה קורה כאשר התוכנה מגיעה אל תמונה המופיעה בדף? על מנת לטפל במצבים אלה, יוצרים בעלי אתרים רבים טקסט המופיע בדף, לדוגמא, ככותרת, אך לאחר עליית הדף מוחלף בתמונה באמצעות שימוש בטכנולוגיית CSS, פעולה הנקראת CSS Image Replacement. בצורה זו ניתן להנות משני העולמות – תוכנת "קורא המסך" יכולה להקריא את הטקסט המקורי, והגולשים הרגילים רואים את התמונה שהחליפה אותו.
ההנחיות של גוגל במקרים של טקסט שנועד לשיפור הנגישות באתר הן פשוטות – על הטקסט המוסתר להיות זהה לטקסט המופיע באובייקט המסתיר אותו. אם, לדוגמא, אני ממקם טקסט מאחורי תמונה בה מופיע הטקסט "לחץ כאן", אז הטקסט המוסתר צריך להיות "לחץ כאן". ההנחיה שונה רק במקרה של סרטונים, בהם מומלץ לכלול תיאור של הסרטון או תמלול שלו בטקסט המוסתר.
תוכן המוצג רק לאחר פעולה של הגולש
מבחינת גוגל קיימת בעיה עם תוכן המופיע רק לאחר פעולה של הגולש. הסיבה לכך פשוטה: כאשר גולש חיפש נושא מסויים בגוגל, בחר מתוצאות החיפוש דף מסויים, אך התוכן אותו חיפש אינו מוצג בדף כברירת מחדל, אז ברוב המקרים הגולש יתאכזב ויעזוב את האתר.
מסיבה זו הודיעו גוגל בעבר כי טקסט שאינו מוצג על גבי הדף כברירת מחדל אמנם יאונדקס, אך יקבל רמת חשיבות נמוכה מטקסט המוצג כברירת מחדל. מצב זה כולל בעיקר שני מצבים נפוצים:
- חלוקת תוכן בדף למספר טאבים, כך שהגולש לוחץ על הטאבים בכדי להציג תכנים שונים ללא מעבר URL.
- יצירת תקציר של תוכן עם קישור "קרא עוד…", שלחיצה עליו מציגה את שאר התוכן ללא מעבר URL.
גוגל סורק את האתר כמו גולש רגיל
על מנת לדעת איזה תוכן מוצג לגולש ואיזה לא, גוגל סורק כבר זמן רב את דפי האינטרנט באמצעות שני רובוטים. הרובוט הראשון סורק את קוד ה-HTML של הדף, ואילו הרובוט השני מבצע בניה מלאה של הדף כפי שהגולש רואה אותו. אחת המטרות של בניית הדף כפי שהוא נראה על ידי הגולש היא לראות היכן על גבי הדף מופיע התוכן כאשר גולש צופה בדף (לצורך אלגוריתם Page Layout), ובמקביל, איזה תוכן הגולש לא רואה ואיזה תוכן מוסתר. על מנת לסייע לבעל האתר לראות כיצד גוגל רואה את הדפים השונים באתר, נוספה במסגרת מערכת Google Search Console תחת סריקה -> אחזר כמו גוגל האפשרות לבצע פעולת "אחזר ועבד" על כל דף באתר, המציגה כיצד רואה הרובוט של גוגל את דפי האתר וכיצד רואה אותם הגולש.
שימוש בתוכן המוצג באמצעות JavaScript
קיימים אתרים רבים המשתמשים בטכנולוגיות JavaScript שונות על מנת להציג תוכן בתוך הדף ללא שינוי ה-URL שלו. הטכנולוגיות הללו כוללות שימוש בטכנולוגיות שונות כגון:
- JavaScript Array
- Ajax
- JQuery
- Angular (נפוץ יותר ויותר לאחרונה)
המשותף לכל הטכנולוגיות הללו הוא שימוש בקוד JavaScript לצורך הוספת או שינוי תוכן על גבי הדף, כאשר התוכן החדש איננו מופיע בקוד הדף (HTML) המופיע כברירת מחדל. הכוונה היא למצבים בהם רק לאחר פעולה של הגולש (לחיצה על טאב, לחיצה על כפתור "קרא עוד…", וכו') התוכן נטען לדף.
גוגל חזרו ואמרו (כולל ההודעה האחרונה מנובמבר 2015 שהתייחסה לשיטת ה-JavaScript array) כי תכנים המוצגים בשיטות זו לא יאונדקסו על ידי גוגל, אך מן הצד השני הם גם החלו לטעון כי יש ביכולתם לסרוק ולהבין תכנים אלו. בנושא זה ניכר בלבול בין ההצהרות של הדוברים השונים של גוגל…
חשוב לציין שוב כי לא כל מקרה של שימוש בטאבים או בקישור "קרא עוד…" מונע את סריקת התוכן על ידי גוגל. שימוש בטקסט המופיע בקוד הדף, אך מוסתר עד לביצוע פעולה על ידי הגולש, לא ימנע את אינדוקס הטקסט המוסתר, אלא רק יוריד את חשיבותו. ניתן ליצור טקסט כזה באמצעות יצירת יחידה מוסתרת (לדוגמא DIV) המוצגת באמצעות JavaScript לאחר פעולה של הגולש, או שימוש בתגי Summary ו-Detail של HTML5).
פיתרון לתוכן המוצג באמצעות JavaScript
במידה והאתר שלכם עושה שימוש רב בטכנולוגיית JavaScript לטעינת תוכן, היה בעבר פיתרון שאיפשר סריקה של תוכן ה-JavaScript (בעיקר תוכן שנוצר באמצעות טכנולוגיית Ajax) על ידי יצירת גירסה של התוכן ב-HTML, גירסה שסומנה באמצעות משתנה _escaped_fragment_. באוקטובר 2015 גוגל הודיעו כי הם אינם ממליצים עוד על שימוש בשיטה זו (ולכן גם לא ארחיב על השימוש בה).
במקביל גוגל הודיעו כי כיום יש להם את היכולת לקרוא ולהבין את התוכן המוצג באמצעות JavaScript, כל עוד הקבצים היוצרים את התוכן (JavaScript חיצוני ו-CSS) אינם חסום בפני הרובוט שלהם (בעיקר בקובץ robots.txt). משמעות הדבר היא כי גוגל מסוגל לסרוק את התכנים המופיעים בכתובות ה-#! של האתר. מדובר בחדשה טובה למערכות ניהול תוכן העושות שימוש נרחב בטכנולוגיות מסוג זה, כדוגמאת האתרים המופעלים על ידי מערכת Wix.
על מנת לסרוק תכני JavaScript, נראה שגוגל ביצעו שינוי בתהליך האינדוקס שלהם. בעבר התהליך כלל סריקה, הסרת HTML מהקוד ואינדוקס. כעת התהליך החדש הוא סריקה, רינדור (rendering), ואינדוקס.
אני מאמין כי גוגל מפרידים בין תוכן המוצג באמצעות JavaScript כברירת מחדל לבין תוכן הנטען ומוצג רק לאחר פעולת גולש בדומה לתוכן מוסתר, כלומר יורידו את ערכו של תוכן שלא מוצג כברירת מחדל. עם זאת, לא ברור אם תוכן הנטען באמצעות JavaScript כברירת מחדל יקבל את אותו המשקל כמו תוכן המופיע בקוד ה-HTML.
נושא נוסף אליו כדאי לשים לב בעת בניית אתר המשתמש ב-JavaScript ליצירת התוכן הוא יצירת דפים וירטואליים באתר באמצעות הכנסה מלאכותית של כתובות אל היסטוריית הגלישה של הדפדפן באמצעות הפעלת PushState(), אך זה נושא אותו אשאיר כבר לפוסט אחר.
אז האם גוגל רואה את הטקסט שלי או לא?
השאלה למעשה מתחלקת לשתי שאלות:
- האם גוגל רואה את הטקסט?
- האם גוגל נותן לטקסט משקל מלא?
על מנת לענות על השאלה הראשונה, ניתן להיכנס לעותק השמור (Cached) של הדף, לעבור לגירסה הטקסטואלית (Text only version), ולראות אם הטקסט המבוקש מופיע. גם אם הטקסט לא מופיע, עדיין כדאי לבצע הצגה של מקור הדף (view source), ולראות אם הטקסט מופיע כחלק ממקור הדף.
לגבי השאלה השניה, האם גוגל נותן לטקסט משקל מלא, ניתן לבצע חיפוש על גבי הדף (ctrl-f) ולראות אם הטקסט מופיע בחיפוש. אם הוא לא מופיע, אז כנראה שהוא לא מקבל משקל מלא.
אז מה עושים?
כאן מתנגשים שני כוחות משמעותיים. האחד הוא חווית המשתמש, שבגללה אתרים רבים בוחרים לארגן את התוכן על גבי הדף בצורה המגיבה להתנהגות הגולש (טאבים וכפתורי "קרא עוד…", על מנת להוריד את עומס המידע המוצג בדף. מן הצד השני, גוגל דוחף אותנו לכיוון דפים בהם התוכן מוצג כולו לגולש כברירת מחדל.
מכאן שבפני בעל האתר עומדות שלוש אפשרויות:
- לוותר על הצרכים של גוגל ולהתמקד בגולש.
- להפריד את התוכן לדפים בעלי url נפרד לכל תוכן.
- ליצור דפים ארוכים בהם כל התוכן מוצג כברירת מחדל.
אי אפשר לומר כי קיימת העדפה לאופציה מסויימת למעט בעיה מסויימת באופציה השניה. באופציה זו עלול התוכן להיות מוצא מן ההקשר שלו. במידה ומנסים לשמור על ההקשר (הטקסט המופיע מסביב ליחידת התוכן המתחלף) עלולה להיווצר בעיית תוכן משוכפל, ולכן השימוש באופציה 2 דורשת תכנון מעמיק.