Przejdź do treści
SEO Tools AI
SEO Tools AIZarejestruj się

Przepis

Synchronizuj wyniki linków z arkusza lub n8n

Większość katalogów narzędzi działa na arkuszach, bazach Airtable lub małych bazach danych. Ten przepis zamienia sprawdzanie linków zwrotnych w wypełnianie kolumn: jedno zapytanie na 2000 wierszy.

Zespół badawczy SEO Tools AI ·

Papierowi robotnicy budujący most łączący szafę akt z drogą

Przepis w pięciu krokach

01

Eksportuj domeny

Weź kolumnę z adresami stron z Twoich list, usuń protokół i ścieżki oraz usuń duplikaty. Duplikaty nie kosztują więcej, ale utrudniają krok mapowania.

02

Podziel na grupy po 2000

bulk_dr akceptuje do 2000 domen w jednym wywołaniu. Arkusz z 5000 wierszami wymaga więc trzech wywołań.

03

Wyślij, sprawdź ok

Wywołaj API, odczytaj JSON i zatrzymaj działanie, jeśli ok jest false. Zaloguj _credits, aby zobaczyć saldo po każdym uruchomieniu.

04

Zapisz z datą

Zapisz ocenę i dzisiejszą datę w dwóch kolumnach. Nigdy nie nadpisuj dobrej wartości pustą wartością.

05

Zaplanuj raz w miesiącu

Uruchom go pierwszego dnia miesiąca. Indeks zmienia się około raz w miesiącu, więc częstsze uruchamianie nie daje żadnych korzyści.

Wybierz, co uruchamia zadanie

Wyzwalacz decyduje o częstotliwości wywołań, więc wybierz go przed zbudowaniem mapowania. Dwa sposoby uruchomienia pokrywają niemal każdy katalog.

Harmonogram na pierwszy dzień miesiąca to najprostsza opcja. Pasuje do rytmu indeksu, a nikt nie musi pamiętać o wciśnięciu przycisku.

Harmonogram comiesięcznego odświeżania

Umieść na początku wyzwalacz harmonogramu, ustaw go na pierwszy dzień każdego miesiąca i pozwól mu odczytać całą tabelę listingu. Każde uruchomienie wykonuje wtedy jedną partię wywołań bulk_dr, dostosowaną do liczby wierszy.

Zachowaj harmonogram nawet przy małej tabeli. Comiesięczne zadanie uruchamiane na małym arkuszu kosztuje jeden kredyt i utrzymuje oceny aktualne i z datą.

Wyzwalacz przy każdym nowym wierszu

Załóżmy, że listingi pojawiają się po jednym, co kilka dni. Wyzwalacz uruchamiany przy każdym nowym wierszu jest kuszący, ale każde wywołanie jest rozliczane osobno, więc jedno wywołanie na wiersz kosztuje więcej niż jedna partia na miesiąc.

Jeśli chcesz uzyskać wynik szybko, pozwól przepływowi dla nowego wiersza zapisać puste dr, a comiesięczne uruchomienie wypełni je. Wiersz otrzyma wartość bez wywoływania zapytania przy każdym pojawieniu się nowego elementu.

Jeśli listingi pojawiają się partiami, zgrupuj nowe wiersze w jedną partię pod koniec tygodnia. To kosztuje jedno wywołanie, a arkusz nie zmienia się tylko raz w miesiącu.

Data oznaczająca zakończone wiersze

Zapisz dr_checked_on przy każdym wierszu, który oceniasz. Uruchomienie zaczynające się od filtrowania po tej dacie pomija to, co już zostało zrobione w tym miesiącu, i nie jest potrzebna osobna kolejka.

Gdy uruchomienie zatrzyma się w połowie, wiersze już oznaczone pozostają oznaczone. Następne uruchomienie kontynuuje tam, gdzie skończyło się poprzednie, co jest najtańszą formą odzyskiwania.

Zanim zaczniesz automatyzować

Wykonaj sprawdzenie ręcznie na pięciu listingach. Użyj darmowej akcji overview dla każdego, która nie wymaga klucza, i porównaj to, co widzisz, z tym, czego się spodziewałeś.

To wychwyci typowe niespodzianki z wyprzedzeniem: listing wskazujący na poddomenę, produkt znajdujący się na ścieżce większej witryny, domena, która przekierowała w zeszłym roku. Ocena należy do domeny, a nie do produktu.

Zdecyduj, jak Twój arkusz oznacza takie przypadki, na przykład za pomocą kolumny z notatką zawierającej tekst shares domain. Czytelnicy znacznie łatwiej wybaczą przypis niż ocenę, która wygląda na błędną.

Gdy pięć przykładów wygląda sensownie, przejdź do partii. Twoje odniesienie do pól wymienia kolumny, a przykład kosztów pokazuje, ile kosztuje jedno uruchomienie.

Mała wersja w Pythonie

Wymaga pakietu requests. To szkic kształtu zadania: najpierw wydrukuj prawdziwą odpowiedź, a następnie przemapuj potrzebne pola do własnych kolumn.

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)
Papierowe koła zębate i taśmociągi sortujące bloki na grupy

Wykonanie w Google Sheets lub n8n

Sheets mogą wywołać URL z Apps Script za pomocą UrlFetchApp, a n8n ma węzeł HTTP Request. Oba wykonują to samo co powyższy skrypt.

W n8n umieść na początku wyzwalacz harmonogramu, następnie węzeł odczytujący Twój arkusz lub tabelę, następnie krok dzielenia elementów, który tworzy grupy po 2000, a następnie HTTP Request. Dodaj końcowy węzeł zapisujący ocenę i datę z powrotem.

Przechowuj klucz w magazynie poświadczeń platformy, a nie w tekście przepływu pracy. Przepływy są udostępniane, kopiowane i wklejane na forach, a klucz wklejony razem z nimi to wydane pieniądze.

Bez kodu lub skrypt: która forma pasuje do Twojego zespołu

Obie ścieżki wykonują to samo wywołanie. Różnica polega na tym, kto będzie musiał utrzymywać przepływ za rok i jak łatwo będzie go wyjaśnić tej osobie.

Wybierz formę, którą nadal będziesz w stanie przeczytać po kilku miesiącach przerwy. Sprytny przepływ, którego nikt nie rozumie, jest gorszy niż prosty skrypt, który każdy może śledzić.

Przepływ, który możesz wyjaśnić następnemu edytorowi

Krótki przepływ n8n z czterema oznaczonymi węzłami jest łatwy do przekazania: trigger, read, batch, write back. Nazwij każdy węzeł zgodnie z tym, co robi, a nie według domyślnej etykiety.

Unikaj nakładania wielu gałęzi na przypadki brzegowe. Każda gałąź to jedno miejsce więcej, w którym domena może otrzymać błędną ocenę.

Gdy skrypt zyskuje swoje miejsce

Skrypt ma sens, gdy wejściem jest folder plików CSV lub gdy zadanie wymaga logiki, którą przepływ obsługuje niezręcznie. Powyższy szkot pasuje do tego przypadku.

Umieść skrypt w systemie kontroli wersji i przechowuj klucz w zmiennej środowiskowej. Skrypt, który odczytuje klucz z pliku w tym samym folderze, to wyciek czekający na udostępniony dysk.

Samouczki pomijające trudną część

Wiele filmów pokazuje przepływ, który działa za pierwszym razem na trzech wierszach. Prawdziwe listingi mają puste miejsca, duplikaty i dziwne domeny, a to właśnie tam przepływ wymaga uwagi.

Zbuduj przepływ najpierw na swoich pięciu testowych wierszach. Jeśli samouczek nie przetrwa tych testów, nie był to cały proces.

Gdy przekazujesz przepływ komuś innemu, dołącz pięć testowych wierszy jako próbkę. Następna osoba zobaczy, jak wygląda poprawne uruchomienie, zanim dotknie danych produkcyjnych.

Co oznaczają błędy

Zachowanie API i to, co powinno robić zadanie synchronizacji.
SygnałZnaczenieCo robi zadanie
HTTP 401Brakujący lub błędny kluczZatrzymaj, powiadom człowieka
HTTP 402Kredyty się skończyłyZatrzymaj, zachowaj stare oceny, doładuj
ok jest falseWywołanie się nie powiodłoZaloguj treść, spróbuj ponownie przy następnym uruchomieniu
Pusty wynik dla domenyNie w indeksieZostaw komórkę pustą
Papierowy ogrodnik prostujący krzywy łodygę rośliny w ogrodzie

Utrzymuj czystość arkusza między uruchomieniami

Zadanie synchronizacji jest tak dobre, jak arkusz, do którego zapisuje. Kilka nawyków zapobiegnie powolnemu uszkodzeniu, które gromadzi się między jednym a drugim uruchomieniem.

Większość problemów zaczyna się od niewinnego edytowania: kolumna wstawiona powyżej oceny lub skopiowany wiersz, który cicho zmienia domenę.

Przechowuj surowe odpowiedzi w osobnej karcie

Przechowuj każdą surową odpowiedź w osobnej karcie lub jako JSON Lines z jedną odpowiedzią na linię. Ta kopia pozwala Ci odbudować widoczne kolumny bez drugiego płatnego wywołania.

Karta surowych danych odpowiada również na pytanie, które zadaje edytor sześć miesięcy później: co zwróciło API w tym dniu.

Nazwij każdą kartę surowych danych datą partii, aby kopie sortowały się w kolejności, gdy przewijasz je wstecz.

Zablokuj wiersz nagłówka

Zablokuj wiersz nagłówka i nigdy nie wstawiaj kolumny powyżej oceny. Mapowanie wskazujące na kolumnę F odczyta złe dane po wstawieniu, i zrobi to bez żadnego błędu.

Nazwij kolumny w mapowaniu, a nie według pozycji. Nazwa przetrwa przegrupowanie, a pozycja nie.

Policz wiersze przed i po

Zapisz liczbę wierszy w dzienniku przed uruchomieniem i ponownie po nim. Dwie liczby powinny różnić się tylko wierszami, które zamierzałeś dodać, a luka powie Ci, że coś poszło nie tak.

Posortuj arkusz według kolumny z oceną raz w miesiącu i spójrz na pierwsze i ostatnie wiersze. Dziadne wartości tam zwykle wskazują na domenę, która została przypisana do błędnego listingu.

Przetestuj na kopii najpierw

Zduplikuj arkusz i uruchom przepływ przeciwko kopii, zanim dotkniesz prawdziwego. Kopia nic nie kosztuje do stworzenia.

Złe mapowanie nadpisujące żywe oceny jest trudne do cofnięcia, ponieważ stare wartości zniknęły. Zachowaj kopię, aż pierwsze uczciwe uruchomienie zgodzi się z tym, czego się spodziewałeś.

Usuń kopię dopiero po drugim zaplanowanym uruchomieniu, które ją potwierdzi. Dwa czyste uruchomienia z rzędu to lepszy sygnał niż jedno.

Przed pierwszym uruchomieniem produkcyjnym

  • Klucz znajduje się w magazynie poświadczeń platformy lub zmiennej środowiskowej, a nie w tekście przepływu pracy.
  • Jedno darmowe wywołanie overview zostało sprawdzone ręcznie przeciwko listingu, który znasz.
  • Uruchomienie zostało przetestowane na kopii arkusza, a kopia zgodziła się z tym, czego się spodziewałeś.
  • Zadanie zapisuje datę obok każdej oceny, której dotyka.
  • Status 401 i 402 zatrzymują zadanie i wysyłają wiadomość do osoby.

Pytania dotyczące synchronizacji

Jak uniknąć podwójnej płatności, jeśli zadanie zawinie w połowie?

Zapisuj datę obok każdej oceny w miarę postępów, a następne uruchomienie pomija wiersze już oznaczone w tym miesiącu. Partie po 2000 oznaczają, że awaria kosztuje co najwyżej jeden kredyt, więc ryzyko jest znikome, ale nawyk utrzymuje porządek w arkuszu.

Czy osoba nieprogramistyczna może to skonfigurować?

W większości przypadków tak. Węzeł HTTP Request w n8n lub Make wymaga tylko URL, klucza i listy. Trudniejszą częścią jest zamiana odpowiedzi na kolumny, więc zrób jedno testowe wywołanie i spójrz na JSON przed zbudowaniem mapowania.