Bolehkah crawler AI membaca kandungan yang dirender oleh JavaScript?
Selalunya tidak. Googlebot merender JavaScript dalam langkah kemudian, tetapi kebanyakan crawler AI tidak mendokumentasikan berbuat demikian, dan Google sendiri menyatakan bahawa tidak semua bot boleh menjalankan JavaScript. Jika teks anda hanya muncul selepas skrip berjalan, crawler AI mungkin menerima halaman kosong. Hidangkan kandungan utama dalam HTML awal dengan server-side rendering atau halaman statik.
Aplikasi satu halaman dan rangka kerja sisi klien ada di mana-mana, dan dalam pelayar ia kelihatan baik. Crawler yang hanya membaca HTML yang dihantar pelayan anda melihat sesuatu yang lain: <div id="root"></div>, beberapa tag skrip dan sedikit atau tiada teks. Bagi jawapan AI, halaman itu tiada apa-apa untuk dipetik.
Dalam halaman ini
- Mengapa crawler AI terlepas kandungan JavaScript?
- Bagaimana saya menyemak apa yang diterima crawler?
- Halaman mana yang paling berisiko?
- Bagaimana saya membetulkan kandungan yang hanya wujud melalui JavaScript?
- Adakah skrin log masuk, persetujuan dan paywall turut menyekat crawler AI?
- Bagaimana AISeeWhy mengesan halaman yang hanya bergantung pada JavaScript?
Mengapa crawler AI terlepas kandungan JavaScript?
Menjalankan JavaScript itu mahal. Crawler perlu memuat turun skrip, melaksanakannya dalam enjin pelayar dan menunggu data dimuatkan. Google melakukannya untuk Search: ia menjelajah, menyusun halaman dalam baris gilir untuk dirender, dan merendernya dengan Chromium headless apabila sumber membenarkan. Walaupun begitu, Google mengesyorkan server-side rendering atau prerendering kerana ia lebih pantas untuk pengguna dan crawler, dan menyatakan bahawa tidak semua bot boleh menjalankan JavaScript.
OpenAI, Anthropic dan Perplexity tidak menyatakan dalam dokumentasi crawler mereka bahawa ejen mereka melaksanakan JavaScript. Apple menyatakan Applebot mungkin merender halaman dalam pelayar. Tanpa pernyataan yang jelas, andaian yang selamat untuk crawler AI ialah mereka hanya membaca HTML awal.
Bagaimana saya menyemak apa yang diterima crawler?
Lihat HTML mentah, bukan halaman yang telah dirender. Alat pembangun pelayar menunjukkan DOM selepas skrip berjalan, yang bukan apa yang diterima crawler. Gunakan view-source, atau simpan HTML mentah dari baris perintah dan cari di dalamnya:
curl -s -o page.html \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
https://example.com/page
# Is a sentence from your main text in the raw HTML?
grep -c "a sentence from your main content" page.html
Keputusan 0 bermakna ayat itu tiada dalam HTML yang dihantar pelayan, jadi crawler yang tidak menjalankan skrip tidak akan menemuinya. Sekali pandang pada fail itu menjelaskan selebihnya: artikel yang dirender pelayan mempunyai teks penuhnya di situ; rangka sisi klien mempunyai elemen akar yang kosong dan senarai skrip.
Halaman mana yang paling berisiko?
- Aplikasi satu halaman yang dibina dengan React, Vue, Angular atau Svelte yang merender segalanya dalam pelayar.
- Halaman yang mengambil teks utamanya daripada API selepas dimuatkan, seperti butiran produk, harga atau ulasan.
- Kandungan dalam tab, akordion atau bahagian "muat lagi" yang hanya diminta apabila diklik.
- Halaman di sebalik log masuk, paywall atau consent wall yang tidak dapat dilepasi crawler.
- Halaman yang menetapkan
noindexatau URL kanonik hanya melalui JavaScript. Google memberi amaran bahawa apabila ia melihatnoindexdalam HTML asal, ia mungkin melangkau rendering sepenuhnya.
Bagaimana saya membetulkan kandungan yang hanya wujud melalui JavaScript?
Pembetulannya ialah menghantar kandungan penting dalam respons pertama. Pilih pilihan teringan yang dibenarkan oleh stack anda:
- Server-side rendering (SSR): rangka kerja seperti Next.js, Nuxt, SvelteKit dan Angular SSR merender halaman di pelayan dan melakukan hydrate dalam pelayar.
- Penjanaan statik atau prerendering: bina HTML semasa deploy untuk halaman yang jarang berubah, seperti artikel, dokumen dan landing page.
- Progressive enhancement: letakkan teks, heading, pautan, harga dan JSON-LD dalam HTML dan gunakan JavaScript hanya untuk interaksi.
- Sertakan yang penting secara inline: jika tab menyembunyikan kandungan, letakkan semuanya dalam HTML dan togol keterlihatan dengan CSS atau skrip, dan bukannya mengambilnya apabila diklik.
Anda tidak perlu menukar keseluruhan aplikasi sekali gus. Mulakan dengan halaman yang anda mahu dipetik: artikel, dokumentasi, halaman produk dan harga. Kawasan akaun dan papan pemuka boleh kekal di sisi klien, kerana ia memang berada di sebalik log masuk.
Elakkan menghidangkan halaman yang berbeza kepada crawler berbanding pengguna berdasarkan user agent. Merender HTML yang sama untuk semua orang lebih mudah diselenggara dan mengelakkan sebarang keraguan tentang cloaking.
Adakah skrin log masuk, persetujuan dan paywall turut menyekat crawler AI?
Ya. Crawler tidak log masuk, tidak mengklik sepanduk cookie dan tidak menyelesaikan cabaran. Anthropic menyatakan bot-nya tidak akan cuba memintas CAPTCHA. Jika pengurus persetujuan menggantikan halaman dengan tindanan skrin penuh dalam HTML, atau mengalihkan pelawat kali pertama ke halaman persetujuan, crawler mendapat itu dan bukan kandungan anda.
Pastikan halaman awam merender kandungannya dalam HTML tanpa mengira status persetujuan, dengan sepanduk sebagai tindanan dan bukan pengganti. Pastikan halaman yang anda mahu dipetik berada di luar tembok log masuk, dan semak bahawa crawler tidak dialihkan ke halaman daftar masuk.
Bagaimana AISeeWhy mengesan halaman yang hanya bergantung pada JavaScript?
AISeeWhy membaca HTML awal seperti yang diterima setiap crawler, tanpa menjalankan skrip. Apabila sesebuah halaman hampir tiada teks yang kelihatan tetapi mempunyai elemen akar rangka kerja dan skrip, ia melaporkan penemuan P1 bahawa kandungan memerlukan JavaScript. Ia juga menandakan pengalihan yang menghantar crawler ke tempat lain selain halaman yang diterima pelayar.
Soalan lazim
Adakah Googlebot merender JavaScript?
Ya. Google menjelajah HTML, menyusun halaman dalam baris gilir untuk dirender dan merendernya dengan Chromium headless apabila sumber membenarkan. Google tetap mengesyorkan server-side rendering atau prerendering.
Adakah crawler ChatGPT, Claude dan Perplexity menjalankan JavaScript?
Dokumentasi crawler vendor mereka tidak menyatakannya. Sehingga vendor menyatakan sebaliknya, anggap crawler membaca HTML awal dan pastikan kandungan anda ada di dalamnya.
Adakah dynamic rendering untuk bot idea yang baik?
Ia berfungsi sebagai penyelesaian sementara tetapi menambah laluan rendering kedua yang perlu diselenggara. Server-side rendering atau HTML statik menghidangkan kandungan yang sama kepada semua orang dan merupakan pembetulan jangka panjang yang lebih mudah.
Adakah JSON-LD yang ditambah oleh JavaScript diambil kira?
Google boleh membacanya selepas rendering, tetapi crawler yang tidak menjalankan skrip tidak akan melihatnya. Letakkan JSON-LD dalam HTML awal.
Sumber
- Google Search Central: JavaScript SEO basics
- Apple: About Applebot
- OpenAI: Overview of OpenAI crawlers
- Anthropic: Does Anthropic crawl data from the web, and how can site owners block the crawler?
- Perplexity: Perplexity crawlers