Kako smo izgradili
Temeljno.
Jednočlana, AI-potpomognuta cijev koja je pročitala ~31.840 članaka s ~27 hrvatskih portala, grupirala ih u događaje i napisala 4.353 vlastite priče — utemeljene, s izvorima, svaka s originalnom ilustracijom. Ukupan trošak: oko 900 € i četiri sata rada.
Ideja u jednoj rečenici
Grupiraj isti događaj s više portala, pa napiši jednu neutralnu priču koja koristi samo te izvore — i svaku rečenicu pripiši portalima koji su je objavili.
Kad dva portala neovisno izvijeste istu činjenicu, to je signal pouzdanosti. Temeljno tu unakrsnu provjeru pretvara u proizvod. Cilj nikada nije bio „AI zamjenjuje novinare” — nego pokazati da mala, disciplinirana cijev može odraditi mehanički dio posla redakcije ako gradiš za pouzdanost, a ne za količinu.
Tehnologija
Bez reda poruka, bez vektorske baze, bez Kubernetesa. Nekoliko Python modula i jedna SQLite datoteka.
Proces
Osam malih koraka, svaki s jednim zadatkom. Cijeli proces radi svakih ~30 minuta.
Koraci 5 i 6 — jezgra „napiši pa provjeri” — nose pouzdanost. Ostalo prikuplja i prikazuje.
Grupiranje — motor unakrsne provjere
Grupiraj članke o istom događaju. Namjerno bez vanjskih biblioteka: mali TF-IDF vektorizator nad naslovom + sažetkom (naslov ×2, izbačene česte riječi) plus pohlepno pridruživanje najbližem centroidu po kosinusnoj sličnosti. Bez numpyja — milisekunde za nekoliko stotina članaka.
Rangiranje — važnost bez analitike
Nemamo podatke o posjećenosti tuđih portala, pa je važnost procijenjena preko pokrivenosti. Širina pokrivenosti prevladava jer je slaganje više portala signal pouzdanosti.
Uz to, kazna za predugo zadržavanje na vrhu: kad priča drži vodeće mjesto nekoliko sati, rezultat joj opada — pa dugotrajna priča prepušta vrh stvarno novim vijestima umjesto da tabori.
Sinteza — motor pouzdanosti
Većina proizvoda bi samo „sažela”. Vrijednost Temeljna je u potpunosti u ograničenjima oko pisanja. Prva uputa modelu: koristi isključivo priložene izvorne tekstove — bez znanja izvana, bez izmišljenih činjenica, bez nagađanja. Svaka tvrdnja mora biti pripisiva imenovanom portalu.
Pripisivanje kao sintaksa
Model nikad ne piše „prema Indexu”. Svaku činjeničnu rečenicu završi strojno provjerljivom oznakom portala koji tu tvrdnju donose. Tekst se čita glatko; podrijetlo je strukturirano ispod.
Dron je iz Rusije ušao u zračni prostor Latvije.Index.hrJutarnji listN1
Model to napiše kao …zračni prostor Latvije.[[Index.hr|Jutarnji list|N1]] — sučelje te oznake prikazuje kao natpise s izvorima.
Drugi model provjerava prvog
Svaku napisanu priču provjerava jeftini prolaz Haikua: dobije iste izvore i jedno pitanje — je li svaka tvrdnja, i svaka oznaka izvora, doista potkrijepljena? Ta petlja „napiši pa provjeri” najvažnija je projektna odluka u cijelom sustavu.
Još tri važna pravila
Naslov se piše zadnji, iz našeg gotovog članka — nikad prepisan iz naslova nekog portala. Izvori koji se ne slažu idu u zasebno polje „sporno”, opisano neutralno. A slabo pokrivene priče ostaju najave — ako događaj nosi samo jedan ili dva portala, sažetak je kratak i upućuje na originale umjesto da ih zamijeni. Bez ikakvog API ključa sinteza se vraća na označeni ekstraktivni sažetak stvarnih rečenica iz izvora — stranica nikad ne izmišlja da popuni prostor.
Ilustracija — vlastita, nikad tuđe fotografije
Za agregator, prikazivanje tuđih fotografija pravno je i vjerodostojnošću najslabija točka. Odgovor Temeljna: nikad ne objavljuje tuđe fotografije. Dio priča dobije originalnu ilustraciju u dosljednom stilu kuće — trobojni sitotisak — koju generira Gemini.
Izvorne fotografije modelu se šalju samo kao naznaka sličnosti — „tko i što”, nikad kompozicija, poza ni boje; za imenovanu osobu traži se novi portret. Tvrdo pravilo bez teksta (navedeno prvo i zadnje u uputi) uklanja izobličena slova koja odaju da je nešto AI. O tome hoće li priča dobiti ilustraciju odlučuje hash njezina URL-sluga, pa se odluka nikad ne mijenja. Bez integracije za slike ili u slučaju greške → priča se jednostavno objavi bez ilustracije.
Objava — zbrajanje i starenje
Umjesto da svaki ciklus iznova gradi naslovnicu, svaki prolaz dodaje nekoliko novih priča, a postojeće ostaju na svojim stabilnim URL-ovima i tonu kako stižu svježije, šire pokrivene priče. Priča koja se razvija prepoznaje se između osvježavanja po skupu URL-ova članaka iza nje (Jaccardovo preklapanje ≥ 0,25 = „ista priča”), pa zadržava svoj URL i skuplja izvore umjesto da stvara duplikate. Samo priče koje potvrde 2+ različita portala dolaze na naslovnicu.
Zaštitne ograde
Dijelovi koji od ovoga čine odgovoran alat, a ne tek scraper — i dijelovi vrijedni kopiranja.
Koliko je koštalo
Plus ~4 sata ljudskog rada. Neprekidan rad (5–10 tisuća članaka mjesečno) stajao bi ~1.500 € mjesečno — a uz predmemoriju, grupiranje i manji model na jeftinim koracima, bliže 150 €. Poluga troška je disciplina, ne potrošnja: puni tekst samo za vodeće priče, sinteza samo za stvarno nove, ilustracije uzorkovane i idempotentne, upute predmemorirane kroz cijelu seriju.
Napravi ga sam
- Odaberi feedove — popis RSS izvora za svoju regiju.
- Grupiraj — TF-IDF nad naslovom+sažetkom, pohlepno najbliži centroid, kosinus ≈ 0,2.
- Rangiraj — širina po različitim portalima (dominira) × količina × svježina, plus pad za zadržavanje.
- Dohvati puni tekst samo za vodeće skupine, iza SSRF zaštite.
- Sintetiziraj uz ograničenja — samo izvori, pripisivanje po rečenici, strukturirani JSON, naslov zadnji.
- Dodaj jeftinu provjeru — to je ono što „AI sažetke” pretvara u nešto obranjivo.
- Ilustriraj vlastito — ili ne prikazuj ništa. Ne objavljuj tuđe fotografije.
- Objavljuj inkrementalno — stabilni URL-ovi i prag od 2 portala, na rasporedu.
Počni s 1–3 (to je već upotrebljiva ploča „koje su priče danas velike”), zatim dodaj 5–6 (motor pouzdanosti), pa 7 (uglađivanje).
Pouka
Zanimljivo nije to što AI zna pisati — nego to što je vrijednost gotovo u cijelosti bila u ograničenjima: samo izvori, izvor uz svaku rečenicu, provjera drugim modelom, vlastite ilustracije, unakrsna provjera prije objave.
Modeli su roba široke potrošnje. Gradi skeptika, ne samo pisca.
Prijavi se na besplatne AI radionice →← Natrag na Temeljno postmortem