jsonscraper
Markkinat
Takaisin lehteen

Muunna IG-profiilit päivittäiseksi muutosseurannaksi

Kerää julkisten profiilien mittareita aikataulun mukaan, tallenna tilannekuvat ja tunnista muutokset keksimättä mittareita.

Toimituksellinen linjaus Ilmoita virheestä

Jos markkinoija tarkistaa käsin kymmeniä julkisia IG-profiileja, suurin ajanhukka ei ole sivujen avaaminen vaan vertailukelpoisen historian puuttuminen. Yksi tilannekuva kertoo seuraajamäärän tänään; kahdesta tilannekuvasta voidaan laskea muutos valitulla aikavälillä. Yksinkertaisen profiiliseurannan voi automatisoida tekemällä pyynnön, tallentamalla vain tarvittavat kentät ja muodostamalla muutostaulukon.

Alla on pieni toimiva Python-esimerkki: se hakee profiilitiedot käyttäjänimen perusteella IG Scraper API:sta ja kirjoittaa aikaleimatun JSONL-rivin. Tuloksena on pieni historiatietolähde, jonka voi liittää croniin, n8n:ään tai omaan tallennusjärjestelmään. Reitin ja parametrien virallinen kuvaus löytyy IG API -dokumentaatiosta.

Mihin päivittäinen tilannekuva vastaa?

Oletetaan, että tiimi seuraa brändien tai kumppanien julkisia tilejä ja haluaa havaita muutoksia seuraajamäärässä, julkaisujen määrässä tai vahvistustilassa. Profiilisivulla näkyvät nykyiset arvot, mutta sivu ei itsessään säilytä edellisen viikon tietoja. Siksi on ensin määritettävä tärkeät kentät ja tallennettava ne havaintopäivämäärän kanssa.

Artikkeli: Muunna IG-profiilit päivittäiseksi muutosseurannaksi
Yhteenveto: Käytännön opas julkisten IG-profiilien seurantaan: API-pyyntö, avaimen turvallinen säilytys, historiatietojen tallentaminen ja muutosten laskeminen ajojen välillä.
Kuvan rooli: kansikuva — keskeinen ajatus
Osio: Mihin päivittäinen tilannekuva vastaa?
Visuaalinen aihe: toimituksellinen kuva tulostetuista IG-profiilikorteista, jotka on esitetty abstrakteina värillisinä sosiaalisen median ruutuina päivättyjen paperisten tietotilannekuvien vieressä ja sm
Profiili näyttää nykyisen tilanteen; toistuvat päivätyt merkinnät muodostavat vertailtavan historian.© jsonscraper · luotu tekoälyllä

Reitti \/v1\/user\/by\/username vaatii username-parametrin. Vastauksessa on muun muassa kentät follower_count, following_count, media_count, is_verified, is_private ja biography. Nämä sopivat profiilin tilannekuvaan; ne eivät sisällä julkaisuhistoriaa eivätkä itsessään selitä mittarien muutosten syitä.

Skripti on tarkoituksella rajattu: se hakee määritetyn kenttäjoukon tietyllä hetkellä ja vertaa sitä aiempiin merkintöihin. Näin analyytikko näkee esimerkiksi, että seuraajamäärä muuttui tallennettujen päivämäärien välillä, ja voi siirtyä erilliseen jatkotarkasteluun automaattisen keruun sijaan.

Valmistele avain ja tililuettelo

Asenna pyyntökirjasto ja aseta API-avain ympäristömuuttujaan. Älä sijoita salaisuutta lähdetiedostoon, repositorioon tai ohjelman tulosteeseen. API käyttää license_key-pyyntöparametria; alla oleva kirjasto muodostaa kyselymerkkijonon automaattisesti.

python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="oma_avaimesi"

Profiililuettelo kannattaa tallentaa määritystiedostoon tai projektin muuttujaan. Ensimmäisellä ajokerralla riittää yksi käyttäjänimi, jolla voi tarkistaa vastauksen, käyttöoikeuden ja tallennuksen. Esimerkissä username-kenttä annetaan API-parametrina ja avain luetaan vain ympäristöstä.

Tee pyyntö ja tallenna tilannekuva Pythonilla

Skripti tarkistaa HTTP-vastauksen, API:n ulkoisen tilan ja ig-objektin olemassaolon. Sen jälkeen se tallentaa vain kentät, jotka ovat nimenomaisesti saatavilla. Jos jokin kenttä puuttuu, merkintään jää null: nollan asettaminen sekoittaisi tuntemattoman arvon todelliseen nollaan.

Artikkeli: Muunna IG-profiilit päivittäiseksi muutosseurannaksi
Yhteenveto: Käytännön opas julkisten IG-profiilien seurantaan: API-pyyntö, avaimen turvallinen säilytys, historiatietojen tallentaminen ja muutosten laskeminen ajojen välillä.
Kuvan rooli: havainnollistava lisäkuva 2 — eri näkökulma
Osio: Tee pyyntö ja tallenna tilannekuva Pythonilla
Visuaalinen aihe: selkeä venäjänkielinen infografiikka, jossa esitetään tietovirta: ajastettu Python-pyyntö IG-profiilin reitille, JSON-tiedosto
Kaavio esittää reitin profiilipyynnöstä kahden tallennetun havainnon vertailuun.© jsonscraper · luotu tekoälyllä
import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

API_URL = "https:\/\/ig.jsonscraper.com\/v1\/user\/by\/username"
LICENSE_KEY = os.environ["JSONSCRAPER_INSTAGRAM_LICENSE_KEY"]
USERNAME = "apple"  # korvaa käyttäjänimellä omasta luettelostasi
OUTPUT = Path("instagram-profile-snapshots.jsonl")

response = requests.get(
    API_URL,
    params={"username": USERNAME, "license_key": LICENSE_KEY},
    timeout=30,
)
response.raise_for_status()
payload = response.json()

if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
    raise RuntimeError("API palautti odottamattoman tilan tai rakenteen")

profile = payload["ig"]
record = {
    "observed_at": datetime.now(timezone.utc).isoformat(),
    "username": profile.get("username", USERNAME),
    "pk": profile.get("pk"),
    "follower_count": profile.get("follower_count"),
    "following_count": profile.get("following_count"),
    "media_count": profile.get("media_count"),
    "is_verified": profile.get("is_verified"),
    "is_private": profile.get("is_private"),
}

with OUTPUT.open("a", encoding="utf-8") as file:
    file.write(json.dumps(record, ensure_ascii=False) + "\n")

print("Tilannekuva tallennettu:", record["username"], record["observed_at"])

Koodiesimerkin kentät ja rakenne vastaavat tämän reitin profiilitietoja. Onnistunut pyyntö palauttaa pyynnönhetkisen havainnon; muutosten analysointia varten skripti on ajettava uudelleen ja jokainen tilannekuva tallennettava. IG Scraper API -sivulla näytetään peruspyyntö ja JSON-muotoinen esimerkkivastaus.

Laske tilannekuvien välinen muutos

JSONL-tiedostossa on yksi merkintä kullakin rivillä, joten sitä voi lukea Pythonin vakiomoduulilla. Seuraava katkelma valitsee profiilin kaksi viimeisintä merkintää ja laskee seuraajamäärän erotuksen. Tulos tulostetaan vain, jos molemmat merkinnät sisältävät numeerisen arvon.

import json
from pathlib import Path

rows = [
    json.loads(line)
    for line in Path("instagram-profile-snapshots.jsonl").read_text(encoding="utf-8").splitlines()
]

username = "apple"
profile_rows = [row for row in rows if row.get("username") == username]
profile_rows.sort(key=lambda row: row["observed_at"])

if len(profile_rows) >= 2:
    previous, current = profile_rows[-2:]
    old = previous.get("follower_count")
    new = current.get("follower_count")
    if isinstance(old, int) and isinstance(new, int):
        print({
            "username": username,
            "from": previous["observed_at"],
            "to": current["observed_at"],
            "follower_delta": new - old,
        })

Erotus koskee täsmälleen kahta valittua havaintoa. Jos ajoja jää väliin, niiden aikaväli pitenee; siksi raportissa on näytettävä molemmat päivämäärät eikä muutosta pidä automaattisesti kutsua päivän aikana tapahtuneeksi. Säännöllistä käyttöä varten ajoita suoritus cronilla tai pilvialustan ajastimella. n8n:ssä saman toimintaketjun voi rakentaa ajastin-, HTTP-pyyntö- ja tuloksen tietokantaan tai taulukkoon tallentavilla solmuilla; solmujen nimet ja tallennuksen kytkentä riippuvat asennuksestasi.

Laajenna seuranta useisiin profiileihin

Kun tilejä on useita, siirrä käyttäjänimet erilliseen tiedostoon ja käsittele niitä silmukassa. Tallenna kunkin pyynnön tila erikseen, jotta yhden profiilin virhe ei poista muiden onnistuneesti saatuja tietoja. Lisää aikakatkaisu, virheloki ja uusinta-ajo vain niille tileille, joiden pyynnöt epäonnistuivat.

Tietueen avaimena voi käyttää pk-arvoa, jos API palauttaa sen, ja tallentaa samalla käyttäjänimen luettavuuden parantamiseksi. Tunniste auttaa erottamaan profiilin raportin tekstimerkinnästä; jos arvoa ei ole, sitä ei pidä keksiä tai korvata toisella kentällä. Analytiikkaa varten kannattaa säilyttää alkuperäinen keruuaika UTC-aikavyöhykkeellä ja määritellä vertailujakso selvästi.

Jos tehtävään riittää tietojen noutaminen tietyllä tiheydellä, dokumentoidulla cache_timeout-parametrilla voi määrittää välimuistin keston sekunteina; IGin välimuisti on oletusarvoisesti pois käytöstä. Valitse kesto seurantavälin mukaan ja tallenna se keruuasetusten yhteyteen, jotta tuloksia tulkittaessa voidaan huomioida pyyntöparametrit.

Mitä lopputuloksena syntyy?

Muutaman ajokerran jälkeen sinulla on tiedosto, jossa on julkisten mittarien aikaleimatut tilannekuvat ja valittujen päivämäärien välinen yksinkertainen laskennallinen erotus. Tiedoston voi tuoda Google Sheetsiä, PostgreSQL:ää tai analytiikkajärjestelmää varten; erillinen käsittelykerros voi muodostaa ilmoituksen, kun muutos ylittää tiimin määrittelemän rajan. Raja on liiketoimintasääntösi, ei API:n sisäänrakennettu ominaisuus.

Profiilireitti palauttaa tilin kentät, joten uusien julkaisujen auditointiin tarvitaan niitä vastaava mediasisällön haku; media_count-arvosta ei voi päätellä julkaisujen sisältöä. IG API -dokumentaatiossa luetellaan erillinen julkaisujen hakureitti, jossa sivutettu haku käyttää user_id- ja end_cursor-parametreja. Käytä sitä, jos tehtävänä on tarkastella itse julkaisuja. Tässä kuvatun profiilimittarien historiataulukon tekemiseen riittää yksi pyyntö käyttäjää kohti ja tilannekuvien toistuva tallennus.

Aloita yhdestä profiilista ja parista ajokerrasta: varmista, että vastaustila on oikea, päivämäärät tallentuvat ja puuttuvat tiedot jäävät selvästi tuntemattomiksi. Lisää sen jälkeen tililuettelo ja ajastus. Näin saat toistettavan havainnon, jonka aikaväli ja alkuperäiset arvot ovat selkeitä ja jonka voi siirtää eteenpäin analytiikkaprosessiin.

Ihmiset

Tämän artikkelin luettelossa ei ole vielä ihmisiä.

Jatka lukemistaIG-sisällöntuottajien arviointi julkaisujen kehityksen perusteella: käytännön Python-putki
Lue seuraava artikkeli

Muuta lukemasi toimivaksi integraatioksi

Tutustu jsonscraperin sosiaalisen datan rajapintoihin, testaa pyyntöjä ja rakenna seuraava työnkulkusi.

Tutki API:t