Zespół marketingowy może widzieć posty konkurencji w aktualnościach, ale ręczne przeglądanie nie daje dobrej odpowiedzi na konkretne pytanie: które formaty i tematy regularnie zdobywają reakcje, a które były widoczne tylko raz? Rozwiązaniem jest codzienne zapisywanie danych publicznych postów i porównywanie ich w czasie, według formatu oraz dostępnych liczników.

Poniżej przedstawiamy podstawowy potok w Pythonie i IG Scraper API. Pobiera on posty wybranego konta, zapisuje odpowiedzi w formacie JSONL i tworzy podsumowanie nowych materiałów. Wskaźniki reakcji w takim raporcie odzwierciedlają wartości zwrócone przez API w momencie zbierania danych; migawki z różnych dni pozwalają osobno analizować ich zmiany.
Najpierw określ, co chcesz porównywać
W przypadku niewielkiej próby konkurencji wystarczy prowadzić listę publicznych kont i zbierać ich posty według jednego harmonogramu. Zacznij od pytań, na które dane mogą odpowiedzieć: jak często publikowane są treści, które posty należą do Reels lub innych formatów, jakie tematy się powtarzają oraz jak zmieniają się dostępne liczniki polubień i komentarzy.
W pamięci masowej rozdziel dwa pojęcia: post i jego migawkę. Identyfikuj post za pomocą trwałego ID, jeśli znajduje się ono w odpowiedzi; każdy kolejny przebieg zapisuj jako osobny rekord wraz z czasem pobrania. Dzięki temu zobaczysz, jak zmieniały się dostępne liczniki, zamiast zastępować wczorajszą wartość dzisiejszą.
Podłącz udokumentowaną ścieżkę
Dokumentacja jsonscraper podaje adres https://ig.jsonscraper.com i ścieżkę GET /v1/user/by/username dla podstawowego zapytania. Do pobierania postów mapa API wymienia również GET /v1/user/medias/chunk. Dokładny zestaw parametrów i pól odpowiedzi sprawdź w powiązanej z produktem kolekcji Postman: nie uzależniaj przetwarzania od domniemanej struktury, dopóki nie sprawdzisz rzeczywistej odpowiedzi dla swojego zapytania.
Do wstępnego sprawdzenia użyj udokumentowanego przykładu zapytania o profil; klucz przekaż przez zmienną środowiskową, zamiast wpisywać go w kodzie źródłowym:
curl -G "https://ig.jsonscraper.com/v1/user/by/username" \
--data-urlencode "username=apple" \
--data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
--data-urlencode "cache_timeout=60"
Przykład na stronie produktu pokazuje parametry username, license_key i cache_timeout dla ścieżki profilu. Stosuj ten parametr w innych ścieżkach tylko wtedy, gdy jest dla nich wymieniony w dokumentacji. W przypadku zapytania o posty pobierz aktualne nazwy parametrów ze specyfikacji tej ścieżki.
Zapisuj odpowiedzi jako migawki czasowe
Poniższy skrypt to szablon do uruchomienia w środowisku produkcyjnym: URL i parametry ścieżki postów pozostawiono w konfiguracji, aby można je było uzupełnić ściśle według dokumentacji Postman. Obsługa zapisuje źródłowy JSON i czas pobrania; normalizację pól dodaj po sprawdzeniu rzeczywistej odpowiedzi.
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
BASE_URL = "https://ig.jsonscraper.com"
USERNAME = os.environ["IG_USERNAME"]
LICENSE_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
OUTPUT = Path("instagram_snapshots.jsonl")
# Uzupełnij endpoint i parametry na podstawie dokumentacji ścieżki
# GET /v1/user/medias/chunk w kolekcji Postman.
MEDIA_PATH = os.environ["IG_MEDIA_PATH"]
MEDIA_PARAMS = json.loads(os.environ["IG_MEDIA_PARAMS_JSON"])
params = {
**MEDIA_PARAMS,
"username": USERNAME,
"license_key": LICENSE_KEY,
}
response = requests.get(
f"{BASE_URL}{MEDIA_PATH}", params=params, timeout=30
)
response.raise_for_status()
payload = response.json()
record = {
"collected_at": datetime.now(timezone.utc).isoformat(),
"username": USERNAME,
"response": payload,
}
with OUTPUT.open("a", encoding="utf-8") as file:
file.write(json.dumps(record, ensure_ascii=False) + "\n")
Celowo nie ma tu zmyślonych parametrów paginacji ani nazw pól: należy je skopiować z konkretnej specyfikacji i zweryfikować na odpowiedzi API. Zapytania z limitem czasu i raise_for_status() pomagają wykryć błąd sieci przed zapisaniem wyniku jako zwykłych danych. Do automatycznego uruchamiania dodaj walidację JSON i dziennik błędów.
Dodaj harmonogram i metryki
Uruchamiaj zbieranie danych raz dziennie za pomocą crona lub harmonogramu używanego narzędzia automatyzacji. W przypadku kilku kont przejdź po liście konfiguracyjnej, zapisz osobną migawkę dla każdego i przewidź ponowienie po tymczasowym błędzie. Klucz przechowuj w zmiennej środowiskowej lub magazynie sekretów; strona API osobno zaleca, by nie osadzać go w kodzie klienta.
Po sprawdzeniu odpowiedzi normalizuj rekordy do tabeli z polami takimi jak username, media_id, collected_at, typ treści i dostępne liczniki. Nie usuwaj źródłowego JSON: przyda się, jeśli zmieni się format odpowiedzi lub trzeba będzie zweryfikować obliczenia.
W warstwie analitycznej obliczaj liczbę nowych postów w danym okresie, medianę dostępnych reakcji według formatu oraz zmianę licznika tego samego postu między migawkami. Mediana ogranicza wpływ pojedynczego viralowego posta na podsumowanie. Porównuj konta w identycznych przedziałach czasu i pokazuj wielkość próby obok wartości zagregowanej.
Co otrzymasz na wyjściu
Zespół otrzyma odtwarzalną tabelę postów i codzienne podsumowanie: częstotliwość publikowania treści, podział według formatów oraz dynamikę dostępnych reakcji. Te informacje pomagają formułować hipotezy dla własnego planu redakcyjnego, zamiast po prostu gromadzić zrzuty ekranu z aktualności.
Kolejnym krokiem jest wysyłanie znormalizowanych rekordów do Google Sheets, bazy danych lub systemu wizualizacji, a następnie tworzenie tekstowego podsumowania w osobnym etapie. Jeśli korzystasz z AI, przekazuj mu zagregowane dane i proś o opis zaobserwowanych zależności wraz ze wskazaniem okresu i liczby postów; decyzję o strategii pozostaw redaktorowi.
Zacznij od jednego konta i jednej ścieżki: sprawdź parametry i strukturę odpowiedzi w opisie IG Scraper API, a następnie utrwal tę konfigurację w harmonogramie. Dzięki temu monitorowanie konkurencji zmieni się z jednorazowego ręcznego przeglądania w przejrzysty potok z zachowywaną historią.