Teknik SEO API

POST

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-seo

Kimlik Doğrulama

Tüm istekler başlık tabanlı kimlik doğrulama gerektirir. Her istekte API kimlik bilgilerinizi ekleyin.

BaşlıkTürAçıklama
SEMUST-API-USERstringAPI kullanıcı adınız
SEMUST-API-PASSWORDstringAPI şifreniz

API kimlik bilgilerini API Erişim sayfasında doğrulayabilirsiniz.

İstek Başlıkları
SEMUST-API-USER: your_username
SEMUST-API-PASSWORD: your_password

İstek Parametreleri

Aşağıdaki parametrelerle bir application/json gövdesi gönderin:

url
string
gerekli

Denetlenecek URL. http:// veya https:// ile başlamalıdır (ör: "https://example.com").

render_js
booleanvarsayılan: false

True 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_country
stringvarsayılan: null

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

İstek Gövdesi
{
  "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
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ı

AlanTürAçıklama
successbooleanBaşarılı yanıtta her zaman true
urlstringDenetlenen URL
costfloatBu istek için düşülen kredi (USD)
audit_resultsobjectKategoriye göre gruplandırılmış denetim sonuçları (meta, başlıklar, bağlantılar, görseller, içerik, url_analizi, sosyal)
summaryobjectToplu istatistikler: toplam kontrol, ciddiyet seviyesine göre sorunlar ve genel puan

Denetim Sonuç Yapısı

Her kategorideki denetim aynı yapıyı izler:

AlanTürAçıklama
statusstring"pass", "fail" veya "error" — denetim sonucu
severitystring"critical", "warning" veya "notice" — etki seviyesi
issuestringSorun kodu tanımlayıcısı (yalnızca status "fail" olduğunda mevcut)
dataobjectKontrole özgü ayrıntılı veriler (her denetime göre değişir)

Özet Nesne Alanları

AlanTürAçıklama
total_checksintegerYapılan toplam denetim sayısı
passed_checksintegerGeçen denetim sayısı
total_issuesintegerBaşarısız olan denetim sayısı
critical_issuesintegerKritik ciddiyet seviyesindeki başarısızlık sayısı
warning_issuesintegerUyarı ciddiyet seviyesindeki başarısızlık sayısı
notice_issuesintegerBilgi ciddiyet seviyesindeki başarısızlık sayısı
scoreintegerGenel puan (0-100) — geçen kontrollerin yüzdesi
Başarılı Yanıt
{
  "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 Etiketler
8

DenetimCiddiyetAçı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ıklar
4

DenetimCiddiyetAçı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ılar
5

DenetimCiddiyetAçı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örseller
2

DenetimCiddiyetAçı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)

İçerik
4

DenetimCiddiyetAçı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 Analizi
2

DenetimCiddiyetAçı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 Etiketler
2

DenetimCiddiyetAçı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.

DurumKodAçıklama
400
INVALID_REQUESTİstek gövdesi hatalı biçimlendirilmiş veya gerekli alanlar eksik
400
URL_REQUIREDurl alanı zorunludur
400
INVALID_URLGeçersiz URL formatı veya şeması — http:// veya https:// ile başlamalıdır
401
INVALID_API_KEYKimlik doğrulama başarısız — geçersiz kullanıcı adı veya şifre
402
INSUFFICIENT_CREDITSHesabınızda yeterli kredi yok
500
INTERNAL_ERRORBir iç sunucu hatası oluştu
502
AUDIT_FAILEDHedef URL denetlenemedi
502
TARGET_BLOCKEDHedef web sitesi otomatik erişimi aktif olarak engelliyor (403 Forbidden)
502
TARGET_UNREACHABLEHedefe ulaşılamıyor — DNS hatası, bağlantı zaman aşımı veya ağ hatası
502
SCRAPE_FAILEDSayfanın alınmasında genel hata
504
TIMEOUTİstek zaman aşımına uğradı (maksimum 2 dakika)
Hata Yanıtı
{
  "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.