İçeriğe geç
SEO Tools AI
SEO Tools AIKaydol

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 ·

Dosya dolabından yola bir köprü inşa eden kağıt işçiler

Beş adımda tarif

01

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.

02

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.

03

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.

04

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.

05

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.

python
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)
Blokları gruplara ayıran kağıt dişliler ve konveyör bantları

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

API'nin davranışı ve bir senkronizasyon işinin ne yapması gerektiği.
SinyalAnlamİş ne yapar
HTTP 401Eksik veya hatalı anahtarDur, bir insana uyar
HTTP 402Kredi bittiDur, eski skorları koru, yükle
ok falseÇağrı başarısız olduGövdeyi günlüğe kaydet, sonraki çalıştırmada tekrar dene
Bir alan adı için boş sonuçİndekste yokHücreyi boş bırak
Bahçede eğri bir bitki sapını düzelten kağıt bahçıvan

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