Resep
Lacak backlink dengan diff mingguan yang bisa Anda baca dalam satu menit
Ambil, simpan, bandingkan, kirim. Seluruh resepnya terdiri dari satu file Python, satu folder berisi JSON bertanggal, dan satu baris cron.

Resepnya, dari awal hingga akhir
- 1
Buat kuncinya
Masuk dengan Google, buat kunci di halaman akun, dan ekspor sebagai
RANKIFT_KEY. Jangan pernah mengomitmikannya ke repositori. - 2
Pilih aksinya
refdomainsuntuk diff tingkat domain, yang dibutuhkan sebagian besar notifikasi. Gunakanbacklinkshanya jika Anda membutuhkan URL dan anchor text, dengan biaya 2 kredit yang sama. - 3
Simpan snapshot bertanggal
Satu file per domain per eksekusi, dinamai sesuai tanggal. Disk itu murah, dan file lama memungkinkan Anda menjawab pertanyaan yang belum pernah ditanyakan orang.
- 4
Diff dan kirim
Bandingkan dua file terbaru, cetak apa yang hilang dan apa yang muncul, lalu keluar dengan tenang jika kedua daftar kosong.
- 5
Jadwalkan
Cron pada Senin pagi. Tambahkan notifikasi kegagalan, karena monitor yang diam lebih buruk daripada tidak ada sama sekali.
diff.py
Diperiksa terhadap parameter yang didokumentasikan: action, q, per, page, dan key. Bentuk respons berbeda tergantung aksi, jadi cetak satu respons nyata dan atur ROWS serta ID agar sesuai sebelum mempercayainya.
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])Mengapa diff lebih unggul daripada dashboard
Grafik memberi tahu Anda bahwa garisnya bergerak. Diff memberi tahu Anda domain mana yang bergerak, yang merupakan hal yang bisa Anda tindaklanjuti.
Alat seperti Ahrefs dan Semrush menampilkan tautan baru dan hilang di antarmuka mereka sendiri, dan itu cukup baik untuk pekerjaan ad hoc. Masalahnya muncul saat menangani lima puluh situs dan satu analis, ketika ritual Senin untuk membuka setiap proyek memakan waktu pagi.
Skrip mengubah ritual itu menjadi sebuah file. Skrip ini juga meninggalkan arsip bertanggal, sehingga pada bulan Maret Anda bisa menjawab bagaimana profilnya pada bulan Oktober tanpa harus meminta vendor untuk mengekspor data.
Baris cron
Berjalan pada pukul 07:00 waktu server setiap Senin dan mengirimkan hasil apa pun kepada Anda, itulah sebabnya skrip tidak mencetak apa pun jika tidak ada perubahan.
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-listBiayanya
| Penyiapan | Panggilan per minggu | Kredit per minggu | Per tahun |
|---|---|---|---|
| 1 domain, di bawah 1.000 domain pengarah | 1 | 2 | sekitar $0.01 |
| 1 domain, 4.000 domain pengarah | 4 | 8 | sekitar $0.04 |
| Situs Anda dan 5 pesaing, 1 halaman masing-masing | 6 | 12 | sekitar $0.06 |
| 50 situs klien, 1 halaman masing-masing | 50 | 100 | sekitar $0.52 |

Hal-hal yang perlu diwaspadai agar Anda tidak mengalaminya
Snapshot hanya berubah ketika indeks berubah. Kami menyegarkan sekitar sebulan sekali, sehingga sebagian besar eksekusi mingguan mengembalikan daftar yang identik dan tidak mencetak apa pun. Itu disengaja. Diam adalah hasil yang diharapkan.
Paginasi dalam dibatasi pada 50.000 baris, dan batas lima halaman dalam skrip menjaga Anda jauh di bawahnya. Domain besar membutuhkan rencana berbeda: urutkan dengan sort dan order=desc pada bidang yang diterima aksi, dan hentikan lebih awal begitu baris tidak lagi menarik.
Jalankan tarikan pertama secara manual dan baca JSON. Periksa nama bidang. Kemudian bandingkan jumlah baris dengan total domain pengarah dari satu respons aksi overview gratis, jika respons tersebut memuatnya.
Tangani HTTP 401 dan 402 secara eksplisit, karena 401 berarti kunci salah dan 402 berarti saldo mencapai nol. Keduanya harus masuk ke notifikasi kegagalan Anda. Ketika diff benar-benar terjadi, ikuti buku panduan tautan hilang selama satu jam pertama.
Mengukur kampanye tautan yang dibeli, satu per satu snapshot
Membeli tautan tanpa baseline adalah cara umum untuk berakhir dengan angka yang tidak bisa Anda pertahankan. Ambil snapshot sebelum penempatan pertama dimulai, dan simpan di samping setiap snapshot berikutnya.
Kemudian bandingkan domain pengarah, bukan jumlah mentah, karena satu donor dapat membawa banyak tautan. Setiap baris baru dalam diff adalah satu situs yang bisa Anda buka dan periksa secara manual.
Kampanye yang terlihat datar selama sebulan bukan otomatis kegagalan. Penyegaran indeks lambat, sehingga diff tertinggal dari apa pun yang terjadi pada halaman langsung, dan jeda itu adalah bagian dari metode.
Bagaimana cara mengukur apakah backlink yang dibeli berhasil?
Mulailah dari tanggal penempatan pertama dan cari baris donor yang muncul setelahnya. Hitung hanya yang tetap ada di dua snapshot berikutnya. Kemudian bandingkan jumlah tersebut dengan biaya penempatan, dan catat hasilnya di samping tanggal.
Apa yang harus ada dalam snapshot sebelum pembelian?
Daftar domain pengarah lengkap, disimpan dalam format file yang sama dengan setiap eksekusi berikutnya, dengan tanggal dan domain dalam nama file. Baseline dalam format berbeda tidak bisa di-diff, dan itu adalah satu kesalahan yang tidak bisa diperbaiki setelahnya.

Seperti apa minggu yang bising dalam diff
Minggu dengan ribuan baris baru belum selalu krisis. Seringkali itu adalah scraper. Mereka menyalin halaman, dan salinan menciptakan tautan yang tidak ditempatkan oleh siapa pun. Periksa donor terlebih dahulu sebelum Anda mengasumsikan apa pun tentang situs Anda sendiri.
Urutkan baris baru berdasarkan kualitas donor sebelum Anda membacanya. Sebagian besar daftar biasanya adalah noise, dan melihat sekilas baris teratas memberi tahu Anda apakah lonjakan tersebut layak menghabiskan sisa pagi Anda.
Jika barisnya adalah halaman scraper, catat jumlahnya dan lanjutkan. Jika itu adalah situs nyata dengan tautan ke halaman uang Anda, ikuti langkah-langkah triase.
Mengapa diff menunjukkan keuntungan dari spam?
Karena diff melaporkan apa yang muncul di indeks, bukan apa yang dipilih manusia. Spam yang telah diambil oleh indeks terlihat sama dengan tautan editorial hingga Anda membuka halaman donor dan membacanya.
Seberapa sering saya harus meninjau kandidat disavow?
Bulanan lebih sesuai dengan ritme indeks daripada harian. Tinjauan harian sebagian besar hanya menunjukkan daftar yang sama lagi, sementara tinjauan bulanan memberi setiap kandidat waktu untuk di-crawl ulang sebelum Anda menilainya. Halaman triase tautan spam memiliki langkah-langkah keputusan.
Sebelum mempercayai diff pertama
- Tarikan pertama dibaca secara manual, baris demi baris, setidaknya untuk satu halaman.
- Nama bidang sesuai dengan konstanta di bagian atas skrip.
- 401 dan 402 keduanya gagal secara keras, bukan diam-diam.
- Folder snapshot dicadangkan atau disinkronkan ke tempat yang bisa Anda pulihkan.
- Seseorang selain penulis telah melihat notifikasi pertama dan setuju bahwa itu layak menjadi pesan.
Jaga arsip snapshot tetap berguna selama satu tahun
Simpan setiap file bertanggal, termasuk yang terlihat tidak berubah. Satu tahun snapshot mingguan membutuhkan sedikit ruang disk, dan itu menjawab pertanyaan yang belum pernah ditanyakan orang, seperti kapan donor pertama kali muncul.
Beri nama file secara konsisten, dengan domain, tanggal, dan aksi. Nama yang bercampur membuat skrip diff memilih pasangan yang salah, dan pasangan yang salah menghasilkan notifikasi yang percaya diri namun salah.
Kompres file lama setiap kuartal jika ruang menjadi masalah. Simpan dua belas terbaru tanpa kompresi, agar pekerjaan mingguan tidak pernah menunggu arsip.
Bagaimana cara menemukan snapshot pertama di mana donor muncul?
Urutkan file bertanggal berdasarkan nama, lalu cari setiap file untuk domain donor hingga hit pertama ditemukan. Loop pendek melakukan ini dalam beberapa baris, dan hasilnya hanya sebaik penamaan yang Anda jaga sejak awal.
Apa yang harus saya hapus, dan apa yang harus saya simpan?
Simpan setiap snapshot yang menjadi dasar keputusan, plus yang pertama dan terakhir setiap bulan. Hapus sisanya hanya setelah arsip diperiksa, karena file yang dihapus tidak bisa menjawab pertanyaan nanti.
Kirim diff ke tempat orang sudah membacanya
Diff yang jatuh ke folder yang tidak terbaca tidak ada nilainya. Berbagi lebih baik daripada pribadi. Kirimkan hasilnya ke saluran yang sudah ditonton tim Anda, dan buat pesannya cukup singkat untuk ditindaklanjuti dalam satu pandangan.
Pesan yang baik menyebutkan domain, jumlah baris yang hilang dan didapat, dan langkah pertama. Pesan ini tidak menyertakan daftar lengkap, yang seharusnya ada di file yang dilampirkan.
Keheningan pada minggu yang sepi adalah bagian dari desain. Jika tidak ada yang berubah, tidak ada yang perlu diingatkan bahwa tidak ada yang berubah. Biarkan begitu. Saluran tetap dapat dibaca untuk notifikasi nyata berikutnya.
Apa yang harus dimuat pesannya?
Tiga hal: nama donor atau pesaing, dua jumlah, dan tautan ke file yang disimpan. Ketika skor dilampirkan, tambahkan Domain Rating terbaik di antara baris baru, karena satu domain kuat mengubah prioritas lebih dari sepuluh domain lemah.
Siapa yang menerima notifikasi kegagalan?
Seseorang yang bisa memperbaiki pekerjaan, bukan hanya seseorang yang membaca pesan. 401 membutuhkan kunci baru, dan 402 membutuhkan pengisian ulang dari halaman akun. Keduanya tidak diselesaikan dengan menunggu Senin berikutnya.
Memperluasnya
Ganti refdomains dengan backlinks ketika notifikasi membutuhkan URL donor dan anchor. Ingat biaya dua kredit yang sama.
Tambahkan bulk_dr untuk memberi skor setiap domain baru, dengan satu kredit per panggilan hingga 2.000 domain. Kemudian pesan Anda bisa mengatakan "3 baru, DR terbaik 72" daripada daftar kosong.
Untuk Google Sheets, string kueri yang sama berfungsi di Apps Script dengan UrlFetchApp. Dan untuk pesaing, gunakan ambang batas dari notifikasi backlink kompetitor.