Teknik SEO API
Herhangi bir URL üzerinde kapsamlı teknik SEO denetimi yapın. Meta etiketler, başlıklar, bağlantılar, görseller, içerik, URL yapısı ve sosyal etiketler olmak üzere 7 kategoride 27 kontrol — puanlı rapor ve aksiyona dönüştürülebilir sorunlar döndürür.
POST https://data.semust.com/v1/technical-seoKimlik Doğrulama
Tüm istekler başlık tabanlı kimlik doğrulama gerektirir. Her istekte API kimlik bilgilerinizi ekleyin.
| Başlık | Tür | Açıklama |
|---|---|---|
SEMUST-API-USER | string | API kullanıcı adınız |
SEMUST-API-PASSWORD | string | API şifreniz |
API kimlik bilgilerini API Erişim sayfasında doğrulayabilirsiniz.
SEMUST-API-USER: your_username
SEMUST-API-PASSWORD: your_passwordİstek Parametreleri
Aşağıdaki parametrelerle bir application/json gövdesi gönderin:
urlDenetlenecek URL. http:// veya https:// ile başlamalıdır (ör: "https://example.com").
render_jsfalseTrue olduğunda, denetim öncesi JavaScript'i işlemek için headless tarayıcı kullanır. SPA ve JS-ağırlıklı sayfalar için kullanın. Maliyeti artırabilir.
proxy_countrynullProxy seçimi için ISO 3166-1 alpha-2 ülke kodu (ör: "US", "TR", "DE"). Hedef site coğrafi engelleme yapıyorsa kullanın.
JavaScript İşleme: render_js etkinleştirildiğinde headless tarayıcı kullanılır, bu işlem süresini ve maliyeti artırır. Yalnızca içeriğini göstermek için JavaScript gerektiren sayfalar (SPA, React/Vue uygulamaları) için etkinleştirin.
{
"url": "https://example.com",
"render_js": false,
"proxy_country": "US"
}Kod Örnekleri
Farklı programlama dillerinde Teknik SEO denetimi nasıl çalıştırılacağını gösteren örnekler.
curl -X POST https://data.semust.com/v1/technical-seo \
-H "Content-Type: application/json" \
-H "SEMUST-API-USER: your_username" \
-H "SEMUST-API-PASSWORD: your_password" \
-d '{
"url": "https://example.com",
"render_js": false
}'Yanıt
Kategorize edilmiş denetim sonuçları ve özet puan içeren bir JSON nesnesi döndürür.
Kök Yanıt Alanları
| Alan | Tür | Açıklama |
|---|---|---|
success | boolean | Başarılı yanıtta her zaman true |
url | string | Denetlenen URL |
cost | float | Bu istek için düşülen kredi (USD) |
audit_results | object | Kategoriye göre gruplandırılmış denetim sonuçları (meta, başlıklar, bağlantılar, görseller, içerik, url_analizi, sosyal) |
summary | object | Toplu istatistikler: toplam kontrol, ciddiyet seviyesine göre sorunlar ve genel puan |
Denetim Sonuç Yapısı
Her kategorideki denetim aynı yapıyı izler:
| Alan | Tür | Açıklama |
|---|---|---|
status | string | "pass", "fail" veya "error" — denetim sonucu |
severity | string | "critical", "warning" veya "notice" — etki seviyesi |
issue | string | Sorun kodu tanımlayıcısı (yalnızca status "fail" olduğunda mevcut) |
data | object | Kontrole özgü ayrıntılı veriler (her denetime göre değişir) |
Özet Nesne Alanları
| Alan | Tür | Açıklama |
|---|---|---|
total_checks | integer | Yapılan toplam denetim sayısı |
passed_checks | integer | Geçen denetim sayısı |
total_issues | integer | Başarısız olan denetim sayısı |
critical_issues | integer | Kritik ciddiyet seviyesindeki başarısızlık sayısı |
warning_issues | integer | Uyarı ciddiyet seviyesindeki başarısızlık sayısı |
notice_issues | integer | Bilgi ciddiyet seviyesindeki başarısızlık sayısı |
score | integer | Genel puan (0-100) — geçen kontrollerin yüzdesi |
{
"success": true,
"url": "https://example.com",
"cost": 0.0012,
"audit_results": {
"meta": {
"title": {
"status": "fail",
"severity": "warning",
"issue": "long_title",
"data": { "title": "Very Long Page Title...", "length": 66 }
},
"meta_description": {
"status": "pass",
"severity": "warning",
"data": { "meta_description": "Page description...", "length": 93 }
},
"canonical_url": {
"status": "pass",
"severity": "warning",
"data": { "current_url": "https://example.com", "canonical_url": "https://example.com" }
},
"robots_noindex": { "status": "pass", "severity": "critical", "data": {} },
"viewport": {
"status": "pass",
"severity": "critical",
"data": { "content": "width=device-width, initial-scale=1" }
}
},
"headings": {
"missing_h1": {
"status": "pass",
"severity": "critical",
"data": { "h1_count": 1, "h1_text": "Welcome" }
},
"broken_heading_structure": {
"status": "fail",
"severity": "warning",
"issue": "broken_heading_structure",
"data": { "total_count": 12, "skipped_levels": 1 }
}
},
"images": {
"images_without_alt": { "status": "pass", "severity": "warning", "data": { "total_images": 10 } },
"missing_image_dimensions": {
"status": "fail",
"severity": "warning",
"issue": "missing_image_dimensions",
"data": { "total_images": 10, "count": 5 }
}
},
"content": {
"low_word_count": { "status": "pass", "severity": "warning", "data": { "word_count": 684 } },
"low_html_text_ratio": {
"status": "fail",
"severity": "warning",
"issue": "low_html_text_ratio",
"data": { "text_to_html_ratio": 8.08 }
}
}
},
"summary": {
"total_checks": 27,
"passed_checks": 23,
"total_issues": 4,
"critical_issues": 0,
"warning_issues": 4,
"notice_issues": 0,
"score": 85
}
}Denetim Kontrolleri (Toplam 27)
API, 7 kategoride 27 sayfa içi SEO kontrolü çalıştırır. Her kontrol pass, fail veya error ile ciddiyet seviyesi ve ayrıntılı veriler döndürür.
Meta Etiketler8
| Denetim | Ciddiyet | Açıklama |
|---|---|---|
title | critical | Eksik, çok kısa (≤10 karakter) veya çok uzun (>60 karakter) title etiketi kontrolü |
meta_description | warning | Eksik, çok kısa (<50 karakter) veya çok uzun (>160 karakter) meta açıklama kontrolü |
canonical_url | warning | Eksik, birden fazla veya uyumsuz canonical URL kontrolü |
robots_noindex | critical | Robots veya googlebot meta etiketlerinde noindex direktifi algılama |
viewport | critical | Eksik veya geçersiz viewport meta etiketi kontrolü (width=device-width içermeli) |
missing_lang | warning | HTML etiketinin lang özniteliğine sahip olduğunu kontrol eder |
noindex_canonical_conflict | critical | Sayfada hem noindex hem canonical URL bulunması çakışmasını algılar |
hreflang | warning | Hreflang uygulamasını doğrular: dil kodları, x-default, kendi kendine referans etiketleri |
Başlıklar4
| Denetim | Ciddiyet | Açıklama |
|---|---|---|
missing_h1 | critical | Sayfada en az bir H1 etiketi olduğunu kontrol eder |
multiple_h1_tags | warning | Sayfada tam olarak bir H1 etiketi olduğunu kontrol eder (birden fazla değil) |
duplicate_h1_tags | warning | H1 etiketlerinin aynı metne sahip olmadığını kontrol eder |
broken_heading_structure | warning | Başlık hiyerarşisini doğrular (H1→H2→H3), atlanan seviye veya boş başlık olmamalı |
Bağlantılar5
| Denetim | Ciddiyet | Açıklama |
|---|---|---|
empty_anchor_text | warning | Bağlantı etiketlerinin metin içeriğine sahip olduğunu kontrol eder (boş değil) |
non_descriptive_anchors | notice | "Buraya tıklayın" veya "devamını oku" gibi açıklayıcı olmayan bağlantı metinlerini kontrol eder |
internal_links_nofollow | warning | İç bağlantıların nofollow özniteliğine sahip olmadığını kontrol eder |
too_many_internal_links | warning | Sayfada çok fazla iç bağlantı varsa uyarır (eşik değişir) |
too_many_external_links | warning | Sayfada çok fazla dış bağlantı varsa uyarır (eşik: 100) |
Görseller2
| Denetim | Ciddiyet | Açıklama |
|---|---|---|
images_without_alt | warning | Görsellerin erişilebilirlik için alt özniteliğine sahip olduğunu kontrol eder |
missing_image_dimensions | warning | Görsellerin width ve height özniteliklerine sahip olduğunu kontrol eder (CLS'yi önler) |
İçerik4
| Denetim | Ciddiyet | Açıklama |
|---|---|---|
low_word_count | warning | Ana içeriğin en az 200 kelime içerdiğini kontrol eder |
low_html_text_ratio | warning | Metin-HTML oranının %10'un üzerinde olduğunu kontrol eder |
lorem_ipsum | notice | Sayfa içeriğinde "lorem ipsum" yer tutucu metni algılar |
page_size | warning | HTML boyutunu (<3MB) ve DOM element sayısını (<1500) kontrol eder |
URL Analizi2
| Denetim | Ciddiyet | Açıklama |
|---|---|---|
http_url | critical | URL'nin HTTP değil HTTPS kullandığını kontrol eder |
long_url | notice | URL 75 karakteri aşarsa uyarır |
Sosyal Etiketler2
| Denetim | Ciddiyet | Açıklama |
|---|---|---|
open_graph | warning | Gerekli Open Graph etiketlerini kontrol eder: og:title, og:description, og:image, og:url, og:type |
twitter_card | notice | Twitter Card meta etiketlerini kontrol eder: card, title, description, image |
Hata Kodları
Tüm hatalar, insan tarafından okunabilir bir mesaj ve bir hata kodu içeren bir JSON nesnesi döndürür.
| Durum | Kod | Açıklama |
|---|---|---|
400 | INVALID_REQUEST | İstek gövdesi hatalı biçimlendirilmiş veya gerekli alanlar eksik |
400 | URL_REQUIRED | url alanı zorunludur |
400 | INVALID_URL | Geçersiz URL formatı veya şeması — http:// veya https:// ile başlamalıdır |
401 | INVALID_API_KEY | Kimlik doğrulama başarısız — geçersiz kullanıcı adı veya şifre |
402 | INSUFFICIENT_CREDITS | Hesabınızda yeterli kredi yok |
500 | INTERNAL_ERROR | Bir iç sunucu hatası oluştu |
502 | AUDIT_FAILED | Hedef URL denetlenemedi |
502 | TARGET_BLOCKED | Hedef web sitesi otomatik erişimi aktif olarak engelliyor (403 Forbidden) |
502 | TARGET_UNREACHABLE | Hedefe ulaşılamıyor — DNS hatası, bağlantı zaman aşımı veya ağ hatası |
502 | SCRAPE_FAILED | Sayfanın alınmasında genel hata |
504 | TIMEOUT | İstek zaman aşımına uğradı (maksimum 2 dakika) |
{
"error": "The url field is required",
"code": "URL_REQUIRED"
}Krediler & Hız Sınırları
Krediler
Her istek bakiyenizden kredi tüketir. Maliyet, render_js parametresine göre değişir (JS işleme daha pahalıdır). Başarısız istekler otomatik olarak iade edilir.
Hız Sınırları
İstekler, planınıza göre dakika başına ve gün başına sınırlara tabidir. Sınırların aşılması HTTP 429 döndürür.
