Tarif
Link skorlarını bir sayfadan veya n8n'den senkronize et
Çoğu araç dizini bir e-tabloya, bir Airtable tabanına veya küçük bir veritabanına dayanır. Bu tarif, bir araç geri link kontrolünü bir sütun doldurma işlemine dönüştürür: 2.000 satır başına bir istek.
SEO Tools AI araştırma ekibi ·

Beş adımda tarif
Alan adlarını dışa aktar
Listelerinizin web sitesi sütununu alın, protokolü ve yolları temizleyin ve tekrarları kaldırın. Tekrarlar ekstra maliyet yaratmaz ancak eşleştirme adımını karmaşıklaştırır.
2.000'lik gruplara böl
bulk_dr çağrı başına en fazla 2.000 alan adı kabul eder. Bu nedenle 5.000 satırlık bir sayfa üç çağrı gerektirir.
Gönder, onayla
API'yi çağır, JSON'u oku ve ok false ise dur. _credits'i günlüğe kaydedin, böylece her çalıştırmadan sonra bakiyeyi görebilirsiniz.
Tarih ile geri yaz
Puanı ve bugünün tarihini iki sütuna kaydedin. İyi bir değeri boş bir değerle ezmemeye dikkat edin.
Ayda bir kez zamanlayın
Ayın ilk gününde çalıştırın. İndeks aylık olarak değişir, bu yüzden daha sık çalıştırmak bir şey kazandırmaz.
İşi başlatan şeyi seçin
tetikleyici, çağrıların ne sıklıkta yapılacağını belirler, bu yüzden eşleştirmeyi oluşturmadan önce onu seçin. İki başlangıç neredeyse tüm dizinleri kapsar.
Ayın ilk gününde bir zamanlama en basit seçenektir. İndeks ritmine uyar ve bir düğmeyi hatırlamak zorunda kalmaz.
Aylık yenileme için bir zamanlama
Önce bir zamanlama tetikleyicisi yerleştirin, her ayın ilk gününe ayarlayın ve tüm liste tablosunu okumasını sağlayın. Her çalıştırma, satır sayısına göre boyutlandırılmış bir bulk_dr çağrıları grubu yapar.
Tablo küçükken bile zamanlamayı koruyun. Küçük bir sayfada çalışan aylık bir iş bir krediye mal olur ve skorların tarihli ve güncel kalmasını sağlar.
Her yeni satırda bir tetikleyici
Listelerin tek tek, birkaç günde bir geldiğini varsayalım. Her yeni satırda tetiklenen bir tetikleyici çekici olabilir, ancak her çağrı tek başına faturalandırılır, bu yüzden satır başına bir çağrı, aylık bir toplu işlem için daha pahalıdır.
Skoru hızlıca almak istiyorsanız, yeni satır akışının boş bir dr yazmasına ve aylık çalıştırmanın onu doldurmasına izin verin. Satır, her geliş için bir çağrı yapmadan sayısını alır.
Listeler patlamalar halinde gelirse, yeni satırları haftanın sonunda bir toplu işe gruplayın. Bu bir çağrıya mal olur ve sayfa artık sadece ayda bir kez değişmez.
Tamamlanan satırları işaretleyen bir tarih
Puanladığınız her satıra dr_checked_on kaydedin. Bu tarihe göre bir filtreleme ile başlayan bir çalıştırma, bu ay zaten yapılanları atlar ve ayrı bir kuyruk gerekmez.
Bir çalıştırma yolda durduğunda, zaten damgalanmış satırlar damgalı kalır. Sonraki çalıştırma, son durduğu yerden devam eder; bu en ucuz kurtarma yöntemidir.
Her şeyi otomatikleştirmeden önce
Önce beş listeyi elle kontrol edin. Her biri için anahtar gerektirmeyen ücretsiz overview eylemini kullanın ve gördüklerinizi beklediklerinizle karşılaştırın.
Bu, yaygın sürprizleri erken yakalar: bir alt etkiye işaret eden bir liste, bir sitenin büyük bir yolunda bulunan bir ürün, geçen bahar yeniden yönlendirilen bir alan adı. Bir puan bir ürünün değil, bir alan adının özelliğidir.
Sayfanızın bu durumları nasıl işaretlediğine karar verin, örneğin shares domain (alan adını paylaşır) yazan bir not sütunu ile. Okuyucular bir dipnotu, yanlış görünen bir puandan çok daha kolay kabul eder.
Beş örnek mantıklı göründüğünde toplu işe geçin. Alan referansınız sütunları listeler ve maliyet örneği bir çalıştırmanın neye mal olduğunu gösterir.
Küçük bir Python sürümü
requests paketini gerektirir. İşin şeklini gösteren bir taslaktır: önce gerçek bir yanıtı yazdırın, ardından ihtiyacınız olan alanları kendi sütunlarınıza eşleyin.
import csv, requests
KEY = "sk_live_..."
BASE = "https://seotoolsai.org/api.php"
rows = list(csv.DictReader(open("listings.csv")))
domains = sorted({r["domain"] for r in rows})
for i in range(0, len(domains), 2000):
chunk = domains[i:i + 2000]
r = requests.post(BASE, params={"action": "bulk_dr", "key": KEY},
data={"domains": ",".join(chunk)}, timeout=60)
if r.status_code in (401, 402):
raise SystemExit(f"stop: HTTP {r.status_code}")
data = r.json()
if not data.get("ok"):
raise SystemExit("api said not ok")
print(data["_credits"]) # cost and remaining balance
open(f"raw_{i}.json", "w").write(r.text)
Google Sheets veya n8n ile yapmak
Sheets, Apps Script ile UrlFetchApp kullanarak bir URL'ye çağrı yapabilir ve n8n'de bir HTTP Request düğümü vardır. İkisi de yukarıdaki betikle aynı şeyi yapar.
n8n'de önce bir zamanlama tetikleyicisi yerleştirin, ardından sayfanızı veya tablonuzu okuyan bir düğüm, ardından 2.000'lik gruplar oluşturan bir öğe bölme adımı, ardından HTTP Request. Puanı ve tarihi geri yazan son bir düğüm ekleyin.
Anahtarı platformun kimlik bilgisi deposunda tutun, iş akışı metninde değil. İş akışları paylaşılır, kopyalanır ve forumlara yapıştırılır; onlarla birlikte yapıştırılan bir anahtar harcanmış paradır.
Kodsuz veya bir betik: takımınıza hangi şekil uyar
Her iki yol da aynı çağrıyı yapar. Fark, bir yıl sonra akışı kimin yöneteceği ve o kişiye ne kadar kolay açıklanacağıdır.
Birkaç aylık bir mola sonrası bile okuyabildiğiniz bir akış seçin. Kimse tarafından anlaşılmayan zeki bir akış, herkesin takip edebileceği sıradan bir betikten daha kötüdür.
Sonraki editöre açıklayabileceğiniz bir akış
Dört etiketli düğümden oluşan kısa bir n8n akışı kolayca devredilebilir: tetikleyici, oku, toplulaştır, geri yaz. Her düğümü varsayılan etiketinden değil, ne yaptığını açıklayacak şekilde adlandırın.
Kenar durumlar için birçok dalı üst üste yığmaktan kaçının. Her dal, bir alan adının yanlış puan alabileceği bir yerdir.
Bir betiğin yeri olduğunda
Girdi bir CSV dosyaları klasörüyse veya iş, bir akışın zorlandığı mantık gerektiriyorsa bir betik mantıklıdır. Yukarıdaki taslak bu durumu karşılar.
Betik sürüm kontrolünde olsun ve anahtarı bir ortam değişkeninde tutun. Anahtarını aynı klasördeki bir dosyadan okuyan bir betik, paylaşılan bir sürücü için bekleyen bir sızıntıdır.
Zor kısmı atlayan öğreticiler
Birçok video, üç satırla ilk denemede çalışan bir akış gösterir. Gerçek listeler boşluklar, tekrarlar ve tuhaf alan adları içerir ve akışın dikkat etmesi gereken yerler burasıdır.
Akışı önce kendi beş test satırınızda oluşturun. Bir öğretici bu satırlara dayanamıyorsa, o öğretici aslında tüm işi temsil etmemiştir.
Akışı bir başkasına devrettiğinizde, örnek olarak beş test satırını da ekleyin. Sonraki kişi canlı veriye dokunmadan önce iyi bir çalıştırmanın nasıl göründüğünü görebilir.
Hatalar ne anlama geliyor
| Sinyal | Anlam | İş ne yapar |
|---|---|---|
| HTTP 401 | Eksik veya hatalı anahtar | Dur, bir insana uyar |
| HTTP 402 | Kredi bitti | Dur, eski skorları koru, yükle |
ok false | Çağrı başarısız oldu | Gövdeyi günlüğe kaydet, sonraki çalıştırmada tekrar dene |
| Bir alan adı için boş sonuç | İndekste yok | Hücreyi boş bırak |

Çalıştırmalar arasında sayfayı temiz tut
Bir senkronizasyon işi, yazdığı sayfa kadar iyidir. Bir çalıştırmadan diğerine biriken yavaş hasarı durduran birkaç alışkanlık vardır.
Sorunların çoğu masum bir düzenlemeyle başlar: skorun üzerine eklenen bir sütun veya bir alan adını sessizce değiştiren kopyalanmış bir satır.
Ham yanıtları kendi sekmelerinde tut
Her ham yanıtı kendi sekmelerinde veya satır başına bir yanıt olacak şekilde JSON Lines olarak saklayın. Bu kopya, ikinci bir ücretli çağrı yapmadan görünür sütunları yeniden oluşturmanızı sağlar.
Bir ham sekme, editörün altı ay sonra soracağı soruyu da yanıtlar: API o tarihte ne döndürdü.
Her ham sekmeyi toplu iş tarihine göre adlandırın, böylece kopyalar geriye doğru kaydırıldığında sıraya girer.
Üst satırı kilitle
Üst satırı dondurun ve skorun üzerine sütun eklemeyin. F sütununa işaret eden bir eşleştirme, bir ekleme sonrası yanlış veriyi okuyacak ve bunu herhangi bir hata vermeden yapacaktır.
Eşleştirmedeki sütunları konuma göre değil, isimlendirerek adlandırın. Bir isim yeniden sıralamada kalır, bir konum ise kalmaz.
Satır sayısını önceden ve sonra say
Çalıştırmadan önce ve sonra satır sayısını günlüğe kaydedin. İki sayı, eklemeyi planladığınız satırlar dışında farklı olmamalıdır; bir boşluk bir şeylerin yanlış gittiğini gösterir.
Sayfayı ayda bir kez puan sütununa göre sıralayın ve üst ve alt satırlara bakın. Oradaki tuhaf değerler genellikle bir alan adının yanlış listeye eşlendiğini gösterir.
Önce bir kopyada test et
Sayfanın bir kopyasını oluştur ve gerçek sayfaya dokunmadan akışı kopya üzerinde çalıştır. Bir kopya oluşturmanın maliyeti yoktur.
Canlı skorların üzerine yazılan kötü bir eşleştirme geri alması zordur, çünkü eski değerler gitmiştir. İlk dürüst çalıştırma beklediklerinizle eşleşene kadar kopyayı saklayın.
Kopyayı yalnızca ikinci planlı çalıştırma onu eşleştirdikten sonra silin. Üst üste iki temiz çalıştırma, birinden daha iyi bir sinyaldir.
İlk canlı çalıştırmadan önce
- Anahtar platformun kimlik bilgisi deposunda veya bir ortam değişkeninde bulunur, iş akışı metninde değil.
- Bir ücretsiz
overviewçağrısı, bildiğiniz bir listeye göre elle kontrol edildi. - Çalıştırma sayfanın bir kopyasında test edildi ve kopya beklediklerinizle eşleşti.
- İş, dokunduğu her puanın yanına tarihi yazar.
- 401 ve 402 durum kodları işi durdurur ve bir kişiye mesaj gönderir.
Senkronizasyon soruları
İş yolda çökerse iki kez ödeme yapmaktan nasıl kaçınırım?
Her gittiğiniz yerde puanın yanına tarihi yazın ve sonraki çalıştırma bu ay zaten damgalanmış satırları atlasın. 2.000'lik bloklar, bir çökmenin en fazla bir krediye mal olacağı anlamına gelir, bu yüzden risk küçüktür, ancak bu alışkanlık sayfayı düzenli tutar.
Bir programcı olmayan bu kurulumu yapabilir mi?
Büyük ölçüde evet. n8n veya Make'de bir HTTP Request düğümü yalnızca bir URL, bir anahtar ve bir liste gerektirir. Zor kısım yanıtı sütunlara dönüştürmektir, bu yüzden eşleştirmeyi oluşturmadan önce bir test çağrısı yapın ve JSON'a bakın.