Kampanya başlamadan önce brief’teki her IG hesabını profilin herkese açık verileriyle otomatik olarak karşılaştırabilirsiniz. Bu kontrol; kullanıcı adı uyuşmazlığını, gizli hesap durumunu, ad veya biyografi değişikliğini ve gönderi sayısının beklenen aralığın dışında olmasını ortaya çıkarır. Sonuç, pazarlama uzmanı için hazırlanmış bir kontrol tablosudur; içerik üreticisinin uygunluğuna ilişkin otomatik bir karar değildir.

Sorun: Brief, tablodan daha çabuk güncelliğini yitiriyor
Kampanya listesinde hesap adı, bağlantı, takipçi sayısı hedefi ve herkese açık profile ilişkin gereklilikler bulunabilir. Bu bilgiler kolayca birbirinden farklı hâle gelir: hesap kullanıcı adını değiştirir, profil gizliye alınır, brief’teki sayılar ise eski kalır. Tek bir profili elle kontrol etmek kolaydır; her kampanyadan önce hesap listesinin tamamı için bunu tekrarlamak ise kontrolü ve süreci yeniden üretmeyi zorlaştırır.
Yararlı bir yaklaşım, her satır için açık kurallar belirlemek, kontrol anında erişilebilen herkese açık alanları almak ve özgün değerlerle güncel değerleri yan yana kaydetmektir. Böylece “eşleşiyor” ifadesi yalnızca belirli bir alanın belirli bir kurala uyduğunu belirtir; hedef kitleye uygunluk veya içerik kalitesi kararını ise uzman verir.
Hangi veriler alınmalı?
IG API uç noktaları kılavuzunda, zorunlu username parametresini alan GET /v1/user/by/username uç noktası açıklanıyor. Doğrulanmış yanıtta profil verileri ig nesnesinde yer alıyor: kullanıcı adı, tam ad, biyografi, gizlilik ve doğrulama göstergeleri, gönderi sayısı, takipçi ve takip edilen sayıları. Bu alanlar, profilin erişilebilen anlık görüntüsünü tanımlar.
Ön kontrol için hesap adını, gizlilik durumunu ve sayısal eşikleri karşılaştırmak yeterlidir. Biyografi, operatörün incelemesi için gösterilebilir veya zorunlu bir terimin bulunması gibi basit bir kuralla kontrol edilebilir. Bu tür bir metin filtresi dizgede eşleşme bulur; ancak tek başına anlamı değerlendirmez veya sözleşme koşullarının yerine getirildiğini doğrulamaz.
İsteği Python’a nasıl dahil edebilirsiniz?
Önce lisans anahtarını JSONSCRAPER_INSTAGRAM_LICENSE_KEY ortam değişkenine kaydedin. Örnek, doğrulanmış temel adresi, uç noktayı, username parametresini ve license_key anahtar adını kullanıyor. CSV dosyasında username,min_followers,max_followers,require_public alanları bulunuyor; betik her hesap için yanıtı kurallarla karşılaştırıp incelenmesi gereken satırları işaretliyor.
import csv
import os
import sys
import requests
BASE_URL = "https://ig.jsonscraper.com"
API_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not API_KEY:
raise SystemExit("Set JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
# brief.csv: username,min_followers,max_followers,require_public
with open("brief.csv", newline="", encoding="utf-8") as source:
brief = list(csv.DictReader(source))
results = []
for row in brief:
username = row.get("username", "").strip()
minimum_text = row.get("min_followers", "").strip()
if not username or not minimum_text:
results.append({
"requested_username": username,
"needs_review": True,
"error": "Missing username or min_followers",
})
continue
try:
response = requests.get(
f"{BASE_URL}/v1/user/by/username",
params={"username": username, "license_key": API_KEY},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
raise ValueError("Unexpected API response")
profile = payload["ig"]
followers = profile.get("follower_count")
minimum = int(minimum_text)
maximum_text = row.get("max_followers", "").strip()
maximum = int(maximum_text) if maximum_text else None
public_required = row.get("require_public", "").strip().lower() == "true"
checks = {
"username_matches": (
isinstance(profile.get("username"), str)
and profile["username"].lower() == username.lstrip("@").lower()
),
"followers_in_range": (
isinstance(followers, int)
and followers >= minimum
and (maximum is None or followers
Çalıştırmak için: python check_profiles.py. requests kitaplığını yükleyin, çalıştırma ortamında ortam değişkenini ayarlayın ve brief.csv dosyasını betiğin yanına koyun. Anahtarı kaynak koda veya sonuç CSV’sine yazmayın. Betik listeyi sırayla işler; bu yöntem küçük hesap kümelerini kontrol etmek ve hata ayıklamak için uygundur.
Eksik veriler neden görünür kalmalı?
Kontrol kurallarında sıfır değer ile mevcut olmayan alanı birbirinden ayırmak önemlidir. Örnekte takipçi sayısı, yalnızca sayısal bir alan mevcutsa uygun kabul edilir; sayaç yoksa koşul doğrulanmış sayılmaz ve kayıt elle incelemeye gönderilir. Boş min_followers eşiği de otomatik olarak sıfıra çevrilmek yerine giriş verisi hatası olarak işaretlenir.
Yanıt kontrolünü iş akışının bir parçası olarak kaydetmek gerekir. Betik önce dış durumun ok değerine eşit olduğundan emin olur, ardından ig nesnesinin varlığını kontrol eder. HTTP hatası, beklenmeyen JSON veya geçersiz bir kural; URL’de anahtarın açığa çıkmasına yol açabilecek istisna metni olmadan rapora eklenir. Böylece operatör, gizli bilgiyi ifşa etmeden istek hatasını profil uyuşmazlığından ayırt edebilir.
Sonucu yorumlama ve kontrolü otomatikleştirme
profile_check.csv dosyasında özgün kullanıcı adı, döndürülen ad, mevcut herkese açık alanlar, her koşulun sonucu ve genel needs_review bayrağı bulunur. Ekip bu bayrağa göre satırları filtreleyebilir; geliştirici ise raporu depolayabilir veya ETL sürecinin bir sonraki aşamasına aktarabilir. Zamanlanmış çalıştırma için betiği bir zamanlayıcıyla başlatın ve kampanya anlık görüntülerini karşılaştırabilmek üzere çalıştırma tarihini ayrı kaydedin.

Bir kural değiştiğinde onu koda sabitlemek yerine brief’te saklayın. Böylece eşikleri doğrulamak mümkün olur: her satırda beklenen takipçi aralığı veya herkese açık olma koşulu görülebilir. Biyografi için belirli bir metnin varlığını kontrol eden bir kural eklenebilir; ancak birebir eşleşme, uzmanın içerik değerlendirmesinin yerini tutmaz.
IG Scraper API sayfasında temel adres, istek örneği ve Postman bağlantısı yer alıyor. Yukarıdaki senaryo yalnızca kullanıcı adına göre profil arama işlemini kullanır ve bu isteğin gönderileri döndürdüğünü varsaymaz.
Pratik sonuç, tekrarlanabilir bir ön kontroldür: tüm listeyi elle incelemek yerine ekip, brief’teki belirli alanlarla ilişkilendirilmiş eşleşmeleri ve istisnaları içeren bir liste alır. Bu, kampanya öncesi kontrolü hızlandırırken kampanyaya uygunluk kararını sorumlu uzmana bırakır.