본문으로 이동
SEO Tools AI
SEO Tools AI$100 무료 받기

레시피

시트 또는 n8n에서 링크 점수 동기화

대부분의 도구 디렉토리는 스프레드시트, Airtable 기반 또는 작은 데이터베이스에 저장됩니다. 이 레시피는 도구 백링크 검사를 컬럼 채우기로 전환합니다: 2,000행당 하나의 요청.

SEO Tools AI 연구팀 ·

파일 캐비닛에서 도로로 연결하는 다리를 건설하는 종이 공작인 노동자들

5단계로 만드는 레시피

01

도메인 내보내기

목록의 웹사이트 열에서 프로토콜과 경로를 제거하고 중복을 제거합니다. 중복은 추가 비용이 들지 않지만 매핑 단계를 복잡하게 만듭니다.

02

2,000개씩 그룹으로 나누기

bulk_dr은 호출당 최대 2,000개의 도메인을 허용합니다. 따라서 5,000행 시트에는 세 번의 호출이 필요합니다.

03

전송 및 확인

API를 호출하고 JSON을 읽은 후 ok가 false인 경우 중단합니다. _credits를 로깅하여 각 실행 후 잔액을 확인합니다.

04

날짜와 함께 다시 작성

평가와 오늘 날짜를 두 개의 열에 저장합니다. 좋은 값을 빈 값으로 덮어쓰지 마십시오.

05

월별 일정으로 예약

매월 첫날에 실행합니다. 인덱스는 월별로 약하게 이동하므로 더 자주 실행해도 이득이 없습니다.

작업 시작 방법 선택

트리거는 호출 빈도를 결정하므로 매핑을 구축하기 전에 선택하십시오. 두 가지 시작 방식이 거의 모든 디렉토리를 커버합니다.

매월 첫날에 예약하는 것이 가장 간단한 옵션입니다. 인덱스의 리듬과 일치하며, 누군가가 버튼을 기억할 필요가 없습니다.

월별 갱신을 위한 일정

먼저 일정 트리거를 배치하고 매월 첫날로 설정한 후 전체 목록 테이블을 읽도록 합니다. 각 실행은 행 수에 맞춰 크기가 조정된 bulk_dr 호출의 한 배치만 생성합니다.

테이블이 작더라도 일정을 유지하십시오. 작은 시트에서 실행되는 월별 작업은 크레딧 하나만 소모하며, 점수에 날짜를 표시하여 최신 상태를 유지합니다.

새 행마다 트리거

목록이 며칠마다 하나씩 도착한다고 가정해 봅시다. 새 행마다 트리거가 실행되는 것은 유혹적이지만, 호출당 요금이 부과되므로 행당 하나의 호출이 월별 일괄 처리보다 비쌉니다.

점수를 빠르게 얻고 싶다면, 새 행 흐름이 빈 dr을 작성하게 하고 월별 실행에서 이를 채우게 하십시오. 이렇게 하면 각 도착 시 호출 없이 행에 숫자가 부여됩니다.

목록이 폭풍처럼 도착하는 경우, 새 행을 주 말에 하나의 배치로 그룹화하십시오. 이는 하나의 호출 비용으로 가능하며, 시트가 한 달에 한 번만 변경되는 것이 아닙니다.

완료된 행을 표시하는 날짜

평가한 모든 행에 dr_checked_on을 저장합니다. 이 날짜로 필터링하여 시작하는 실행은 이미 이번 달에 완료된 항목을 건너뛰며, 별도의 큐가 필요하지 않습니다.

실행이 중간에 중단되면 이미 스탬프가 찍힌 행은 그대로 유지됩니다. 다음 실행은 마지막 실행이 중단된 지점에서 이어지며, 이는 가장 저렴한 복구 방법입니다.

모든 자동화 전에

먼저 수동으로 5개의 목록에 대해 검사를 실행하십시오. 키가 필요 없는 무료 overview 액션을 각 항목에 사용하고, 예상한 결과와 비교하십시오.

이렇게 하면 일반적인 놀라움을 조기에 발견할 수 있습니다: 서브도메인을 가리키는 목록, 큰 사이트의 경로에 있는 제품, 지난 봄에 리디렉션된 도메인 등. 평가는 제품이 아닌 도메인에 속합니다.

스프레드시트에서 이러한 경우를 어떻게 표시할지 결정하십시오. 예를 들어 shares domain이라는 메모 열을 만드십시오. 독자는 잘못된 점수보다 각주에 훨씬 더 관대합니다.

5개의 항목이 정상적으로 보이면 배치로 이동하십시오. 필드 참조는 열을 나열하며, 비용 예시는 실행 비용을 보여줍니다.

작은 Python 버전

requests 패키지가 필요합니다. 이는 작업의 형태를 위한 스케치입니다: 먼저 실제 응답을 출력한 후, 필요한 필드를 자신의 열로 매핑합니다.

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)
블록을 그룹으로 분류하는 종이 기어 및 컨베이어 벨트

Google Sheets 또는 n8n에서 수행하기

Sheets는 UrlFetchApp으로 Apps Script에서 URL을 호출할 수 있으며, n8n에는 HTTP Request 노드가 있습니다. 둘 다 위의 스크립트와 동일한 작업을 수행합니다.

n8n에서는 먼저 일정 트리거를 배치한 후 시트나 테이블을 읽는 노드, 2,000개 그룹을 생성하는 항목 분할 단계, HTTP Request를 배치합니다. 마지막으로 평가와 날짜를 다시 작성하는 노드를 추가합니다.

키를 워크플로우 텍스트가 아닌 플랫폼의 자격 증명 저장소에 보관하십시오. 워크플로는 공유, 복사, 포럼에 붙여넣기 될 수 있으며, 함께 붙여넣은 키는 지출된 돈입니다.

코드리스 또는 스크립트: 팀에 맞는 형태 선택

두 경로 모두 동일한 호출을 수행합니다. 차이는 1년 후 흐름을 유지 관리할 사람이 누구이며, 그 사람에게 설명하기 얼마나 쉬운지에 있습니다.

몇 달간의 휴식 후에도仍可 읽을 수 있는 형태를 선택하십시오. 아무도 이해하지 못하는 복잡한 흐름은 누구나 따라할 수 있는 평범한 스크립트보다 나쁩니다.

다음 편집자에게 설명할 수 있는 흐름

라벨이 붙은 4개의 노드로 구성된 짧은 n8n 흐름은 인계하기 쉽습니다: 트리거, 읽기, 배치, 다시 쓰기. 각 노드를 기본 레이블이 아닌 수행하는 작업 이름으로 명명하십시오.

경우의 수를 위해 많은 분기를 쌓지 마십시오. 각 분기는 도메인이 잘못된 점수를 받을 수 있는 또 다른 장소입니다.

스크립트가 필요한 경우

입력이 CSV 파일 폴더이거나 작업이 흐름에서 어색하게 처리하는 논리가 필요한 경우 스크립트가 적합합니다. 위의 스케치는 이러한 경우에 적합합니다.

스크립트를 버전 관리에 넣고 키를 환경 변수에 보관하십시오. 같은 폴더의 파일에서 키를 읽는 스크립트는 공유 드라이브에서 누출될 준비가 된 것입니다.

어려운 부분을 건너뛰는 튜토리얼

많은 비디오는 세 행으로 첫 시도에서 작동하는 흐름을 보여줍니다. 실제 목록에는 빈칸, 중복 및 이상한 도메인이 있으며, 이러한 부분에서 흐름의 주의가 필요합니다.

먼저 자체 테스트 행 5개로 흐름을 구축하십시오. 튜토리얼이 이를 견디지 못한다면, 그 튜토리얼은 전체 작업이 아니었습니다.

흐름을 다른 사람에게 인계할 때 샘플로 테스트 행 5개를 포함하십시오. 다음 사람은 실제 데이터에 접근하기 전에 좋은 실행이 어떻게 보이는지 확인할 수 있습니다.

오류의 의미

API의 동작 및 동기화 작업이 수행해야 할 내용.
신호의미작업의 동작
HTTP 401누락되거나 잘못된 키중단, 사람에게 알림
HTTP 402크레딧 고갈중단, 기존 점수 유지, 충전
ok가 false호출이 성공하지 않음본문 로깅, 다음 실행에서 재시도
도메인에 대한 빈 결과인덱스에 없음셀을 비워두기
정원에서 구부러진 식물 줄기를 바로잡는 종이 정원사

실행 간 시트 정리

동기화 작업은 작성되는 시트만큼 좋습니다. 몇 가지 습관은 한 실행에서 다음 실행까지 축적되는 서서히 진행되는 손상을 방지합니다.

대부분의 문제는 무해한 편집에서 시작됩니다: 점수 위에 삽입된 열, 도메인을 조용히 변경한 복사된 행 등.

원본 응답을 별도의 탭에 보관

각 원본 응답을 별도의 탭에 저장하거나, 한 줄에 하나의 응답이 있는 JSON Lines로 저장합니다. 이 사본은 두 번째 유료 호출 없이 표시된 열을 다시 빌드할 수 있게 합니다.

원본 탭은 6개월 후 편집자가 묻는 질문에 답합니다: 그 날짜에 API가 무엇을 반환했는가.

각 원본 탭에 배치 날짜를 명명하여 스크롤하여 되돌아볼 때 사본이 순서대로 정렬되도록 합니다.

헤더 행 잠금

헤더 행을 고정하고 점수 위에 열을 삽입하지 마십시오. 열 F를 가리키는 매핑은 삽입 후 잘못된 데이터를 읽으며, 오류 없이 그렇게 합니다.

매핑에서 열을 위치가 아닌 이름으로 명명하십시오. 이름은 재배열을 견디지만 위치는 그렇지 않습니다.

실행 전후 행 수 세기

실행 전과 후에 행 수를 로그에 기록하십시오. 두 숫자는 추가하려는 행 수만큼만 달라야 하며, 간격은 무언가 잘못되었음을 나타냅니다.

매월 점수 열로 시트를 정렬하고 위쪽과 아래쪽 행을 확인하십시오. 이상한 값은 일반적으로 잘못된 목록에 매핑된 도메인을 가리킵니다.

먼저 사본으로 테스트

시트를 복제하고 실제 시트에 접근하기 전에 사본에 대해 흐름을 실행하십시오. 사본은 만드는 데 비용이 들지 않습니다.

실제 점수 위에 작성된 잘못된 매핑은 이전 값이 사라졌기 때문에 되돌리기 어렵습니다. 첫 번째 정직한 실행이 예상한 결과와 일치할 때까지 사본을 유지하십시오.

두 번의 연속적인 깨끗한 실행이 사본과 일치한 후에만 사본을 삭제하십시오. 한 번의 깨끗한 실행보다 두 번이 더 나은 신호입니다.

첫 번째 실제 실행 전

  • 키는 워크플로우 텍스트가 아닌 플랫폼의 자격 증명 저장소 또는 환경 변수에 있습니다.
  • 하나의 무료 overview 호출은 알고 있는 목록에 대해 수동으로 확인되었습니다.
  • 시트 사본에 대해 실행이 테스트되었으며, 사본은 예상한 결과와 일치했습니다.
  • 작업은 접촉하는 모든 점수 옆에 날짜를 작성합니다.
  • 상태 401 및 402는 작업을 중단하고 사람에게 메시지를 보냅니다.

동기화 질문

작업이 중간에 충돌할 경우 어떻게 이중 지불을 피합니까?

각 점수 옆에 날짜를 작성하고, 다음 실행은 이미 이번 달에 스탬프가 찍힌 행을 건너뛰게 합니다. 2,000개의 청크는 충돌이 최대 하나의 크레딧 비용만 발생시킨다는 것을 의미하므로 위험은 매우 작지만, 이 습관은 시트를 깔끔하게 유지합니다.

비프로그래머가 이를 설정할 수 있습니까?

대부분 가능합니다. n8n 또는 Make의 HTTP Request 노드는 URL, 키 및 목록만 필요합니다. 응답을 열로 변환하는 부분이 까다로우므로, 매핑을 구축하기 전에 테스트 호출을 한 번 수행하고 JSON을 확인하십시오.