레시피
1분 안에 읽을 수 있는 주간 diff로 백링크 추적
가져오기, 저장, 비교, 게시. 전체 레시피는 하나의 Python 파일, 날짜별 JSON 폴더 및 cron 라인으로 구성됩니다.

처음부터 끝까지 레시피
- 1
키 생성
Google로 로그인하고 계정 페이지에서 키를 생성한 후
RANKIFT_KEY로 내보냅니다. 저장소에는 절대 커밋하지 마세요. - 2
액션 선택
대시보드에서 가장 필요한 도메인 수준의 diff를 위해
refdomains를 사용하세요. URL과 앵커 텍스트가 필요한 경우에만backlinks를 사용하세요. 비용은 동일하게 2 크레딧입니다. - 3
날짜별 스냅샷 저장
실행당 도메인당 하나의 파일, 날짜가 이름에 포함됩니다. 디스크는 저렴하며, 오래된 파일은 아직 질문하지 않은 질문에 답할 수 있게 해줍니다.
- 4
Diff 및 게시
두 최신 파일을 비교하고 삭제된 항목과 추가된 항목을 출력하며, 두 목록이 모두 비어 있으면 조용히 종료합니다.
- 5
일정 설정
월요일 아침 Cron. 실패 알림을 추가하세요. 조용한 모니터링은 아예 없는 것보다 나쁩니다.
diff.py
문서화된 매개변수인 action, q, per, page 및 key에 대해 확인되었습니다. 응답의 구조는 액션에 따라 다르므로, 신뢰하기 전에 실제 응답을 하나 출력하고 ROWS 및 ID를 일치시켜야 합니다.
import json, os, sys, glob, urllib.parse, urllib.request
KEY, SITE = os.environ['RANKIFT_KEY'], 'https://rankift.com/api.php'
ROWS, ID = 'rows', 'domain' # adjust after inspecting one response
def pull(domain):
out, page = [], 1
while True:
qs = urllib.parse.urlencode({'action': 'refdomains', 'q': domain,
'per': 1000, 'page': page, 'key': KEY})
with urllib.request.urlopen(f'{SITE}?{qs}') as r:
batch = json.load(r)[ROWS]
out += batch
if len(batch) < 1000 or page >= 5: # five pages = 5,000 rows
return out
page += 1
domain, date = sys.argv[1], sys.argv[2]
json.dump(pull(domain), open(f'snap/{domain}-{date}.json', 'w'))
files = sorted(glob.glob(f'snap/{domain}-*.json'))
if len(files) > 1:
old = {r[ID] for r in json.load(open(files[-2]))}
new = {r[ID] for r in json.load(open(files[-1]))}
lost, gained = sorted(old - new), sorted(new - old)
if lost or gained:
print(f'{domain}: -{len(lost)} +{len(gained)}')
print('lost:', lost[:25])대시보드보다 diff가 더 나은 이유
차트는 선이 움직였음을 보여줍니다. Diff는 어떤 도메인이 움직였는지 보여주며, 이는 행동할 수 있는 사항입니다.
Ahrefs 및 Semrush와 같은 도구는 자체 인터페이스에서 새 링크와 손실된 링크를 표시하며, 임시 작업에는 적합합니다. 문제는 50개 사이트와 1명의 분석가가 있을 때 시작됩니다. 월요일마다 각 프로젝트를 여는 의식은 아침 시간을 잡아먹습니다.
스크립트는 이러한 의식을 파일로 바꿉니다. 또한 날짜별 아카이브를 남겨두므로, 3월에 10월의 프로필이 어땠는지 vendor에 내역을 요청하지 않고도 답할 수 있습니다.
Cron 라인
서버 시간 기준 월요일 오전 07:00에 실행되며, 모든 출력을 이메일로 보내줍니다. 변경 사항이 없으면 스크립트가 아무것도 출력하지 않는 이유입니다.
0 7 * * 1 cd /srv/linkwatch && for d in example.com rival-one.com rival-two.com; do python3 diff.py $d $(date +%F); done | mail -s 'link diff' your-team-list비용
| 설정 | 주당 호출 횟수 | 주당 크레딧 | 연간 비용 |
|---|---|---|---|
| 1개 도메인, 1,000개 미만 참조 도메인 | 1 | 2 | 약 $0.01 |
| 1개 도메인, 4,000개 참조 도메인 | 4 | 8 | 약 $0.04 |
| 귀하의 사이트와 5개 경쟁사, 각 1페이지 | 6 | 12 | 약 $0.06 |
| 50개 클라이언트 사이트, 각 1페이지 | 50 | 100 | 약 $0.52 |

발생한 함정, 당신이 피하도록
스냅샷은 인덱스가 변경될 때만 변경됩니다. 우리는 약 월간으로 새로 고침하므로, 대부분의 주간 실행은 동일한 목록을 반환하고 아무것도 출력하지 않습니다. 이는 의도적인 것입니다. 조용함이 예상 결과입니다.
깊은 페이지네이션은 50,000행으로 제한되며, 스크립트의 5페이지 제한은 이를 훨씬 밑돕니다. 대규모 도메인은 다른 계획이 필요합니다. 액션이 허용하는 필드에 대해 sort 및 order=desc로 정렬하고, 행이 더 이상 흥미롭지 않을 때 조기에 중단하세요.
첫 번째 풀을 수동으로 실행하고 JSON을 읽으세요. 필드 이름을 확인하세요. 그런 다음 무료 overview 액션의 한 응답에서 참조 도메인 총수와 행 수를 비교하세요(해당 응답에 있는 경우).
HTTP 401 및 402를 명시적으로 처리하세요. 401은 잘못된 키를 의미하고 402는 잔액이 0에 도달했음을 의미합니다. 둘 다 실패 알림에 포함되어야 합니다. Diff가 발생하면 첫 시간 동안 lost links runbook을 따르세요.
구매한 링크 캠페인 측정, 스냅샷별로
기준선 없이 링크를 구매하는 것은 방어할 수 없는 숫자를 얻는 일반적인 방법입니다. 첫 번째 게시가 시작되기 전에 스냅샷을 찍고, 그 이후의 모든 스냅샷 옆에 보관하세요.
그런 다음 원시 개수가 아닌 참조 도메인을 비교하세요. 하나의 기부자가 여러 링크를 가질 수 있기 때문입니다. Diff의 각 새 행은 수동으로 열고 확인할 수 있는 하나의 사이트를 의미합니다.
한 달 동안 평평해 보이는 캠페인이 자동으로 실패하는 것은 아닙니다. 인덱스 새로 고침은 느리므로 diff는 라이브 페이지에서 발생한 일을 뒤따르며, 이 지연은 방법의 일부입니다.
구매한 백링크가 효과가 있었는지 어떻게 측정합니까?
첫 번째 게시 날짜부터 시작하여 그 이후에 나타나는 기부자 행을 찾으세요. 다음 두 스냅샷에 남아 있는 것만 세세요. 그런 다음 그 수를 게시 비용과 비교하고 결과를 날짜 옆에 기록하세요.
구매 전 스냅샷에는 무엇이 포함되어야 합니까?
모든 후속 실행과 동일한 파일 형식으로 저장된 전체 참조 도메인 목록입니다. 날짜와 도메인이 파일 이름에 포함되어야 합니다. 다른 형식의 기준선은 diff할 수 없으며, 이는 나중에 수선할 수 없는 유일한 실수입니다.

diff에서 시끄러운 주의 모습
수천 개의 새 행이 있는 주가 항상 위기는 아닙니다. 종종 스크래퍼입니다. 그들은 페이지를 복사하고, 복사본은 아무도 게시하지 않은 링크를 생성합니다. 귀하의 사이트에 대해 아무것도 가정하기 전에 기부자를 먼저 확인하세요.
읽기 전에 새 행을 기부자 품질로 정렬하세요. 목록의 대부분은 일반적으로 노이즈이며, 상위 행을 짧게 살펴보면 스파이크가 아침 시간을 할애할 가치가 있는지 알 수 있습니다.
행이 스크래퍼 페이지인 경우, 수를 기록하고 넘어갑니다. 돈 페이지로 연결된 실제 사이트인 경우 분류 단계를 따르세요.
왜 diff는 스팸에서의 이득을 보여주나요?
왜냐하면 diff는 사람이 선택한 것이 아니라 인덱스에 나타난 것을 보고하기 때문입니다. 인덱스가 수집한 스팸은 기부자 페이지를 열고 읽기 전까지 편집 링크와 동일해 보입니다.
비활성화 후보를 얼마나 자주 검토해야 하나요?
월간 검토가 일일 검토보다 인덱스 리듬에 더 적합합니다. 일일 검토는 주로 동일한 목록을 다시 보여주지만, 월간 검토는 각 후보가 다시 크롤링될 시간을 줍니다. spam links triage 페이지에 결정 단계가 있습니다.
첫 번째 diff를 신뢰하기 전에
- 첫 번째 풀은 적어도 한 페이지에 대해 행별로 수동으로 읽었습니다.
- 필드 이름은 스크립트 상단의 상수와 일치합니다.
- 401 및 402는 모두 조용하지 않고 크게 실패합니다.
- 스냅샷 폴더는 복원할 수 있는 어딘가에 백업 또는 동기화됩니다.
- 저자가 아닌 사람이 첫 번째 알림을 보고 메시지가 가치가 있다고 동의합니다.
스냅샷 아카이브를 1년 동안 유용하게 유지
변경되지 않은 것처럼 보이는 파일을 포함하여 모든 날짜별 파일을 보관하세요. 1년 치 주간 스냅샷은 거의 디스크 공간을 차지하지 않으며, 기부자가 언제 처음 나타났는지와 같은 아직 질문하지 않은 질문에 답합니다.
도메인, 날짜 및 액션으로 파일 이름을 일관되게 지정하세요. 혼합된 이름은 diff 스크립트가 잘못된 쌍을 선택하게 하며, 잘못된 쌍은 확신에 찬 잘못된 알림을 생성합니다.
공간이 중요한 경우 분기별로 오래된 파일을 압축하세요. 최신 12개는 압축 해제 상태로 유지하여 주간 작업이 아카이브를 기다리지 않도록 하세요.
기부자가 처음 나타난 스냅샷을 어떻게 찾나요?
이름으로 날짜별 파일을 정렬한 다음, 첫 번째_hit_이 있을 때까지 각 파일을 기부자 도메인으로 검색하세요. 짧은 루프는 몇 줄로 이를 수행하며, 결과는 처음부터 유지한 네이밍만큼만 좋습니다.
무엇을 삭제하고 무엇을 유지해야 하나요?
결정에 기반한 모든 스냅샷과 각 월의 첫 번째 및 마지막을 유지하세요. 아카이브가 확인된 후에만 나머지를 삭제하세요. 삭제된 파일은 나중에 질문에 답할 수 없습니다.
사람들이 이미 읽고 있는 곳에 diff 보내기
읽지 않는 폴더에 도착한 diff에는 가치가 없습니다. 공유가 개인보다 낫습니다. 팀이 이미 시청하는 채널에 결과를 게시하고, 메시지를 한눈에 행동할 수 있을 정도로 짧게 유지하세요.
좋은 메시지는 도메인, 손실 및 획득 행의 수 및 첫 번째 단계를 명시합니다. 전체 목록은 첨부 파일에 속하므로 제외합니다.
조용한 주에 침묵은 디자인의 일부입니다. 변경 사항이 없다면 아무도 변경 사항이 없음을 상기시킬 필요가 없습니다. 그렇게 유지하세요. 채널은 다음 실제 알림을 위해 읽을 수 있어야 합니다.
메시지에는 무엇이 포함되어야 하나요?
세 가지: 기부자 또는 경쟁사 이름, 두 개의 수 및 저장된 파일에 대한 링크입니다. 점수가 첨부된 경우, 새 행 중 최고의 Domain Rating을 추가하세요. 하나의 강력한 도메인은 10개의 약한 도메인보다 우선순위를 더 많이 바꿉니다.
누가 실패 알림을 받나요?
메시지만 읽는 사람이 아니라 작업을 수정할 수 있는 사람. 401은 새 키가 필요하고 402는 계정 페이지에서 충전이 필요합니다. 둘 다 다음 월요일을 기다려서는 해결되지 않습니다.
확장
알림에 기부자 URL과 앵커 텍스트가 필요한 경우 refdomains를 backlinks로 바꿉니다. 동일한 2 크레딧 비용을 염두에 두세요.
모든 새 도메인에 점수를 매기기 위해 bulk_dr를 추가하세요. 호출당 최대 2,000개 도메인까지 1 크레딧입니다. 그러면 메시지에서 "3개 신규, 최고 DR 72"라고 말할 수 있습니다.
Google Sheets의 경우, 동일한 쿼리 문자열이 UrlFetchApp을 사용하여 Apps Script에서 작동합니다. 그리고 경쟁자의 경우 competitor backlink alerts의 임계값을 사용하세요.