Lompat ke konten
Intura
Alur Kerja & Otomasi AIMenengah12 mnt baca

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
Kebanyakan tool AI untuk SEO menulis. Jev tidak. Ia adalah apa yang disebut TypeSafe AI sebagai model System One: Anda memberi sebuah konten (state) dan sekumpulan pertanyaan, lalu ia mengembalikan jawaban bertipe, yaitu satu opsi dari daftar, satu level pada rubrik, atau probabilitas bahwa sebuah pernyataan benar. Ia tidak pernah mengembalikan teks bebas, dan tidak bisa mengarang statistik di dalam paragraf karena memang tidak ada paragraf. Itu membuatnya buruk sebagai penulis konten dan bagus sebagai penilai untuk keputusan berulang di dalam SEO dan GEO (generative engine optimization, kerja agar dikutip dalam jawaban AI dari ChatGPT, Perplexity, Gemini, dan Google AI Overviews). Intent apa yang dibawa keyword ini? Apakah passage ini menjawab pertanyaan secara utuh kalau AI engine mengutipnya tanpa sisa halaman? Apakah jawaban ChatGPT ini merekomendasikan kita, sekadar menyebut kita, atau hanya menyebut kompetitor? Masing-masing adalah pertanyaan dengan jawaban terbatas, ditanyakan ratusan kali, di mana angka yang bisa diberi ambang batas lebih berguna daripada paragraf yang harus dibaca. Kode dan nama field diambil dari dokumentasi TypeSafe (docs.typesafe.ai) dan package Python typesafe-sdk versi 0.7.5, keduanya dicek pada 20 Oktober 2026. Anda butuh akun TypeSafe dan dasar Python atau terminal.

Tipe pertanyaan Jev mana yang cocok untuk tugas SEO dan GEO apa?

Tipe pertanyaan Jev mana yang cocok untuk tugas SEO dan GEO apa?
Question typeWhat it returnsSEO useGEO use
ChoiceThe 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 betterHow an AI answer treats your brand: recommended, mentioned, competitors only, absent
ScoreA probability-weighted level on your ordered rubric (1 to 10 levels), per-level probabilities, a legendHow well a page or snippet matches a target queryHow quotable a passage is on its own (answer readiness)
NoulA probability from 0 to 1 that a statement is trueDoes 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. 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. 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. 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. 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. 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. 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. 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. 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

intent.py: search intent untuk daftar keyword
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.

passage.py: kesiapan menjawab untuk GEO
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: beri label jawaban AI untuk visibilitas brand
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"
    }
  }
}
JSON

Response 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.