@analitikisler/ai-tag-debugger 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +195 -46
- package/README.tr.md +334 -185
- package/package.json +5 -2
- package/src/agent.js +1 -1
- package/src/ask.js +123 -0
- package/src/audit.js +35 -13
- package/src/changes.js +66 -0
- package/src/checks.js +56 -1
- package/src/cli.js +176 -74
- package/src/discover.js +185 -0
- package/src/help.js +107 -0
- package/src/i18n.js +24 -0
- package/src/journeys.js +87 -8
- package/src/mcp.js +105 -11
- package/src/plan-html.js +76 -0
- package/src/plan.js +14 -0
- package/src/providers.js +1 -1
- package/src/report.js +59 -10
- package/src/sheet.js +321 -0
- package/src/workspace.js +77 -0
package/README.tr.md
CHANGED
|
@@ -2,71 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
# AI Tag Debugger
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**Web sitenizin analitik ve reklam takibini test eden, açık kaynaklı bir yapay zekâ ajanı.**
|
|
6
6
|
|
|
7
|
-
Bir yapay zekâ modeli
|
|
7
|
+
Bir yapay zekâ modeli gerçek bir tarayıcıyı, sitenizdeki temel yolculukları (ürün → sepet → ödeme, form gönderimleri) gerçek bir ziyaretçi gibi gezdirir. Gezerken `ai-tag-debugger` her GA4, Google Ads, Meta Pixel ve TikTok isteğini ve her dataLayer gönderimini kaydeder. Ardından bunları ölçümleme planınız ve Consent Mode kurulumunuzla karşılaştırır ve neyin bozulduğunu ve nasıl düzeltileceğini sade bir dille, Türkçe ya da İngilizce olarak yazılmış bir raporla anlatır.
|
|
8
8
|
|
|
9
9
|
İki şekilde kullanabilirsiniz:
|
|
10
10
|
|
|
11
|
-
- **
|
|
12
|
-
- **Yapay zekâ
|
|
11
|
+
- **Terminalinizden ya da CI'nizden**, kendi API anahtarınızla: Anthropic (Claude), OpenAI, Google Gemini veya OpenAI uyumlu herhangi bir API (Kimi, GLM, DeepSeek, OpenRouter, yerel bir Ollama ve daha fazlası).
|
|
12
|
+
- **Yapay zekâ sohbet uygulamanızdan** (Claude, ChatGPT, Gemini ve MCP destekleyen diğer uygulamalar). Denetimi uygulamanın kendi modeli yürütür, bu yüzden ayrı bir API anahtarına ihtiyacınız yoktur.
|
|
13
13
|
|
|
14
|
-
[Analitik İşler](https://analitikisler.com
|
|
14
|
+
[Analitik İşler](https://analitikisler.com) tarafından geliştirilmiştir. MIT lisanslıdır.
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
▶
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
▶ ödeme (mobil)
|
|
18
|
+
Çerezleri kabul et
|
|
19
|
+
İlk ürünü aç
|
|
20
|
+
Sepete ekle
|
|
21
|
+
Sepeti aç
|
|
22
|
+
Ödemeye geç
|
|
23
23
|
…
|
|
24
|
-
|
|
25
|
-
✓
|
|
24
|
+
Siparişi ver
|
|
25
|
+
✓ Tüm adımlar tamamlandı. · 20 takip isteği yakalandı
|
|
26
26
|
|
|
27
|
-
2
|
|
28
|
-
|
|
27
|
+
2 hatalı · 1 risk · 1 uyarı · 4 uygun
|
|
28
|
+
Rapor: reports/demo/localhost/runs/2026-10-16_0800/report.html
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## Neden
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Takip kodları sessizce bozulur. Bir yeniden tasarımda bir düğmenin adı değişir, yeni bir şablon bir alanı unutur, bir çerez onayı güncellemesi piksellerin çok erken çalışmasına yol açar. Kimse uyarı almaz. Bunu haftalar sonra öğrenirsiniz, reklam platformları da o zamana kadar hatalı dönüşümlere göre optimizasyon yapmış olur.
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Manuel etiket kontrolü bunu yakalar, ama zahmetlidir; bu yüzden her sürümden sonra nadiren yapılır. `ai-tag-debugger` bunu CI'nizde çalıştırabileceğiniz bir komuta dönüştürür.
|
|
36
36
|
|
|
37
37
|
## Neleri kontrol eder
|
|
38
38
|
|
|
39
39
|
| Kontrol | Örnek bulgu |
|
|
40
40
|
|---|---|
|
|
41
|
-
| Eksik event'ler |
|
|
42
|
-
| Eksik parametreler |
|
|
43
|
-
| Geçersiz satın alma değeri | `
|
|
44
|
-
| Geçersiz satın alma para birimi |
|
|
45
|
-
| Boş satın alma ürünleri | `
|
|
46
|
-
| Satın alma uyuşmazlığı | Aynı sipariş numarası için GA4
|
|
47
|
-
|
|
|
48
|
-
| Çerez onayı |
|
|
49
|
-
| Kişisel veri | Bir
|
|
50
|
-
| Planda olmayan event'ler | Ölçümleme planınızda bulunmayan event'ler
|
|
51
|
-
|
|
52
|
-
|
|
41
|
+
| Eksik event'ler | Ödeme yolculuğunda hiç `purchase` gönderilmemiş |
|
|
42
|
+
| Eksik parametreler | Mobilde `value` ve `currency` olmadan gönderilen `purchase` |
|
|
43
|
+
| Geçersiz satın alma değeri | `value` değeri `0`, negatif bir sayı ya da `"ücretsiz"` gibi bir metin olan `purchase` |
|
|
44
|
+
| Geçersiz satın alma para birimi | Para birimi `TRY` yerine `TL` ya da `USD` yerine `usd` olan `purchase` (3 harfli ISO kodu olmalı) |
|
|
45
|
+
| Boş satın alma ürünleri | `items` listesi boş gönderilen `purchase` |
|
|
46
|
+
| Satın alma uyuşmazlığı | Aynı sipariş numarası için GA4'ün 120, Meta'nın 115 gönderdiği durum |
|
|
47
|
+
| Tekrarlar | Tek bir tıklamayla iki kez gönderilen `add_to_cart` |
|
|
48
|
+
| Çerez onayı | Ziyaretçi çerezleri kabul etmeden fire olan Meta `PageView`, eksik ya da çok geç ayarlanmış Consent Mode varsayılanı, eksik Consent Mode v2 sinyalleri (`ad_user_data`, `ad_personalization`), onaydan önce ayarlanan takip çerezleri, `decline_cookies` yolculuğu reddettikten sonra hâlâ aktif olan etiket ya da çerezler, hiçbir şey yapmayan bir reddetme düğmesi |
|
|
49
|
+
| Kişisel veri | Bir reklam platformuna düz metin olarak gönderilen e-posta adresi |
|
|
50
|
+
| Planda olmayan event'ler | Ölçümleme planınızda bulunmayan, yine de fire olan event'ler |
|
|
51
|
+
| Plan kapsamı | Planlanan her event'in uygulandı, eksik, parametresi eksik, değeri hatalı ya da kontrol edilmedi olarak sınıflandırılması (bkz. [Plan ve site](#plan-ve-site)) |
|
|
52
|
+
|
|
53
|
+
Platformlar: GA4 (sitenin kendi alan adındaki sunucu tarafı GTM uç noktaları ve Google etiket geçidi yolları dahil; bir sunucu konteynerine giden istekler sunucu tarafı olarak işaretlenir, Stape ve Elevar istekleri tanınır), Google Ads dönüşümleri, Meta Pixel, TikTok Pixel ve temel X Pixel event'leri.
|
|
53
54
|
|
|
54
55
|
### Kontrol edilecek platformları seçin
|
|
55
56
|
|
|
56
|
-
Varsayılan olarak bir
|
|
57
|
+
Varsayılan olarak bir denetim GA4, Google Ads, Meta ve TikTok'u kontrol eder. Başka platformları `--platforms ga4,meta,x` ile, ayar dosyasındaki `"providers"` ile ya da MCP `start_audit` ve `run_audit` araçlarındaki `providers` ile seçebilirsiniz. Seçenekler: `ga4`, `google_ads`, `meta`, `tiktok`, `x`, `linkedin`, `microsoft_ads`, `pinterest`, `snapchat`, `clarity`, `hotjar`, `doubleclick` ve `adsense`. GA4, Google Ads, Meta, TikTok ve X için event'ler ayrıştırılır; diğerlerinin ağ istekleri gösterilir. `--providers` eski adı olarak bir minör sürüm daha çalışır ve bir not yazdırır.
|
|
57
58
|
|
|
58
|
-
Seçmediğiniz platformlara giden istekler de yerelde yanıtlanır, yani o hesaplara da ulaşmaz. Bu istekler zaman akışına, CSV'ye ve kontrollere alınmaz, sadece sayılır: rapor bunları istek sayılarıyla listeler (örneğin "Kapsam dışı 61 istek atlandı: Microsoft Clarity, DoubleClick") ve her adım kaç istek atladığını gösterir. `--
|
|
59
|
+
Seçmediğiniz platformlara giden istekler de yerelde yanıtlanır, yani o hesaplara da ulaşmaz. Bu istekler zaman akışına, CSV'ye ve kontrollere alınmaz, sadece sayılır: rapor bunları istek sayılarıyla listeler (örneğin "Kapsam dışı 61 istek atlandı: Microsoft Clarity, DoubleClick") ve her adım kaç istek atladığını gösterir. `--platforms` vermezseniz, ölçümleme planınızda geçen her platform varsayılan listeye eklenir. Dışarıda bıraktığınız platformlar için planlanmış event'ler eksik olarak raporlanmaz, tek bir bilgi bulgusunda listelenir. Etiket yöneticisi ve çerez onayı platformu istekleri her zaman gösterilir.
|
|
59
60
|
|
|
60
61
|
## Nasıl çalışır
|
|
61
62
|
|
|
62
|
-
1. **Gezinme:**
|
|
63
|
-
2. **
|
|
64
|
-
3. **Kontrol:** kurallar, yakalanan istekleri ölçümleme planınızla karşılaştırır. Bu
|
|
65
|
-
4. **Açıklama:**
|
|
63
|
+
1. **Gezinme:** Yapay zekâ modeli, sade bir dille yazılmış bir hedef ("sepete herhangi bir ürün ekle ve test ödeme yöntemiyle siparişi tamamla") ve sayfanın metin görünümünü alır. İki araçla çalışır: `browser_action` (goto, click, fill, select, scroll, wait) ve `finish`. Playwright ile her seferinde bir adım atar.
|
|
64
|
+
2. **Yakalama:** Bir takip uç noktasına giden her istek normalleştirilmiş isteklere ayrıştırılır ve isteği tetikleyen adımla etiketlenir. Her dataLayer gönderimi, bir başlatma betiği aracılığıyla kaydedilir; `gtag('consent', ...)` komutları da buna dahildir. Varsayılan olarak GA4, Google Ads, Meta, TikTok, Microsoft Ads, LinkedIn, Pinterest, Snapchat ve X'in toplama istekleri yerelde yanıtlanır, bu yüzden **test trafiği bu gerçek hesaplara ulaşmaz**. Diğer satıcıların etiketleri isteklerini göndermeye devam eder; zaman akışının ağ bölümü her çağrıyı ve yerelde yanıtlanıp yanıtlanmadığını gösterir.
|
|
65
|
+
3. **Kontrol:** Deterministik kurallar, yakalanan istekleri ölçümleme planınızla karşılaştırır. Bu bölüm yapay zekâ çağrısı gerektirmez, bu yüzden sonuçlar tekrarlanabilirdir.
|
|
66
|
+
4. **Açıklama:** Model bulguları, adım başına istekleri ve (isteğe bağlı olarak) GTM konteyner dışa aktarımınızı okur. Her sorun için olası nedeni ve düzeltmeyi yazar, ilgili etiket ve tetikleyicileri adlandırarak.
|
|
66
67
|
|
|
67
68
|
## Yapay zekâ sağlayıcıları
|
|
68
69
|
|
|
69
|
-
Kendi API anahtarınızı
|
|
70
|
+
Kendi API anahtarınızı getirirsiniz. `ai-tag-debugger` her sağlayıcının resmî SDK'sını kullanır:
|
|
70
71
|
|
|
71
72
|
| Sağlayıcı | API anahtarı değişkeni | Varsayılan model |
|
|
72
73
|
|---|---|---|
|
|
@@ -74,16 +75,16 @@ Kendi API anahtarınızı kullanırsınız. `ai-tag-debugger` her sağlayıcın
|
|
|
74
75
|
| OpenAI | `OPENAI_API_KEY` | `gpt-5.5` |
|
|
75
76
|
| Google Gemini | `GEMINI_API_KEY` | `gemini-pro-latest` |
|
|
76
77
|
|
|
77
|
-
Sağlayıcı,
|
|
78
|
+
Sağlayıcı, ayarlı olan anahtardan seçilir (birden fazla varsa önce Anthropic). `--provider anthropic|openai|gemini` ya da ayar dosyasındaki `"provider"` ile açıkça seçebilirsiniz; başka bir model için `--model` kullanın. Gezinme, çalışmaları ucuz tutmak için düşük akıl yürütme çabası ister; açıklamalar yüksek çaba ve yapılandırılmış JSON çıktısı ister.
|
|
78
79
|
|
|
79
|
-
### OpenAI uyumlu
|
|
80
|
+
### OpenAI uyumlu herhangi bir API: Kimi, GLM, DeepSeek, OpenRouter, Ollama ve daha fazlası
|
|
80
81
|
|
|
81
|
-
Birçok
|
|
82
|
+
Birçok sağlayıcı OpenAI'ınkine benzer çalışan bir API sunar. `ai-tag-debugger`'ı adresi ve bir model kimliğiyle ona yönlendirin:
|
|
82
83
|
|
|
83
84
|
```bash
|
|
84
|
-
export OPENAI_COMPATIBLE_API_KEY=... #
|
|
85
|
+
export OPENAI_COMPATIBLE_API_KEY=... # yerel bir Ollama için boş bırakın
|
|
85
86
|
ai-tag-debugger run --site https://yourshop.com --journey add_to_cart \
|
|
86
|
-
--provider openai-compatible --base-url <API
|
|
87
|
+
--provider openai-compatible --base-url <API adresi> --model <model kimliği>
|
|
87
88
|
```
|
|
88
89
|
|
|
89
90
|
| Sağlayıcı | `--base-url` |
|
|
@@ -96,114 +97,235 @@ ai-tag-debugger run --site https://yourshop.com --journey add_to_cart \
|
|
|
96
97
|
| OpenRouter (yüzlerce model) | `https://openrouter.ai/api/v1` |
|
|
97
98
|
| Bilgisayarınızdaki Ollama | `http://localhost:11434/v1` |
|
|
98
99
|
|
|
99
|
-
Model kimliğini sağlayıcınızın dokümantasyonundan alın. Bayrakların yerine `OPENAI_COMPATIBLE_BASE_URL` ve `OPENAI_COMPATIBLE_MODEL` değişkenlerini ya da ayar dosyasında `"provider"`, `"base_url"` ve `"model"` alanlarını da kullanabilirsiniz. API katı JSON
|
|
100
|
+
Model kimliğini sağlayıcınızın dokümantasyonundan alın. Bayrakların yerine `OPENAI_COMPATIBLE_BASE_URL` ve `OPENAI_COMPATIBLE_MODEL` değişkenlerini ya da ayar dosyasında `"provider"`, `"base_url"` ve `"model"` alanlarını da kullanabilirsiniz. API katı JSON şemalarını döndüremezse açıklamalar düz JSON moduna geçer.
|
|
100
101
|
|
|
101
|
-
**Model seçimi hakkında.** Yapay zekâ, 5
|
|
102
|
+
**Model seçimi hakkında bir not.** Yapay zekâ, 5 ila 30 adım boyunca araç çağırarak, her seferinde bir adım gezinir. Modeller bunu ne kadar güvenilir yaptıklarında büyük farklılık gösterir: daha küçük ve yerel modeller yanlış yere tıklayabilir, döngüye girebilir ya da erken durabilir. Kontroller model ne yaparsa yapsın doğrudur, çünkü yakalanan isteklerden gelirler; ama bitmeyen bir yolculuk, sonraki event'lerini gösteremez. Bir model zorlanıyorsa daha büyük bir model, kısa hedefli hazır bir yolculuk ya da `--max-steps` deneyin. Anthropic, OpenAI ve Gemini varsayılanları test edilmiş olanlardır.
|
|
102
103
|
|
|
103
|
-
|
|
104
|
+
Yerel bir sağlayıcı eklemek için [`src/providers.js`](src/providers.js) içinde iki fonksiyon yazmanız gerekir: araç çağıran bir konuşma ve yapılandırılmış bir JSON çağrısı.
|
|
104
105
|
|
|
105
106
|
## Hızlı başlangıç
|
|
106
107
|
|
|
107
|
-
Node 20
|
|
108
|
+
Node 20+ gerekir.
|
|
108
109
|
|
|
109
110
|
```bash
|
|
110
111
|
npm install -g @analitikisler/ai-tag-debugger
|
|
111
|
-
npx -y playwright@1.56.1 install chromium #
|
|
112
|
-
export ANTHROPIC_API_KEY=... #
|
|
112
|
+
npx -y playwright@1.56.1 install chromium # bu sürümün kullandığı tarayıcı sürümü
|
|
113
|
+
export ANTHROPIC_API_KEY=... # ya da OPENAI_API_KEY, ya da GEMINI_API_KEY
|
|
113
114
|
|
|
114
115
|
ai-tag-debugger run --site https://staging.yourshop.com --journey add_to_cart --headed
|
|
115
116
|
```
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
Genel kurulum, kısa bir takma ad olan `aitd`'yi de ekler: `aitd run --site … --journey add_to_cart` aynı işi yapar.
|
|
118
119
|
|
|
119
120
|
Ya da kurmadan çalıştırın: `npx -y @analitikisler/ai-tag-debugger run --site … --journey add_to_cart`.
|
|
120
121
|
|
|
121
|
-
|
|
122
|
+
Komutları görmek için `aitd --help`, her komutun seçenekleri için `aitd run --help` (ya da `plan`, `replay`, `mcp`) çalıştırın.
|
|
122
123
|
|
|
123
124
|
### Demo mağazayı deneyin (kaynak koddan)
|
|
124
125
|
|
|
125
|
-
|
|
126
|
+
Depo, üç bilerek yapılmış takip hatası içeren bir demo mağaza içerir:
|
|
126
127
|
|
|
127
128
|
```bash
|
|
128
129
|
git clone https://github.com/analitikisler/ai-tag-debugger.git
|
|
129
130
|
cd ai-tag-debugger
|
|
130
131
|
npm install
|
|
131
|
-
npx playwright install chromium #
|
|
132
|
-
npm run demo:serve #
|
|
133
|
-
node src/cli.js run --config examples/demo.config.json --
|
|
134
|
-
open reports/demo/report.html
|
|
132
|
+
npx playwright install chromium # sürümü yükselttikten sonra yeniden çalıştırın, tarayıcı Playwright ile eşleşsin
|
|
133
|
+
npm run demo:serve # bir terminalde: http://localhost:4321
|
|
134
|
+
node src/cli.js run --config examples/demo.config.json --data-dir reports/demo
|
|
135
|
+
open reports/demo/localhost/runs/*/report.html
|
|
135
136
|
```
|
|
136
137
|
|
|
137
|
-
Henüz API anahtarınız yok mu?
|
|
138
|
+
Henüz bir API anahtarınız yok mu? Sabit adımları hiçbir yapay zekâ modeli olmadan yeniden oynatın:
|
|
138
139
|
|
|
139
140
|
```bash
|
|
140
|
-
node src/cli.js run --config examples/demo.config.json --scripted --no-ai --
|
|
141
|
+
node src/cli.js run --config examples/demo.config.json --scripted --no-ai --data-dir reports/demo
|
|
141
142
|
```
|
|
142
143
|
|
|
143
|
-
##
|
|
144
|
+
## Sadece sorun
|
|
144
145
|
|
|
145
|
-
|
|
146
|
+
Önce tüm seçenekleri öğrenmeniz gerekmez. Tırnak içinde düz bir cümle yazın; aitd bunu eşleşen komuta çevirir, komutu gösterir ve çalıştırmadan önce `Run this? (Y/n)` diye sorar:
|
|
146
147
|
|
|
147
148
|
```bash
|
|
148
|
-
|
|
149
|
+
aitd "check my google analytics tags"
|
|
150
|
+
# aitd run --platforms ga4
|
|
151
|
+
# Run this? (Y/n)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
| Yazdığınız | aitd çalıştırır |
|
|
155
|
+
|---|---|
|
|
156
|
+
| `"Check my google analytics tags"` | `aitd run --platforms ga4` |
|
|
157
|
+
| `"What changed on my site since the last run"` | `aitd run` (her çalıştırma neyin değiştiğini zaten raporlar) |
|
|
158
|
+
| `"Compare my site against the plan"` | `aitd run --against latest` |
|
|
159
|
+
| `"What custom events does my site need"` | `aitd plan --topic custom-events` |
|
|
160
|
+
| `"Is my Meta pixel firing on checkout?"` | `aitd run --platforms meta --goal "reach checkout"` |
|
|
161
|
+
| `"Test signing up for the newsletter"` | `aitd run --goal "sign up for the newsletter"` |
|
|
162
|
+
| `"Does my purchase event send the right revenue?"` | `aitd run --journey purchase` |
|
|
163
|
+
| `"Make a tracking plan for example.com"` | `aitd plan --site https://example.com` |
|
|
164
|
+
| `"What ecommerce events should an online shop track?"` | `aitd plan --topic ecommerce` |
|
|
165
|
+
| `"Check TikTok and Google Ads on the contact form"` | `aitd run --platforms google_ads,tiktok --goal "submit the contact form"` |
|
|
166
|
+
|
|
167
|
+
Soruyu atlamak için `-y` ekleyin: `aitd -y "check my google analytics tags"`.
|
|
168
|
+
|
|
169
|
+
Bir cümlede bir şey eksikse aitd tahmin yürütmek yerine tek bir kısa soru sorar: plan mı çalıştırma mı, hangi site, ya da neyin test edileceği. Rapor filtreleme henüz cümleyle yapılamaz (`"Show me only the errors from the last report"` bunu söyler). Yapay zekâ anahtarı yoksa, yaygın ifadeleri küçük bir anahtar sözcük eşleştirici karşılar. Anahtar varsa yapay zekâ her ifadeyi anlar, ama yalnızca var olan seçenekleri seçebilir; bu yüzden var olmayan bir bayrak uydurmaz. Örnek cümleler İngilizcedir, çünkü anahtar sözcük eşleştirici İngilizce ifadeleri tanır.
|
|
170
|
+
|
|
171
|
+
## Planla, sonra denetle
|
|
172
|
+
|
|
173
|
+
Bir çalıştırma, sitenin gönderdiklerini bir **plan** ile karşılaştırır: beklediğiniz event'ler, parametreler ve kullanıcı özellikleri. Üç adım:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# 1. Bir plan taslağı çıkarın. Yapay zekâ siteyi gezer ve neyin takip edilmesi gerektiğini önerir.
|
|
177
|
+
aitd plan --site https://yoursite.com
|
|
178
|
+
|
|
179
|
+
# 2. İsteğe bağlı: bir elektronik tabloda düzenleyin, sonra düzenlenmiş kopyayı yeni bir plan olarak kaydedin.
|
|
180
|
+
aitd plan export latest --site https://yoursite.com # planın yanına plan.xlsx yazar
|
|
181
|
+
aitd plan import plan.xlsx --site https://yoursite.com # yeni bir plan kaydeder; eskisi değişmez
|
|
182
|
+
|
|
183
|
+
# 3. Siteyi plana göre denetleyin.
|
|
184
|
+
aitd run --site https://yoursite.com --against latest
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Plan taslağı çıkarmak** takip kodu gerektirmez. Yapay zekâ her sayfa türünden birer sayfayı inceler: ana sayfa, bir kategori, bir ürün, sepet, ilk ödeme adımı, arama ve varsa üyelik ya da iletişim formları. Asla ödeme yapmaz ve kişisel bilgilerle bir formu göndermez. `--provider`, `--model` ve `--max-steps` (varsayılan 25, yapay zekâ için en fazla adım) `run` için olduğu gibi çalışır. Çıktı "Bulunan sayfa türleri" ve "Bu sitede yok" satırlarını yazdırır, böylece yapay zekânın hangi sayfa türlerine ulaştığını görürsünüz. Yalnızca 2 sayfası olan küçük bir site de sorun değildir.
|
|
188
|
+
|
|
189
|
+
Yalnızca bir tür event için plan çıkarmak istiyorsanız `--topic` ekleyin: `custom-events`, `ecommerce`, `forms` ya da `consent`. Plan yalnızca bu event'leri kapsar, plan biçimi değişmez:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
aitd plan --site https://yoursite.com --topic ecommerce
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Plan, yeni bir klasöre, `aitd/<alan adı>/plans/<id>/` içine `measurement-plan.json` ve okunabilir bir `plan.html` olarak kaydedilir. Her event için şunları listeler:
|
|
196
|
+
|
|
197
|
+
- `name` ve `platform`. Sitenize özgü event'ler, örneğin bir beden rehberi ya da mağaza bulucu, `custom: true` ile işaretlenir.
|
|
198
|
+
- `description` ve `trigger`: event'i tetikleyen sayfa türü ve öğenin görünen etiketi.
|
|
199
|
+
- `parameters`: her biri bir açıklama ve örnek değerle. Özel parametreler işaretlenir. `required_params` mutlaka bulunması gerekenleri listeler.
|
|
200
|
+
- `user_properties`: `customer_type` gibi önerilen özellikler, her biri bir açıklama ve örnekle.
|
|
201
|
+
|
|
202
|
+
Siteniz zaten gönderdiği event'ler `"seen": true` ile işaretlenir.
|
|
203
|
+
|
|
204
|
+
Kullanmadan önce planı gözden geçirin. Örnekler ve öneriler yapay zekânın gördüğü sayfalardan gelir, bu yüzden her event'in işinize uyduğunu kontrol edin. Ek alanları kontroller yok sayar.
|
|
205
|
+
|
|
206
|
+
**Elektronik tablo ile içe ve dışa aktarma.** `aitd plan export <plan> --site <url>`, planın yanına `plan.xlsx` yazar: `events` sekmesinde her event parametresi için bir satır (`event, platform, parameter, required, example, trigger, description`) ve `user_properties` sekmesinde her kullanıcı özelliği için bir satır. Bunun yerine `events.csv` ve `user_properties.csv` almak için `--format csv` ekleyin; CSV ek bir paket gerektirmez. `.xlsx`, araçla birlikte isteğe bağlı bir bağımlılık olarak gelen küçük bir kütüphane, `fflate` kullanır. `aitd plan import <dosya> --site <url>` elektronik tabloyu okuyup yeni bir plan klasörü olarak kaydeder. İçe aktarma mevcut bir planı asla düzenlemez. Tanınmayan sütunlar bir uyarıyla yok sayılır; bir hata, sekmeyi, satırı ve düzeltmeyi belirtir, örneğin `events, row 7: "required" must be yes or no (found "maybe").`
|
|
207
|
+
|
|
208
|
+
`measurement-plan.json` şöyle görünür:
|
|
209
|
+
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"consent_mode": true,
|
|
213
|
+
"events": [
|
|
214
|
+
{ "platform": "ga4", "name": "add_to_cart", "required_params": ["currency", "value", "items"] },
|
|
215
|
+
{ "platform": "ga4", "name": "purchase", "journeys": ["checkout"], "required_params": ["transaction_id", "currency", "value", "items"] },
|
|
216
|
+
{ "platform": "meta", "name": "Purchase", "journeys": ["checkout"], "required_params": ["value", "currency"] }
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
`platform` değeri `ga4`, `google_ads`, `meta` veya `tiktok` olur. `journeys`, bir event'in nerede beklendiğini sınırlar (varsayılan: her yolculuk). Bir eylem başına birden fazla kez fire olabilen event'ler için `allow_multiple: true` ayarlayın.
|
|
222
|
+
|
|
223
|
+
Event adları gevşek eşleştirilir: `dl_add_to_cart` (Elevar), `addToCart` ve `Add To Cart`, `add_to_cart` sayılır; `transaction` ya da `order_completed` ise `purchase` sayılır. Kendi adlarınızı planlanmış bir event'e `"aliases": ["my_event"]` ile ekleyebilirsiniz. Gerekli parametreler de olağan diğer adlarıyla bulunur: `items` için `products`, `value` için `revenue`, `transaction_id` için `order_id`.
|
|
224
|
+
|
|
225
|
+
**Bir plana karşı denetim.** `run --against <plan>`, `latest` (ya da `last`), `first`, bir plan kimliği ya da bir plan dosyasının ya da klasörünün yolunu alır. `--site` verilmezse site plandan alınır. Çalıştırmaya bir yolculuk da verirseniz, yalnızca o akışı gezer ve orada beklenen plan event'lerini kontrol eder; planın geri kalanı eksik değil, kontrol edilmedi olarak raporlanır. Tek başına kullanıldığında `--against`, plandan en fazla altı yolculuk türetir: planlanmış event'leri tetiklendikleri sayfaya göre gruplar ve sayfa başına bir yolculuk oluşturur, en fazla altı tane (en küçük gruplar son yolculuğu paylaşır); ek bir yapay zekâ çağrısı yapılmaz. Seçilen yolculuklar, tarayıcı açılmadan önce yazdırılır. Her rapor başlığı ardından `Checked against plan <id>` (Plana karşı kontrol edildi: <id>) yazar.
|
|
226
|
+
|
|
227
|
+
`run` bir şey test etmek ister: `--against`, `--journey`, `--goal` ya da ayar dosyanızdaki yolculuklar. Biri yoksa tarayıcıyı açmadan `Nothing to test. Add --against latest, --journey <id> or --goal "<text>".` mesajıyla durur; böylece dolaşıp API kullanımını harcamaz. Sitenin henüz planı yoksa `run --against` şunu söyler: `No plan yet for example.com. Draft one with: aitd plan --site https://example.com`.
|
|
228
|
+
|
|
229
|
+
`aitd plan list --site <url>`, sitenin plan kimliklerini en eskiden en yeniye listeler.
|
|
230
|
+
|
|
231
|
+
### Plan ve site
|
|
232
|
+
|
|
233
|
+
Bir çalıştırma `--against` kullandığında rapor, `report.html` ve `report.md` dosyalarında **Plan ve site** bölümüyle başlar. Planlanan her event bir kovaya düşer:
|
|
234
|
+
|
|
235
|
+
| Kova | Anlamı |
|
|
236
|
+
|---|---|
|
|
237
|
+
| Uygulanmış | Planlandı, fire oldu, gerekli parametrelerin tümü var, değer sorunu yok |
|
|
238
|
+
| Eksik | Çalıştırmanın gezdiği bir yolculuk için planlandı, ama hiç fire olmadı |
|
|
239
|
+
| Parametre eksik | Fire oldu, ama gerekli bir parametre yok |
|
|
240
|
+
| Hatalı değer | Fire oldu, değer sorunu var; satın alma değeri, para birimi ve ürün kontrollerinin aynısından |
|
|
241
|
+
| Planda yok | Fire oldu, ama planda değil |
|
|
242
|
+
| Kontrol edilmedi | Planlandı, ama yolculuğu ya da platformu bu çalıştırmanın parçası değildi |
|
|
243
|
+
|
|
244
|
+
Kapsam puanı, uygulanmış olanların kontrol edilebilir planlanmış event'lere (kontrol edilmedi hariç hepsi) bölünmesiyle bulunur; genel ve platform başına gösterilir, örneğin `Kapsam 11 olaydan 7 (%64), 2 olay kontrol edilmedi`. Aynı kayıtlar `plan-check.json` dosyasında da bulunur: planlanan her event için kovasıyla birlikte bir kayıt. Çıkış kodları değişmez: `--fail-on` yine bulgu önemine bakar. `--against` olmadan rapor tam olarak eskisi gibidir.
|
|
245
|
+
|
|
246
|
+
### Klasör yapısı ve plan kimlikleri
|
|
247
|
+
|
|
248
|
+
Planlar ve çalıştırmalar, aracı çalıştırdığınız klasördeki `aitd/` içinde tutulur:
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
aitd/
|
|
252
|
+
example.com/ sitenin ana makinesi, www. olmadan
|
|
253
|
+
plans/2026-10-16_0900/ measurement-plan.json, plan.html, plan.xlsx (dışa aktarımdan sonra)
|
|
254
|
+
runs/2026-10-16_0912/ report.html, report.md, timeline.csv, capture.json
|
|
255
|
+
ve plan-check.json (--against ile)
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Bir kimlik, yerel saat `YYYY-MM-DD_HHMM` biçimindedir. O dakika zaten alınmışsa saniye eklenir (`_HHMMSS`). Hiçbir şey değiştirilmez: her taslak, içe aktarma ve çalıştırma yeni bir klasör alır. `aitd/` klasörünü başka bir yerde tutmak için `--data-dir <dir>` kullanın. `replay` ve `--save-site` klasörleri etkilenmez.
|
|
259
|
+
|
|
260
|
+
Her rapor, çalıştırmayı sitenin `runs/` içindeki bir önceki çalıştırmasıyla karşılaştıran "Son çalıştırmadan bu yana değişenler" bölümüyle açılır, örneğin `2 olay düzeldi, 1 yeni sorun`, ve her birini listeler. İki çalıştırma da `--against` kullandıysa plan kapsamı karşılaştırılır (Eksik iken Uygulanmış olan bir olay düzelmiş sayılır); aksi halde sağlık bulguları karşılaştırılır. Bir sitenin ilk çalıştırmasında karşılaştırılacak bir şey olmadığı yazar. Ayarlanacak bir bayrak yoktur. Karşılaştırma `capture.json` içinde `changes` altında da kaydedilir.
|
|
261
|
+
|
|
262
|
+
## Ne test edileceğini seçin
|
|
263
|
+
|
|
264
|
+
Başlamak için bir ayar dosyasına ihtiyacınız yok. Hazır yolculukları seçin, kendi yolculuğunuzu sade bir dille tarif edin, bir plana karşı kontrol edin ve kontrolü yalnızca ilgilendiğiniz event'lerle sınırlayın:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# Siteyi en son kaydedilmiş planına karşı kontrol edin.
|
|
268
|
+
aitd run --site https://staging.yourshop.com --against latest
|
|
269
|
+
|
|
270
|
+
# Hazır yolculuklar, hedefleri ve beklenen GA4 ve Meta event'leriyle gelir.
|
|
149
271
|
ai-tag-debugger run --site https://staging.yourshop.com --journey purchase --journey sign_up
|
|
150
272
|
|
|
151
|
-
#
|
|
152
|
-
ai-tag-debugger run --site https://yoursite.com --goal "
|
|
273
|
+
# Bir yolculuğu kendi sözlerinizle tarif edin. Adını verdiğiniz event'ler bu yolculukta beklenir.
|
|
274
|
+
ai-tag-debugger run --site https://yoursite.com --goal "Alt bilgideki bültene abone ol" --events newsletter_signup
|
|
153
275
|
|
|
154
|
-
#
|
|
276
|
+
# Yalnızca bazı event'leri kontrol edin.
|
|
155
277
|
ai-tag-debugger run --config ai-tag-debugger.config.json --events purchase,add_to_cart
|
|
156
278
|
```
|
|
157
279
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
| Hazır senaryo | Yapay zekânın yaptığı | Beklenen event'ler |
|
|
280
|
+
| Hazır yolculuk | Yapay zekânın yaptığı | Beklediği event'ler |
|
|
161
281
|
|---|---|---|
|
|
162
|
-
| `purchase` (ya da `checkout`) | Ürün → sepet → ödeme → test ödeme
|
|
282
|
+
| `purchase` (ya da `checkout`) | Ürün → sepet → ödeme → test ödeme yöntemiyle sipariş | GA4 `view_item`, `add_to_cart`, `begin_checkout`, `purchase`; Meta `AddToCart`, `InitiateCheckout`, `Purchase` |
|
|
163
283
|
| `add_to_cart` (ya da `cart`) | Bir ürün açar ve sepete ekler | GA4 `view_item`, `add_to_cart`; Meta `AddToCart` |
|
|
164
|
-
| `sign_up` (ya da `signup`, `register`) | Test verileriyle hesap oluşturur | GA4 `sign_up`; Meta `CompleteRegistration` |
|
|
165
|
-
| `lead` (ya da `contact`, `form`) |
|
|
166
|
-
| `search` | Sitede arama yapar ve bir sonucu açar | `search_term` ile
|
|
284
|
+
| `sign_up` (ya da `signup`, `register`) | Test verileriyle bir hesap oluşturur | GA4 `sign_up`; Meta `CompleteRegistration` |
|
|
285
|
+
| `lead` (ya da `contact`, `form`) | Bir iletişim, teklif ya da demo formunu doldurup gönderir | GA4 `generate_lead`; Meta `Lead` |
|
|
286
|
+
| `search` | Sitede arama yapar ve bir sonucu açar | GA4 `search` (`search_term` ile); Meta `Search` |
|
|
287
|
+
|
|
288
|
+
`--journey`, ayar dosyanızdaki yolculukları id'leriyle de seçer. Bir ayar dosyasıyla, hazır yolculuklar kendi event'lerini planınıza ekler.
|
|
167
289
|
|
|
168
|
-
|
|
290
|
+
Ne test edeceğinizden emin değil misiniz? `aitd plan --site https://yoursite.com` bir ölçümleme planı taslağı çıkarır, `--against latest` de siteyi buna göre kontrol eder.
|
|
169
291
|
|
|
170
292
|
### API kullanımını düşük tutmak
|
|
171
293
|
|
|
172
|
-
|
|
294
|
+
Gezinmenin her adımı bir model çağrısıdır; bu yüzden kullanım **yolculuk × görünüm × adım** ile artar, üstüne bulguları açıklamak için sonda bir çağrı eklenir. Kontroller modeli asla çağırmaz.
|
|
173
295
|
|
|
174
|
-
- **
|
|
175
|
-
- **Tek
|
|
176
|
-
- **Adım sayısını sınırlayın.** `--max-steps 15`,
|
|
177
|
-
- **Büyük sayfaların daha pahalı
|
|
178
|
-
- **Raporu odaklı tutmak için `--events` kullanın.** Gezinmeyi
|
|
179
|
-
- **Yapay
|
|
180
|
-
- **Bir
|
|
296
|
+
- **Yalnızca ihtiyacınız olan yolculukları çalıştırın.** En büyük tasarruf budur: tam `purchase` yolculuğu yerine `--journey add_to_cart`, on adım ya da daha fazla yerine birkaç adım alır.
|
|
297
|
+
- **Tek bir görünüm çalıştırın.** `--viewport mobile`, masaüstü ve mobil birlikte çalıştırmaya göre çağrı sayısını yarıya indirir.
|
|
298
|
+
- **Adım sayısını sınırlayın.** `--max-steps 15`, dolaşan bir yolculuğu durdurur.
|
|
299
|
+
- **Büyük sayfaların daha pahalı olmasını bekleyin.** Her adım, sayfa görünümünü (en fazla 250 öğe ve 3.000 karakter metin) modele gönderir; bu yüzden yoğun sayfalar basit sayfalardan adım başına daha fazla token kullanır.
|
|
300
|
+
- **Raporu odaklı tutmak için `--events` kullanın.** Gezinmeyi kısaltmaz, bu yüzden kullanımı pek değiştirmez.
|
|
301
|
+
- **Yapay zekâsız tekrar oynatın.** Bir yapay zekâlı çalıştırmadan sonra adımları kaydetmek için `--save-steps <dosya>` ekleyin; sonra o ayar dosyasını her dağıtımda `--scripted --no-ai` ile çalıştırın. Bkz. [Adımları kaydedin ve yapay zekâ olmadan tekrar oynatın](#adımları-kaydedin-ve-yapay-zekâ-olmadan-tekrar-oynatın).
|
|
302
|
+
- **Bir sohbet uygulaması kullanın.** MCP üzerinden gezinmeyi sohbet uygulamasının kendi modeli yapar, bu yüzden hiç API anahtarı kullanılmaz.
|
|
181
303
|
|
|
182
|
-
### Yeni bir sürümü
|
|
304
|
+
### Yeni bir sürümü kayıtlı sitelere karşı kontrol edin
|
|
183
305
|
|
|
184
|
-
`--save-site <
|
|
306
|
+
`--save-site <dir>`, sitenin gönderdiği her yanıtı ve atılan adımları da kaydeder. `replay` daha sonra aynı sayfaları çevrimdışı, ağ bağlantısı ve yapay zekâ modeli olmadan yeniden denetler; bu yüzden maliyeti sıfırdır. Kayıtlı çalıştırmaya göre yeni ya da kalkmış bulguları listeler:
|
|
185
307
|
|
|
186
308
|
```bash
|
|
187
|
-
npx @analitikisler/ai-tag-debugger run --site https://www.
|
|
309
|
+
npx @analitikisler/ai-tag-debugger run --site https://www.yourshop.com --journey purchase --save-site saved/yourshop
|
|
188
310
|
npx @analitikisler/ai-tag-debugger replay saved/*
|
|
189
|
-
✗ https://www.
|
|
311
|
+
✗ https://www.yourshop.com (saved/yourshop): 0 yeni, 1 kalktı
|
|
190
312
|
- warning duplicate purchase desktop ga4 page_view
|
|
191
313
|
```
|
|
192
314
|
|
|
193
|
-
İlk çalıştırmanın bulguları beklenen bulgular olur. Bir değişiklik doğruysa
|
|
315
|
+
İlk çalıştırmanın bulguları beklenen bulgular olur. Bir değişiklik doğruysa, örneğin düzeltilmiş bir yanlış alarm ise, `replay --update` yeni bulguları beklenen bulgular yapar. Aracın yeni bir sürümünü bildiğiniz sitelere karşı ya da bir site değişikliğini son iyi çalıştırmasına karşı kontrol etmek için kullanın. Kaydedilmiş bir site genellikle birkaç MB'tır. Takip isteklerini, görselleri ve videoları, HttpOnly ve oturum çerezlerini, tarayıcının gönderdiği çerezleri, yetkilendirme başlıklarını, form verilerini ve adresinde e-posta ya da başka kullanıcı verisi bulunan istekleri dışarıda bırakır. Yine de sitenin sayfalarını ve betiklerini tutar; bu yüzden sahibi olmadığınız siteleri herkese açık depolarda tutmayın.
|
|
194
316
|
|
|
195
317
|
### Adımları kaydedin ve yapay zekâ olmadan tekrar oynatın
|
|
196
318
|
|
|
197
|
-
`--save-steps <dosya>`, her
|
|
319
|
+
`--save-steps <dosya>`, her yolculuğun attığı adımları bir ayar dosyasının `journeys[].steps` alanına yazar. Dosya yoksa oluşturur; ayar dosyasında plan yoksa çalıştırmanın planını da kaydeder. Aynı ayar dosyası yolculuğu, yapay zekâ modeli ve API anahtarı olmadan tekrarlar:
|
|
198
320
|
|
|
199
321
|
```bash
|
|
200
|
-
ai-tag-debugger run --site https://www.
|
|
322
|
+
ai-tag-debugger run --site https://www.yourshop.com --journey purchase --save-steps ai-tag-debugger.config.json
|
|
201
323
|
ai-tag-debugger run --config ai-tag-debugger.config.json --scripted --no-ai
|
|
202
324
|
```
|
|
203
325
|
|
|
204
|
-
Bir
|
|
326
|
+
Bir yolculuk her iki görünümde de çalıştıysa yalnızca ilk görünümün adımları tutulur. Ayar dosyasını depoda tutun ve ikinci komutu her dağıtımda çalıştırarak aynı yolculuğu hiçbir model çağrısı yapmadan kontrol edin.
|
|
205
327
|
|
|
206
|
-
## Sitenizi
|
|
328
|
+
## Sitenizi yapılandırın
|
|
207
329
|
|
|
208
330
|
`ai-tag-debugger.config.json`:
|
|
209
331
|
|
|
@@ -216,7 +338,7 @@ Bir senaryo iki ekran boyutunda çalıştıysa yalnızca ilk ekran boyutunun ad
|
|
|
216
338
|
"journeys": [
|
|
217
339
|
{
|
|
218
340
|
"id": "checkout",
|
|
219
|
-
"goal": "
|
|
341
|
+
"goal": "Çerezleri kabul et, sepete herhangi bir ürün ekle ve test ödeme yöntemiyle ödemeyi tamamla."
|
|
220
342
|
}
|
|
221
343
|
]
|
|
222
344
|
}
|
|
@@ -224,94 +346,121 @@ Bir senaryo iki ekran boyutunda çalıştıysa yalnızca ilk ekran boyutunun ad
|
|
|
224
346
|
|
|
225
347
|
| Alan | Anlamı |
|
|
226
348
|
|---|---|
|
|
227
|
-
| `site` |
|
|
228
|
-
| `plan` | Ölçümleme planı: bir dosya yolu ya da satır içi bir nesne (
|
|
229
|
-
| `gtm_container` | İsteğe bağlı GTM
|
|
349
|
+
| `site` | Temel URL. Mümkünse staging kullanın. |
|
|
350
|
+
| `plan` | Ölçümleme planı: bir dosya yolu ya da satır içi bir nesne (aşağıya bakın). Hazır yolculuklarla isteğe bağlıdır. `--against` ile çalışan bir çalıştırma bunun yerine o planı kullanır. |
|
|
351
|
+
| `gtm_container` | İsteğe bağlı GTM konteyner dışa aktarımı (Yönetici → Konteyneri dışa aktar); açıklamalar etiket ve tetikleyicileri adlandırabilsin diye. |
|
|
230
352
|
| `viewports` | `desktop` ve/veya `mobile`. |
|
|
231
|
-
| `journeys` | `--journey` ile hazır
|
|
232
|
-
| `journeys[].goal` | Yapay zekânın
|
|
353
|
+
| `journeys` | `--journey` ile hazır yolculuk seçtiğinizde, `--goal` ile bir yolculuk tarif ettiğinizde ya da `--against` ile bir plana karşı kontrol ettiğinizde isteğe bağlıdır. |
|
|
354
|
+
| `journeys[].goal` | Yapay zekânın sade bir dille ne yapacağı. |
|
|
233
355
|
| `journeys[].start` | İsteğe bağlı başlangıç yolu (varsayılan `/`). |
|
|
234
356
|
| `journeys[].steps` | `--scripted` çalıştırmaları için isteğe bağlı sabit adımlar: `{ "action": "click", "selector": "#add-to-cart" }`. |
|
|
235
|
-
| `allowed_hosts` |
|
|
236
|
-
| `providers` | Kontrol edilecek
|
|
237
|
-
| `block_hits` | Varsayılan `true`.
|
|
357
|
+
| `allowed_hosts` | Yolculukların ziyaret edebileceği başka ana makineler, örneğin barındırılan bir ödeme için `["checkout.payments-provider.com"]`. Tarayıcı aksi halde `site` ana makinesinde ve alt alan adlarında kalır. `--allow-host` ile aynıdır. |
|
|
358
|
+
| `providers` | Kontrol edilecek takip platformları, örneğin `["ga4", "meta"]`. Varsayılan `["ga4", "google_ads", "meta", "tiktok"]`. `--platforms` ile aynıdır. |
|
|
359
|
+
| `block_hits` | Varsayılan `true`. Takip isteklerinin gerçek uç noktalarınıza ulaşmasına izin vermek için `false` yapın. |
|
|
238
360
|
| `language` | Rapor dili, `en` (varsayılan) ya da `tr`. `--lang` ile aynıdır. |
|
|
239
|
-
| `keep_bodies` | Varsayılan `false`.
|
|
240
|
-
| `branding` | Varsayılan `true`. Analitik İşler logosunu ve "AI Tag Debugger
|
|
361
|
+
| `keep_bodies` | Varsayılan `false`. Takip isteklerini gönderildiği gibi, kullanıcı verisi gizlenmeden saklamak için `true` yapın. `--keep-bodies` ile aynıdır. |
|
|
362
|
+
| `branding` | Varsayılan `true`. Analitik İşler logosunu ve "Generated by AI Tag Debugger · analitikisler.com" satırını raporlardan çıkarmak için `false` yapın. `--no-branding` ile aynıdır, ya da MCP `finish_audit` ve `run_audit` araçlarında `branding: false`. |
|
|
241
363
|
| `provider` | İsteğe bağlı: `anthropic`, `openai`, `gemini` ya da `openai-compatible`. `--provider` ile aynıdır. |
|
|
242
364
|
| `base_url`, `model` | İsteğe bağlı: API adresi ve model kimliği, örneğin `openai-compatible` için. `--base-url` ve `--model` ile aynıdır. |
|
|
243
365
|
|
|
244
|
-
`measurement-plan.json`:
|
|
245
|
-
|
|
246
|
-
```json
|
|
247
|
-
{
|
|
248
|
-
"consent_mode": true,
|
|
249
|
-
"events": [
|
|
250
|
-
{ "platform": "ga4", "name": "add_to_cart", "required_params": ["currency", "value", "items"] },
|
|
251
|
-
{ "platform": "ga4", "name": "purchase", "journeys": ["checkout"], "required_params": ["transaction_id", "currency", "value", "items"] },
|
|
252
|
-
{ "platform": "meta", "name": "Purchase", "journeys": ["checkout"], "required_params": ["value", "currency"] }
|
|
253
|
-
]
|
|
254
|
-
}
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
`platform` değeri `ga4`, `google_ads`, `meta` ya da `tiktok` olabilir. `journeys`, bir event'in hangi senaryolarda beklendiğini sınırlar (varsayılan: her senaryo). Tek bir işlemde birden fazla kez gönderilmesi normal olan event'ler için `allow_multiple: true` kullanın.
|
|
258
|
-
|
|
259
366
|
## CLI
|
|
260
367
|
|
|
261
368
|
```
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
369
|
+
aitd "<cümle>" [-y]
|
|
370
|
+
aitd plan --site <url> [--topic <ad>] [--headed] [--provider <ad>] [--model <id>] [--max-steps <n>] [--data-dir <dir>]
|
|
371
|
+
aitd plan list --site <url> [--data-dir <dir>]
|
|
372
|
+
aitd plan import <dosya> --site <url> [--data-dir <dir>]
|
|
373
|
+
aitd plan export <plan> --site <url> [--format xlsx|csv] [--data-dir <dir>]
|
|
374
|
+
aitd run --site <url> (--against <plan> | --journey <id> | --goal "<metin>") [--config <dosya>] [--events <adlar>]
|
|
375
|
+
[--max-steps <n>] [--viewport desktop|mobile] [--platforms <liste>] [--data-dir <dir>]
|
|
376
|
+
[--provider anthropic|openai|gemini|openai-compatible] [--model <id>] [--lang en|tr] [--headed]
|
|
377
|
+
[--fail-on broken|risk|warning|never] [--scripted] [--no-ai] [--save-site <dir>] [--save-steps <dosya>]
|
|
378
|
+
aitd replay <dir>... [--update] [--out <dir>]
|
|
379
|
+
aitd mcp [--http] [--port <n>] [--host <adres>] [--token <gizli>] [--public-url <https url>] [--reports <dir>]
|
|
380
|
+
[--allow-private-network]
|
|
270
381
|
```
|
|
271
382
|
|
|
272
|
-
`aitd`, `ai-tag-debugger`
|
|
273
|
-
|
|
274
|
-
Bulgular `--fail-on` seviyesine (varsayılan `broken`) ulaştığında çıkış kodu `1` olur, böylece bir deploy'u durdurabilir. Her deploy sonrası çalıştırmak için [`examples/github-actions/ai-tag-debugger.yml`](examples/github-actions/ai-tag-debugger.yml) örneğine bakın.
|
|
275
|
-
|
|
276
|
-
Çıktılar:
|
|
277
|
-
|
|
278
|
-
- `report.html`: dört sekmeli tek bir dosya. Sekmeler arası bağlantılar çalışır (bir bulgudaki "Nerede" etiketi o adımı açar) ve her görünümün kaydedip paylaşabileceğiniz kendi adresi vardır.
|
|
279
|
-
- **Genel bakış**: sorun sayıları, yapay zekâ özeti (en önemli sorun en üstte, ayrıca bulguların kapsamadığı ama kontrol etmeye değer noktalar), sorun sayılarıyla senaryolar ve kontrol edilen platformlar.
|
|
280
|
-
- **Bulgular**: önem derecesine göre gruplanır ve filtrelenebilir. Her bulgunun etkisi, olası nedeni, kanıtı, numaralı çözüm adımları ve oluştuğu adımlar vardır.
|
|
281
|
-
- **Yolculuklar**: her seferinde bir senaryo; solda adımları, sağda seçili adım. İlk sorunlu adımda açılır. Her adımın üç sekmesi vardır:
|
|
282
|
-
- **Olaylar**: parametreleri, çerez onayı durumu, arkasındaki dataLayer push'u ve isteğiyle birlikte her ölçümleme isteği; bir bulgu ona işaret ediyorsa bir not.
|
|
283
|
-
- **dataLayer**: adımdaki her push.
|
|
284
|
-
- **Ağ istekleri**: seçilen platformlara giden her istek; her parametrede `?` ipucu olan bir parametre tablosuna çözülmüş halde. Toplu gönderilen bir GA4 isteği, içindeki her event'i gösterir.
|
|
285
|
-
- **Kapsam ve plan**: planlanan her event'in her senaryoda gönderilip gönderilmediği ve istek sayılarıyla kontrol edilen ya da dışarıda bırakılan platformlar.
|
|
286
|
-
|
|
287
|
-
Event'ler ve istekler kaynağa göre filtrelenebilir. GA4 ürün dizeleri (`pr1`…) ve dataLayer `ecommerce.items` ürün kartları olarak, özel ürün parametreleri ayrı bir grupta gösterilir. Raporda script yoktur: sekmeler ve filtreler düz HTML ve CSS'tir (Chrome 105, Safari 15.4 ya da Firefox 121 ve üstü gerekir) ve yazdırınca tüm sekmeler görünür. Logolar dosyanın içindedir, internetten hiçbir şey yüklenmez. `--no-branding` Analitik İşler logosunu ve imza satırını çıkarır.
|
|
288
|
-
- `timeline.csv`: aynı zaman akışı; her istek, dataLayer push'u ve ağ çağrısı bir satır, Excel ya da Google Sheets için hazır.
|
|
289
|
-
- `report.md`: raporun Markdown hali, örneğin bir pull request yorumu için.
|
|
290
|
-
- `capture.json`: yakalanan tüm veriler, kendi analiziniz için.
|
|
383
|
+
`aitd`, `ai-tag-debugger`'ın kısa bir takma adıdır ve aynı komutları ve seçenekleri kabul eder. Her komutun temel seçenekleri için `aitd <komut> --help` çalıştırın.
|
|
291
384
|
|
|
292
|
-
|
|
385
|
+
### Tüm seçenekler
|
|
293
386
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
387
|
+
| Seçenek | Komutlar | Anlamı |
|
|
388
|
+
|---|---|---|
|
|
389
|
+
| `--site <url>` | plan, run | Site. `plan` için zorunludur; `run` için `--against` ya da ayar dosyası siteyi vermiyorsa gereklidir. |
|
|
390
|
+
| `--against <plan>` | run | Bir plana karşı kontrol: `latest` (ya da `last`), `first`, bir plan kimliği ya da bir plan dosyasının ya da klasörünün yolu. |
|
|
391
|
+
| `--journey <id>` | run | Hazır bir yolculuk (tekrarlanabilir). |
|
|
392
|
+
| `--goal "<metin>"` | run | Sade bir dille bir yolculuk (tekrarlanabilir). |
|
|
393
|
+
| `--config <dosya>` | run | Siteyi, yolculukları ve planı bir ayar dosyasından al. |
|
|
394
|
+
| `--events <adlar>` | run | Yalnızca bu event'leri kontrol et, örneğin `purchase,add_to_cart`. |
|
|
395
|
+
| `--viewport <ad>` | run | `desktop` ya da `mobile` (tekrarlanabilir). |
|
|
396
|
+
| `--platforms <liste>` | run | Kontrol edilecek platformlar, örneğin `ga4,meta`. Eski adı `--providers`'ın yerine geçer; o da bir minör sürüm daha çalışır. |
|
|
397
|
+
| `--max-steps <n>` | plan, run | Yolculuk başına en fazla yapay zekâ adımı (`plan` için varsayılan 25). |
|
|
398
|
+
| `--lang <kod>` | run | Rapor dili: `en` ya da `tr`. |
|
|
399
|
+
| `--fail-on <düzey>` | run | Bu düzeyde çıkış kodu 1 olur: `broken` (varsayılan), `risk`, `warning` ya da `never`. |
|
|
400
|
+
| `--headed` | plan, run | Tarayıcı penceresini göster. |
|
|
401
|
+
| `--provider <ad>`, `--model <id>` | plan, run | Yapay zekâ sağlayıcısı ve modeli. Varsayılan: ayarlı olan API anahtarı. |
|
|
402
|
+
| `--scripted` | run | Her yolculuğun sabit adımlarını, yapay zekâ gezintisi olmadan tekrar oynat. |
|
|
403
|
+
| `--no-ai` | run | Hiç yapay zekâ modeli yok. `--scripted` anlamına gelir. |
|
|
404
|
+
| `--save-site <dir>` | run | Sitenin yanıtlarını `replay` için kaydet. |
|
|
405
|
+
| `--save-steps <dosya>` | run | Her yolculuğun attığı adımları bir ayar dosyasına yaz. |
|
|
406
|
+
| `--data-dir <dir>` | plan, run | `aitd/` klasörünün (planlar ve çalıştırmalar) tutulduğu yer. Varsayılan: `./aitd`. `run --out` yerine geçer. |
|
|
407
|
+
| `--format xlsx\|csv` | plan export | Elektronik tablo biçimi. Varsayılan: `xlsx`. |
|
|
408
|
+
| `--update` | replay | Bu tekrarın bulgularını beklenen bulgular yap. |
|
|
409
|
+
| `--out <dir>` | replay | Tekrar raporlarının yazılacağı yer. `run` için `--out` gizli bir takma ad olarak bir minör sürüm daha çalışır ve bir not yazdırır; `--data-dir` kullanın. |
|
|
410
|
+
| `--base-url <url>` | run | OpenAI uyumlu bir sağlayıcının API adresi. |
|
|
411
|
+
| `--allow-host <ana makine>` | run | Yolculukların ziyaret edebileceği başka bir ana makine (tekrarlanabilir). `allowed_hosts` ile aynıdır. |
|
|
412
|
+
| `--keep-bodies` | run | Takip isteklerini gönderildiği gibi, kullanıcı verisi gizlenmeden sakla. |
|
|
413
|
+
| `--no-branding` | plan, run | Logo ve kredi satırını raporlardan ve `plan.html` dosyasından çıkar. |
|
|
414
|
+
| `--http`, `--port`, `--host`, `--token`, `--public-url`, `--reports`, `--allow-private-network` | mcp | Aşağıdaki MCP bölümüne bakın. |
|
|
415
|
+
|
|
416
|
+
0.10.0 sürümünde kaldırıldı: `plan --from`, `plan --out` ve `plan --force`. Plan taslağı her zaman yeni bir klasör kaydeder; kaldırılmış bir bayrak ne çalıştırılacağını yazdırır.
|
|
417
|
+
|
|
418
|
+
Çıkış kodu, bulgular `--fail-on` düzeyine (varsayılan `broken`) ulaştığında `1` olur; böylece bir dağıtımı durdurabilir. Her dağıtımdan sonra çalıştırmak için [`examples/github-actions/ai-tag-debugger.yml`](examples/github-actions/ai-tag-debugger.yml) dosyasına bakın.
|
|
419
|
+
|
|
420
|
+
Çıktı:
|
|
421
|
+
|
|
422
|
+
- `report.html`: dört sekmeli tek bir dosya. Bağlantılar sekmeler arasında çalışır (bir bulgunun "Nerede" çipi o adımı açar) ve her görünümün paylaşılabilir ya da yer imine eklenebilir kendi URL'si vardır.
|
|
423
|
+
- **Genel bakış**: sorun sayıları, yapay zekâ özeti (en önemli sorun önce, ve bulguların kapsamadığı kontrol edilmeye değer şeyler), yolculuklar ve sorun sayıları, kontrol edilen platformlar ve `--against` ile [Plan ve site](#plan-ve-site) kapsamı.
|
|
424
|
+
- **Bulgular**: önem düzeyine göre gruplu ve filtrelenebilir. Her birinde etkisi, olası nedeni, kanıtı, numaralı düzeltme adımları ve olayın yaşandığı adımlar bulunur.
|
|
425
|
+
- **Yolculuklar**: her seferinde bir yolculuk; solda adımları, sağda seçili adım. Sorunlu ilk adımda açılır. Her adımın üç sekmesi vardır:
|
|
426
|
+
- **Event'ler**: her takip isteği, parametreleri, çerez onayı durumu, arkasındaki dataLayer gönderimi ve isteği ve bir bulgu buraya işaret ediyorsa bir not.
|
|
427
|
+
- **dataLayer**: adımdaki her gönderim.
|
|
428
|
+
- **Ağ istekleri**: seçilen platformlara giden her istek; her parametrede bir `?` ipucuyla bir parametre tablosuna çözülmüş. Toplu bir GA4 isteği, içindeki her event'i gösterir.
|
|
429
|
+
- **Kapsam ve plan**: planlanan her event'in her yolculukta gönderilip gönderilmediği ve kontrol edilen ya da dışarıda bırakılan platformlar, istek sayılarıyla.
|
|
430
|
+
|
|
431
|
+
Event'ler ve istekler kaynağa göre filtrelenebilir. GA4 ürün dizgileri (`pr1`…) ve dataLayer `ecommerce.items` ürün kartları olarak gösterilir; özel ürün parametreleri kendi grubunda yer alır. Raporda betik yoktur: sekmeler ve filtreler düz HTML ve CSS'tir (Chrome 105, Safari 15.4 ya da Firefox 121 ve sonrası gerekir) ve yazdırırken her sekme görünür. Logolar gömülüdür, bu yüzden internetten hiçbir şey yüklenmez. `--no-branding`, Analitik İşler logosunu ve kredi satırını çıkarır.
|
|
432
|
+
- `timeline.csv`: aynı zaman akışı, her isteğe, dataLayer gönderimine ve ağ çağrısına bir satır olarak; Excel ya da Google Sheets için hazır.
|
|
433
|
+
- `report.md`: raporun Markdown hali, örneğin bir çekme isteği yorumu için.
|
|
434
|
+
- `capture.json`: yakalanan her şey, kendi analiziniz için.
|
|
435
|
+
- `plan-check.json`: `--against` ile, planlanan her event için kovasıyla birlikte bir kayıt.
|
|
436
|
+
- `plan.html` (planın klasöründe): planın event'lerini, parametrelerini ve kullanıcı özelliklerini gösteren okunabilir bir sayfa.
|
|
437
|
+
|
|
438
|
+
Raporlar bir kredi satırıyla biter: "Generated by AI Tag Debugger · analitikisler.com"; alan adı düz bir bağlantıdır (görsel yok, takip yok ve yönlendiren bilgisi yok; böylece rapor adresleri sızdırılmaz). `--no-branding`, bunu logosuyla birlikte kaldırır.
|
|
439
|
+
|
|
440
|
+
Türkçe rapor için `--lang tr` kullanın. Bulgu metinleri, başlıklar, modelin açıklamaları ve düzeltmeleri Türkçe yazılır; ajan adımlarını da Türkçe anlatır.
|
|
441
|
+
|
|
442
|
+
## Yapay zekâ sohbet uygulamanızdan kullanın (MCP)
|
|
443
|
+
|
|
444
|
+
`aitd mcp`, bir [Model Context Protocol](https://modelcontextprotocol.io) sunucusu başlatır. Sohbet uygulamanızın modeli denetimi kendisi yürütür: "staging.myshop.com sitesinin ödeme takibini kontrol et" dersiniz, o da tarayıcıyı açar, tıklar ve bulguları sohbette açıklar. Yapay zekâ düşünmeyi uygulamanın kendi modeli yaptığı için API anahtarı gerekmez.
|
|
299
445
|
|
|
300
446
|
Sunucunun sunduğu araçlar:
|
|
301
447
|
|
|
302
448
|
| Araç | Ne yapar |
|
|
303
449
|
|---|---|
|
|
304
|
-
| `
|
|
305
|
-
| `
|
|
306
|
-
| `
|
|
307
|
-
| `
|
|
308
|
-
| `
|
|
450
|
+
| `make_plan` | Bir site için takip planı çıkarır (neyin takip edilmesi gerektiği), `aitd plan --site` ile aynıdır. Yalnızca bir tür event için sınırlamak üzere `topic` verin (`custom-events`, `ecommerce`, `forms`, `consent`). Plan kaydedilir ve kimliği `finish_audit` için `against` olarak verilebilir. Sunucuyu çalıştıran bilgisayarda ayarlı yapay zekâ sağlayıcısını kullanır ve birkaç dakika sürer. |
|
|
451
|
+
| `start_audit` | Bir URL'de yeni bir tarayıcı açar ve tüm takibi kaydetmeye başlar. Hedefini ve beklenen event'lerini almak için hazır bir yolculuk (`purchase`, `sign_up`, …) verin; kontrol edilecek platformları seçmek için `providers` verin. Asistan önce hangi platformların kontrol edileceğini size sorar. |
|
|
452
|
+
| `browser_action` | Tek bir tıklama, doldurma, seçme, gitme, kaydırma ya da bekleme. Sayfayı ve o adımın gönderdiği takip isteklerini döndürür. |
|
|
453
|
+
| `get_page` | Geçerli sayfayı gösterir. |
|
|
454
|
+
| `finish_audit` | Her şeyi ölçümleme planınıza (JSON) ya da `against` olarak verilen kayıtlı bir plana (`latest`, `first`, bir plan kimliği ya da yerel bir sunucuda bir yol) ya da hazır yolculuğun event'lerine karşı kontrol eder; isterseniz yalnızca adını verdiğiniz `events` için, ve zaman akışıyla birlikte tam HTML raporunu yazar. Site denetimden alınır. |
|
|
455
|
+
| `run_audit` | Bir ayar dosyasını baştan sona çalıştırır. `against` ile çalıştırmayı kayıtlı bir plana karşı kontrol eder; ayar dosyasında yolculuk yoksa, plandan türetilen yolculukları gezer. Dosya yolları yalnızca yerelde çalışır. |
|
|
456
|
+
|
|
457
|
+
`against`, CLI'deki `--against` ile aynı değerleri alır. HTTP üzerinden yalnızca `latest`, `first` ya da bir plan kimliği kabul edilir, asla bir yol değil. Planlar, `aitd plan --site <url>` ya da `make_plan` ile kaydedilmiş olanlardır. Neyin takip edileceğini öğrenmek için plan, sitenin ne gönderdiğini öğrenmek için denetim isteyin.
|
|
309
458
|
|
|
310
|
-
Tarayıcı, sunucunun çalıştığı bilgisayarda çalışır
|
|
459
|
+
Tarayıcı, sunucunun çalıştığı bilgisayarda çalışır; bu yüzden staging ve `localhost` sitelerinize erişebilir. Takip istekleri her zamanki gibi yerelde yanıtlanır.
|
|
311
460
|
|
|
312
461
|
### Yerel sunucu başlatan uygulamalar: Claude Desktop, Gemini CLI, Cursor, VS Code, Claude Code
|
|
313
462
|
|
|
314
|
-
Sunucuyu uygulamanın MCP
|
|
463
|
+
Sunucuyu uygulamanın MCP yapılandırmasına ekleyin. Claude Desktop için bu, Settings → Developer → Edit Config (`claude_desktop_config.json`) yoludur:
|
|
315
464
|
|
|
316
465
|
```json
|
|
317
466
|
{
|
|
@@ -324,70 +473,70 @@ Sunucuyu uygulamanın MCP ayarlarına ekleyin. Claude Desktop'ta bu Settings →
|
|
|
324
473
|
}
|
|
325
474
|
```
|
|
326
475
|
|
|
327
|
-
Tarayıcı (Chromium),
|
|
476
|
+
Tarayıcı (Chromium), bir denetimi ilk kez çalıştırdığınızda kendini indirir; bu yaklaşık bir dakika sürer ve yalnızca bir kez olur. Önceden indirmek için: `npx -y playwright@1.56.1 install chromium`.
|
|
328
477
|
|
|
329
|
-
Tek tıkla
|
|
478
|
+
Tek tıkla ya da tek satırla kurulum:
|
|
330
479
|
|
|
331
480
|
- **Claude Code:** `claude mcp add ai-tag-debugger -- npx -y @analitikisler/ai-tag-debugger mcp`
|
|
332
481
|
- **Cursor:** [Cursor'a ekle](https://cursor.com/en/install-mcp?name=ai-tag-debugger&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBhbmFsaXRpa2lzbGVyL2FpLXRhZy1kZWJ1Z2dlciIsIm1jcCJdfQ==)
|
|
333
|
-
- **VS Code:** [VS Code'a
|
|
334
|
-
- **Claude Desktop, Gemini CLI ve diğerleri:** yukarıdaki JSON bloğu. Gemini CLI
|
|
482
|
+
- **VS Code:** [VS Code'a yükle](https://insiders.vscode.dev/redirect/mcp/install?name=ai-tag-debugger&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40analitikisler%2Fai-tag-debugger%22%2C%22mcp%22%5D%7D), ya da `code --add-mcp '{"name":"ai-tag-debugger","command":"npx","args":["-y","@analitikisler/ai-tag-debugger","mcp"]}'`
|
|
483
|
+
- **Claude Desktop, Gemini CLI ve diğerleri:** yukarıdaki JSON bloğu. Gemini CLI aynı `mcpServers` bloğunu `~/.gemini/settings.json` dosyasında kullanır.
|
|
335
484
|
|
|
336
|
-
Uygulamayı yeniden başlatın
|
|
485
|
+
Uygulamayı yeniden başlatın; ai-tag-debugger araçları görünür. Uygulama `npx`'i bulamıyorsa tam yolunu kullanın (`which npx`; örneğin Homebrew'lu bir Mac'te `/opt/homebrew/bin/npx`). Raporlar `~/ai-tag-debugger-reports` klasörüne yazılır.
|
|
337
486
|
|
|
338
|
-
|
|
487
|
+
Bunun yerine bir klondan mı çalıştırıyorsunuz? `"command": "node"` ve `"args": ["/path/to/ai-tag-debugger/src/cli.js", "mcp"]` kullanın.
|
|
339
488
|
|
|
340
489
|
### Bir adrese bağlanan uygulamalar: ChatGPT, Gemini
|
|
341
490
|
|
|
342
|
-
Bu uygulamalar MCP sunucularına HTTPS üzerinden bağlanır (ChatGPT'de, planınıza bağlı olarak
|
|
491
|
+
Bu uygulamalar MCP sunucularına HTTPS üzerinden bağlanır (ChatGPT'de geliştirici modu bağlayıcıları üzerinden, planınıza bağlı olarak). Sunucuyu HTTP modunda başlatın ve bir tünelle dışarı açın:
|
|
343
492
|
|
|
344
493
|
```bash
|
|
345
|
-
cloudflared tunnel --url http://localhost:8787 #
|
|
346
|
-
npx -y @analitikisler/ai-tag-debugger mcp --http --port 8787 --public-url https://<
|
|
494
|
+
cloudflared tunnel --url http://localhost:8787 # ya da: ngrok http 8787; yazdığı https adresini not edin
|
|
495
|
+
npx -y @analitikisler/ai-tag-debugger mcp --http --port 8787 --public-url https://<tünel-adresiniz>
|
|
347
496
|
```
|
|
348
497
|
|
|
349
|
-
Sunucu, rastgele gizli bir yol içeren bir
|
|
498
|
+
Sunucu, `https://<tünel-adresiniz>/mcp/<gizli>` gibi rastgele gizli bir yol içeren bir URL yazdırır. Bu URL'yi uygulamada bir bağlayıcı olarak ekleyin. URL'yi bilen herkes bilgisayarınızdaki tarayıcıyı kullanabilir; bu yüzden gizli tutun ve işiniz bitince sunucuyu durdurun. Kendi gizli değeriniz (`--token`) en az 16 karakter olmalıdır.
|
|
350
499
|
|
|
351
|
-
HTTP modunda sunucu
|
|
500
|
+
HTTP modunda sunucu yerelde olduğundan daha kısıtlıdır:
|
|
352
501
|
|
|
353
|
-
-
|
|
354
|
-
- Tarayıcı
|
|
355
|
-
- 15 dakika açık kalan
|
|
502
|
+
- Ölçümleme planlarını ya da ayar dosyalarını diskinizden okumaz (planı sohbette JSON metni olarak verin ya da `against: latest`, `first` ya da kimliğiyle kayıtlı bir planı adlandırın) ve `run_audit` sunulmaz. Yalnızca kendi yazdığı raporları sunar.
|
|
503
|
+
- Tarayıcı yalnızca `http` ve `https` sayfalarını açar ve `localhost` ile özel ağ adreslerini (`192.168.x.x` ya da `169.254.169.254` gibi) reddeder; böylece URL, ağınızı incelemek için kullanılamaz. WebSocket'ler dahil tüm tarayıcı trafiği, her ana makineyi bir kez çözüp yalnızca kontrol ettiği adrese bağlanan küçük bir yerleşik proxy üzerinden geçer; denetim sırasında değişen bir DNS yanıtı kontrolü atlatamaz. Yerel bir staging sitesini bu şekilde yine de denetlemek için sunucuyu `--allow-private-network` ile başlatın.
|
|
504
|
+
- 15 dakika açık kalan denetimler kapatılır ve istek gövdeleri 1 MB ile sınırlıdır.
|
|
356
505
|
|
|
357
|
-
|
|
506
|
+
Tünel gerektirmeyen barındırılmış bir sunucu, [Analitik İşler](https://analitikisler.com) Cloud sürümünün bir parçasıdır.
|
|
358
507
|
|
|
359
508
|
## Güvenlik
|
|
360
509
|
|
|
361
|
-
- Ajana
|
|
362
|
-
- [Nasıl çalışır](#nasıl-çalışır) bölümünde listelenen platformlara giden
|
|
363
|
-
-
|
|
364
|
-
- Modele, sayfa içeriğinin
|
|
365
|
-
- Tarayıcı, ortamında API anahtarlarınız ve diğer gizli
|
|
366
|
-
- **Reklam eşleştirmesi için gönderilen kullanıcı
|
|
367
|
-
- Saklanan istek gövdeleri istek başına 32 KB
|
|
368
|
-
-
|
|
369
|
-
- HTTP sunucusunu başkaları için
|
|
510
|
+
- Ajana kolay test verisi kullanması ve **asla gerçek ödeme bilgisi girmemesi** söylenir. Bir yolculuk gerçek bir ödeme ya da hesap gerektiriyorsa durur ve bunu bildirir.
|
|
511
|
+
- [Nasıl çalışır](#nasıl-çalışır) bölümünde listelenen platformlara giden takip istekleri varsayılan olarak yerelde yanıtlanır; bu yüzden o analitik ve reklam hesaplarına test dönüşümleri ulaşmaz.
|
|
512
|
+
- Tarayıcı, denetlenen sitede ve alt alan adlarında kalır; ayrıca varsa `allowed_hosts` içinde. Yalnızca `http` ve `https` sayfalarını açar.
|
|
513
|
+
- Modele, sayfa içeriğinin veri olduğu ve talimat olmadığı söylenir. Bir istem kuralı, bir modelin asla yanıltılmayacağını garanti edemez; bu yüzden yukarıdaki gezinme sınırları, yanıltılmış bir modelin yapabileceklerini sınırlar.
|
|
514
|
+
- Tarayıcı, ortamında API anahtarlarınız ve diğer gizli bilgileriniz olmadan çalışır.
|
|
515
|
+
- **Reklam eşleştirmesi için gönderilen kullanıcı verisi, `capture.json` dosyasına kaydedilmeden ya da raporda gösterilmeden önce gizlenir**: GA4 ve Google Ads geliştirilmiş dönüşümlerindeki e-postalar, telefonlar, adlar, adresler ve kullanıcı kimlikleri (`em`, `ph`, `uid`, …), Meta gelişmiş eşleştirme (`ud[*]`, `udff[*]`), TikTok `context.user` ve geliştirilmiş dönüşümler için sitenin dataLayer'a gönderdiği `user_data`. E-posta adresine benzeyen her değer, alanı ne olursa olsun gizlenir; yalnızca denetlenen sitenin `mailto:` bağlantısındaki ya da bir bağlantı alanındaki (`link_url`, `link_text`, `gtm.elementUrl`, …) kendi adresi istisnadır; örneğin bir GTM tıklama event'indeki iletişim bağlantısı, ziyaretçi verisi değildir. Her değer `[redacted: 64 chars, looks hashed]` gibi bir işaretçiye dönüşür; karma hâle getirilmemiş bir değer ise kişisel veri riski olarak raporlanır. `--keep-bodies` (`"keep_bodies": true`), istekleri gönderildiği gibi, hata ayıklama için saklar.
|
|
516
|
+
- Saklanan istek gövdeleri istek başına 32 KB, yolculuk başına 2 MB ile sınırlıdır. Bu sınırın üzerinde rapor, gövdenin saklanmadığını söyler.
|
|
517
|
+
- Yalnızca sahibi olduğunuz ya da test etme yetkiniz olan sitelere karşı çalıştırın.
|
|
518
|
+
- HTTP sunucusunu başkaları için barındırıyor musunuz? Ek bir savunma katmanı olarak özel ve bulut meta veri adres aralıklarını ağ düzeyinde de engelleyin (bir çıkış güvenlik duvarı ya da yalıtılmış bir ağ).
|
|
370
519
|
|
|
371
520
|
## Yol haritası
|
|
372
521
|
|
|
373
|
-
- Consent Check: çerez
|
|
374
|
-
-
|
|
375
|
-
- [analitikisler.com](https://analitikisler.com
|
|
522
|
+
- Consent Check: çerez onay pencerelerinin ve Consent Mode v2'nin KVKK/GDPR'a karşı daha derin denetimleri.
|
|
523
|
+
- Measurement Plan: bir URL'den ölçümleme planı ve dataLayer şartnamesi taslağı çıkarma.
|
|
524
|
+
- [analitikisler.com](https://analitikisler.com) üzerinde; zamanlanmış çalıştırmalar, dağıtım webhook'ları, barındırılan bir MCP sunucusu ve ajanslar için çok siteli panolar içeren barındırılan sürüm.
|
|
376
525
|
|
|
377
526
|
## Geliştirme
|
|
378
527
|
|
|
379
528
|
```bash
|
|
380
|
-
npm run setup #
|
|
381
|
-
npm test #
|
|
529
|
+
npm run setup # Node'u denetler, bağımlılıkları ve Chromium'u kurar, bir AI sağlayıcı anahtarının ayarlı olup olmadığını söyler
|
|
530
|
+
npm test # ayrıştırıcılar, kontroller, her AI sağlayıcısı ve MCP sunucusu; demo mağazaya karşı uçtan uca
|
|
382
531
|
```
|
|
383
532
|
|
|
384
|
-
Depoda bir
|
|
533
|
+
Depoda ayrıca bir geliştirme konteyneri (`.devcontainer/devcontainer.json`) vardır. VS Code'da Dev Containers eklentisiyle ya da GitHub Codespaces'te açın; Chromium'un sistem kütüphaneleri dahil `npm run setup`'ı sizin yerinize çalıştırır. Oradaki bir AI modelini kullanmak için anahtarınızı bir Codespaces sırrı olarak ekleyin ya da konteynerin terminalinde dışa aktarın.
|
|
385
534
|
|
|
386
|
-
Uçtan uca testler sahte model istemcileri kullanır, bu yüzden API anahtarı olmadan çalışır.
|
|
535
|
+
Uçtan uca testler sahte model istemcileri kullanır, bu yüzden bir API anahtarı olmadan çalışır.
|
|
387
536
|
|
|
388
537
|
## Barındırılan sürüm
|
|
389
538
|
|
|
390
|
-
Barındırılan
|
|
539
|
+
Barındırılan çalıştırmalar, zamanlama ve ajans panoları için [analitikisler.com](https://analitikisler.com) adresine bakın.
|
|
391
540
|
|
|
392
541
|
## Lisans
|
|
393
542
|
|