Cara Memakai Jev untuk SEO dan GEO: Search Intent, Penilaian Passage, dan Pelacakan Jawaban AI
Jev, decision model dari TypeSafe AI, tidak menulis konten. Ia menjawab pertanyaan yang jawabannya terbatas, lengkap dengan probabilitas. Panduan ini menunjukkan tempatnya dalam kerja SEO dan GEO: mengklasifikasikan search intent untuk daftar keyword, menilai apakah sebuah passage layak dikutip oleh AI answer engine, memberi label pada cara jawaban ChatGPT atau Perplexity menyebut brand Anda, dan menandai draf AI sebelum terbit, lengkap dengan Python dan curl yang bisa langsung disalin.
- #jev
- #typesafe-ai
- #seo
- #geo
- #generative-engine-optimization
- #search-intent
- #content-scoring
- #ai-search
Tipe pertanyaan Jev mana yang cocok untuk tugas SEO dan GEO apa?
| Question type | What it returns | SEO use | GEO use |
|---|---|---|---|
| Choice | The top option, a probability per option, and a confidence (1 to 255 options) | Search intent, page type, topic cluster, which of two titles fits a query better | How an AI answer treats your brand: recommended, mentioned, competitors only, absent |
| Score | A probability-weighted level on your ordered rubric (1 to 10 levels), per-level probabilities, a legend | How well a page or snippet matches a target query | How quotable a passage is on its own (answer readiness) |
| Noul | A probability from 0 to 1 that a statement is true | Does the draft state a figure without a source? Is this keyword off-topic for the site? | Does the first sentence answer the question? Does the passage give a concrete fact? |
Bagaimana cara memakai Jev untuk SEO dan GEO?
- 1
Ambil API key dan instal SDK
Buat key di console.typesafe.ai/keys lalu export sebagai TYPESAFE_API_KEY; SDK membacanya dari sana. SDK Python butuh Python 3.10 atau lebih baru; SDK JavaScript (@typesafe-ai/sdk) butuh Node.js 20 atau lebih baru. Sebelum menulis kode, coba satu pertanyaan di Playground (console.typesafe.ai/playground) untuk melihat bentuk jawabannya. Pakai alias model jev-latest. Response menyebut versi persis yang menjawab (misalnya jev-1.13.0); simpan bersama hasil Anda, karena output bisa berubah antar rilis.
Terminal export TYPESAFE_API_KEY="your-api-key" python3 -m venv .venv .venv/bin/pip install typesafe-sdk
- 2
Klasifikasikan search intent untuk daftar keyword Anda
Ekspor keyword dari Search Console atau tool keyword ke keywords.csv lalu jalankan masing-masing lewat pertanyaan Choice dengan empat intent (skrip lengkap ada di contoh di bawah). Tulis setiap opsi sebagai deskripsi, bukan sekadar label: Jev memutuskan dari deskripsinya, dan criterion yang dibiarkan null dinilai dari namanya saja. Simpan confidence di samping setiap baris dan kirim yang di bawah batas Anda ke manusia. Intent menentukan jenis halaman yang Anda buat, jadi keyword yang salah klasifikasi merugikan satu halaman, bukan satu sel.
- 3
Nilai setiap passage untuk kesiapan menjawab (GEO)
AI answer engine mengutip passage, bukan halaman. Untuk setiap pertanyaan yang ditargetkan sebuah halaman, kirim query dan passage bersama-sama sebagai state lalu ajukan pertanyaan Score: seberapa baik passage ini menjawab query secara mandiri, kalau dikutip tanpa sisa halaman? Tambahkan dua cek Noul: apakah kalimat pertama menjawab query, dan apakah passage memberi angka, langkah, tanggal, atau nama yang konkret? Tulis ulang passage yang nilainya rendah, lalu nilai lagi. Ini mengukur rubrik Anda, bukan ranking engine mana pun, jadi anggap sebagai checklist yang bisa diskalakan, bukan prediksi kutipan.
- 4
Pilih antara dua judul atau snippet untuk sebuah query
Saat Anda punya dua kandidat judul, meta description, atau paragraf pembuka, taruh query dan kedua kandidat di state lalu ajukan pertanyaan Choice dengan opsi a dan b. Probabilitasnya menunjukkan seberapa jelas preferensinya: 0,9 lawan 0,1 adalah keputusan, 0,55 lawan 0,45 adalah lempar koin yang sebaiknya Anda putuskan sendiri atau lewat tes live. Ajukan pertanyaan yang sama dengan a dan b ditukar untuk menangkap bias posisi sebelum memercayai hasilnya.
- 5
Beri label pada jawaban AI yang Anda kumpulkan untuk prompt Anda
Jev tidak bertanya ke ChatGPT, Perplexity, atau Gemini, dan tidak menjelajah web. Kumpulkan sendiri jawaban mereka untuk sekumpulan prompt tetap yang biasa ditanyakan pembeli Anda, lalu kirim setiap jawaban ke Jev dengan pertanyaan Choice tentang perlakuannya terhadap brand Anda (direkomendasikan, disebut, hanya kompetitor, tidak muncul) dan pertanyaan Noul tentang apakah framing-nya positif. Jalankan prompt yang sama dengan jadwal yang sama agar label bisa dibandingkan dari minggu ke minggu. Apakah domain Anda muncul di sumber yang dikutip adalah pencocokan string persis: lakukan di kode, bukan dengan Jev.
- 6
Tandai draf tulisan AI sebelum terbit
Kalau draf Anda ditulis LLM, taruh Jev di antara penulis dan CMS. Ajukan pertanyaan Noul yang menangkap kegagalan yang merugikan SEO dan GEO: draf menyebut angka tanpa menyebut sumbernya; intro hanya mengulang judul tanpa menambah informasi; draf menjawab pertanyaan yang berbeda dari target query. Kirim yang di atas batas Anda ke editor, jangan langsung diblokir. Jev menandai; manusia memutuskan.
- 7
Tentukan ambang batas dari contoh berlabel milik Anda
Beri label manual pada 50 sampai 100 contoh untuk setiap pertanyaan (keyword dengan intent yang akan Anda pilih, passage yang akan atau tidak akan Anda kutip) lalu jalankan Jev atas contoh itu. Pilih batas di mana jawabannya cukup sering sama dengan jawaban Anda, sesuai mahalnya sebuah kesalahan. TypeSafe menjelaskan probabilitasnya terkalibrasi secara agregat: dari banyak jawaban, 0,8 seharusnya benar sekitar 80% dari waktu, dan satu jawaban tetap bisa salah. Confidence menggambarkan seberapa terkonsentrasi probabilitasnya, bukan apakah jawabannya benar, jadi ia pemicu review, bukan ukuran akurasi.
- 8
Opsional: berikan skill TypeSafe ke coding agent Anda
Kalau Anda membuat skrip ini dengan Claude Code atau coding agent lain, instal skill resmi TypeSafe supaya agent mengenal API-nya, bukan menebak. Instalasi default-nya lokal per project; tambahkan -g untuk instal global. Lalu minta agent membuat salah satu skrip di atas dan review hasilnya dengan contoh di panduan ini.
Terminal # Claude Code claude plugin marketplace add typesafe-ai/skills claude plugin install typesafe@typesafe-ai # other agents npx skills add typesafe-ai/skills --skill typesafe-ai
Skrip yang siap disalin
import csv
from typesafe_sdk import Choice, TypeSafeClient
INTENT = Choice(
instructions="The main search intent behind this query",
criteria={
"informational": "Wants to learn or understand something",
"commercial": "Comparing products, brands, or options before buying",
"transactional": "Ready to buy, sign up, or download now",
"navigational": "Looking for one specific site, brand, or page",
},
)
REVIEW_BELOW = 0.6 # starting point; set yours from labeled examples
with TypeSafeClient(model="jev-latest") as client, \
open("keywords.csv") as src, open("intent.csv", "w", newline="") as dst:
out = csv.writer(dst)
out.writerow(["keyword", "intent", "confidence", "needs_review", "model"])
for row in csv.DictReader(src):
r = client.system_one(state=row["keyword"], questions={"intent": INTENT})
a = r.choices["intent"]
out.writerow([row["keyword"], a.choice, round(a.confidence, 2),
a.confidence < REVIEW_BELOW, r.model])keywords.csv butuh kolom keyword. Satu request per keyword membuat skrip tetap sederhana; untuk daftar besar, pakai AsyncTypeSafeClient yang juga tersedia di SDK.
from typesafe_sdk import Noul, Score, TypeSafeClient
query = "how to reset a router to factory settings"
passage = open("passage.txt").read()
with TypeSafeClient(model="jev-latest") as client:
r = client.system_one(
state={"query": query, "passage": passage},
questions={
"readiness": Score(
instructions="How well the passage answers the query on its own, "
"if quoted without the rest of the page",
criteria=[
"Does not answer the query",
"Mentions the topic, but the answer is vague or buried",
"Answers the query, but needs surrounding context to make sense",
"Answers the query directly and completely, self-contained",
],
),
"answer_first": Noul(
instructions="The first sentence of the passage directly answers the query"),
"specific": Noul(
instructions="The passage gives a concrete figure, step, date, or name "
"rather than general statements"),
},
)
readiness = r.scores["readiness"]
print("readiness", round(readiness.score, 2), "of 3", readiness.probabilities)
print("answer_first", r.nouls["answer_first"].noul)
print("specific", r.nouls["specific"].noul)Level Score dimulai dari 0, jadi rubrik empat level ini mengembalikan nilai 0 sampai 3. Nilainya rata-rata berbobot probabilitas dan bisa berada di antara level (misalnya 2,4). Batasi setiap passage pada paragraf yang ingin dikutip; state yang panjang lebih lambat dan kurang akurat.
curl --fail-with-body --silent --show-error \
https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "jev-latest",
"state": {
"brand": "Acme CRM",
"prompt": "best CRM for a 10-person sales team",
"answer": "<paste the AI answer here>"
},
"questions": {
"brand_status": {
"type": "choice",
"instructions": "How the answer treats the brand",
"criteria": {
"recommended": "The brand is recommended or listed as a top pick",
"mentioned": "The brand is named, but not recommended",
"competitors_only": "Other products are named; the brand is not",
"absent": "No product or brand is named"
}
},
"favorable": {
"type": "noul",
"instructions": "Where the brand is named, it is described favorably"
}
}
}
JSONResponse berisi answers.brand_status.choice beserta probabilitasnya, answers.favorable.noul, dan usage.input_tokens. Simpan prompt, engine, tanggal, dan field model bersama setiap label.
Cara menulis pertanyaan Jev yang bisa diandalkan
Deskripsikan setiap opsi
Criterion Choice dengan deskripsi lebih baik daripada yang hanya nama. "commercial: membandingkan produk sebelum membeli" menyisakan lebih sedikit ruang tafsir daripada "commercial".
Urutkan level Score dari terendah ke tertinggi
Score bersifat ordinal. Setiap level harus punya posisi nyata pada satu skala, dijelaskan dengan kata-kata. Mencampur dua dimensi (panjang dan akurasi) dalam satu rubrik menghasilkan angka yang tidak berarti keduanya.
Ajukan beberapa pertanyaan dalam satu panggilan
Pertanyaan berbagi satu state, jadi intent, jenis halaman, dan cek off-topic untuk keyword yang sama sebaiknya ada dalam satu request. Input token ditagih; menurut dokumentasi API TypeSafe, output token saat ini gratis.
Simpan aritmetika dan aturan pasti di kode
Selisih klik, CTR, jumlah kata, dan "apakah URL ini berisi domain kita" adalah urusan kode. Jev untuk penilaian yang tidak bisa dibuat regex.
Jaga state tetap pendek
Kirim passage, snippet, atau jawaban yang sedang dinilai, bukan seluruh halaman. Konteks panjang lebih lambat dan kurang akurat, dan butuh header opt-in tambahan.
Pertanyaan yang sering diajukan
Apa itu Jev?
Jev adalah decision model dari TypeSafe AI. Anda mengirim konten (state) dan pertanyaan bernama dengan tiga tipe utama, Choice, Score, dan Noul, lalu ia mengembalikan jawaban bertipe dengan probabilitas, bukan teks hasil generate. Jev tersedia lewat API TypeSafe di api.typesafe.ai/v1/systemone serta SDK Python dan JavaScript.
Bisakah Jev menulis konten SEO atau meta description?
Tidak. Jev tidak pernah mengembalikan teks bebas. Pakai model penulis untuk membuat draf, lalu pakai Jev untuk memilih antar draf, menilainya berdasarkan rubrik Anda, atau menandai masalah sebelum di-review editor.
Apakah Jev mengecek apakah ChatGPT atau Perplexity menyebut brand saya?
Tidak dengan sendirinya. Jev tidak menjelajah web atau bertanya ke AI engine lain. Anda yang mengumpulkan jawaban untuk prompt Anda, lalu Jev memberi label pada masing-masing: direkomendasikan, disebut, hanya kompetitor, atau tidak muncul. Itu mengubah tumpukan jawaban menjadi angka yang bisa dipantau dari waktu ke waktu.
Kapan memakai Choice, Score, atau Noul?
Pakai Choice saat jawabannya salah satu dari beberapa kategori bernama (search intent). Pakai Score saat jawabannya posisi pada skala berurutan (seberapa baik passage menjawab query). Pakai Noul untuk satu pernyataan ya atau tidak (kalimat pertama menjawab pertanyaan).
Bagaimana Jev ditagih?
Dokumentasi API TypeSafe menyebut input token ditagih dan output token saat ini gratis. Setiap response mengembalikan usage.input_tokens, jadi Anda bisa mengukur biaya batch pada beberapa baris sebelum menjalankan seluruh daftar. Cek console TypeSafe untuk harga terkini.
Poin utama
Jev adalah penilai, bukan penulis. Pakai Choice untuk search intent dan cara jawaban AI memperlakukan brand Anda, Score untuk seberapa layak sebuah passage dikutip secara mandiri, dan Noul untuk cek tunggal seperti pembuka yang langsung menjawab atau angka tanpa sumber. Deskripsikan setiap opsi, batasi state pada teks yang sedang dinilai, dan serahkan aritmetika serta pencocokan persis ke kode. Tentukan ambang batas dari 50 sampai 100 contoh yang Anda beri label sendiri, catat versi model di setiap hasil, dan anggap skor sebagai alasan untuk review, bukan prediksi ranking atau kutipan.