Plik produktowy do ChatGPT: jak go zrobić i wgrać
- XML nie przejdzie. System przyjmuje tekst rozdzielany tabulatorami, plik CSV, ich wersje spakowane gzipem albo JSON Lines.
- Wymaganych kolumn jest dziewięć, a dwie z nich nie mają odpowiednika w pliku dla Google.
- Cena to jeden ciąg znaków z kwotą i kodem waluty, na przykład 349.99 PLN.
- Plik wgrany ręcznie wygasa po dwóch tygodniach. Do stałej kampanii wybierz adres HTTPS albo połączenie serwerowe.

- Czym ten plik różni się od feedu dla Google i Ceneo
- Dziewięć kolumn, które muszą być
- Jak zapisywać wartości, żeby przeszły
- Trzy sposoby przygotowania pliku
- Sprawdź plik, zanim go wgrasz
- Trzy drogi wgrania i konfiguracja połączenia
- Co dzieje się z plikiem po wysłaniu
- Jak emedia może w tym pomóc?
- Podsumowanie
- Przeczytaj także
- Najczęstsze pytania
Reklamy produktowe w ChatGPT powstają z pliku, który wysyłasz do OpenAI. Ten plik nie jest tym samym plikiem, co feed dla Google Merchant Center ani dla Ceneo, i to jest najczęstsza przyczyna zablokowanego wdrożenia. Poniżej jest cała droga: co ma być w środku, jak go zbudować, jak sprawdzić przed wysłaniem i jak wgrać, żeby nie wygasł po dwóch tygodniach.
Wszystko poniżej pochodzi ze specyfikacji OpenAI i z pliku, który utrzymujemy dla własnego sklepu. Jeśli szukasz konfiguracji samej kampanii, jest osobno: kampania z katalogu produktów krok po kroku.
Czym ten plik różni się od feedu dla Google i Ceneo?
Dokumentacja OpenAI mówi, że obsługiwane są feedy zgodne z Google, i to zdanie wprowadza w błąd niejedno wdrożenie. Zgodność dotyczy nazw pól, nie formatu pliku. Feed z Merchant Center to najczęściej XML, a XML jest tu wprost wykluczony, razem z RSS, Atomem i arkuszami kalkulacyjnymi. To samo dotyczy pliku dla Ceneo, który też jest XML-em o własnej strukturze.
Dopuszczone są cztery postacie pliku:
- Tekst rozdzielany tabulatorami z rozszerzeniem
.tsvalbo.txt. To najwygodniejszy wybór, bo tabulator prawie nie występuje w opisach produktów. - Plik CSV, czyli rozdzielany przecinkami. Wymaga cudzysłowów wokół komórek zawierających przecinki, cudzysłowy albo znaki końca linii.
- Wersje spakowane gzipem:
.tsv.gz,.csv.gz,.txt.gz. Przy dużych katalogach oszczędzają transfer. - JSON Lines, czyli jeden obiekt JSON w każdej linii. Wygodne, gdy plik powstaje z kodu.
Nazwy kolumn piszesz małymi literami z podkreśleniami. Przedrostek g: znany z Merchant Center jest zakazany, a plik ma dokładnie jeden wiersz nagłówka i jeden produkt albo wariant w każdym kolejnym wierszu.
Dziewięć kolumn, które muszą być

Każdy wiersz potrzebuje dziewięciu wypełnionych pól. Puste pole wymagane oznacza odrzucenie tej pozycji, a reszta katalogu idzie dalej, więc łatwo tego nie zauważyć.
item_id: stały numer produktu, niepowtarzalny w obrębie pliku. Po nim system rozpoznaje pozycję między kolejnymi wgraniami, więc nigdy nie przypisuj go innemu towarowi.title: nazwa produktu razem z wariantem, jeśli wariant ma znaczenie. Trzymaj się do 150 znaków.description: rzeczowy opis pozycji, zwykłym tekstem, do 5000 znaków.url: adres karty produktu w sklepie.brand: marka. Pole wymagane, a wpisy zastępcze w rodzaju brak są niedopuszczalne.seller_name: nazwa sprzedawcy. W pliku dla Google takiego pola nie ma, tutaj musi być w każdym wierszu.image_url: adres zdjęcia produktu.availability:in_stock,out_of_stock,pre_orderalbobackorder.price: kwota i waluta razem, o czym niżej.
Do reklam dochodzi jeszcze jedno pole: is_ads_eligible ustawione na true dla pozycji, które mają być przetwarzane. Katalogi zakładane w Menedżerze reklam dopuszczają produkty domyślnie, więc bez tej kolumny też zadziała, ale przy katalogu zakładanym inaczej decyduje ona o wszystkim. Dokumentacja ostrzega osobno, żeby nie mylić jej z is_ads_enabled, bo tej nazwy system nie czyta.
Zrobimy ten plik za Ciebie
Przygotujemy katalog w formacie akceptowanym przez OpenAI, razem z automatycznym odświeżaniem i kontrolą pliku przed każdym wysłaniem.
Jak zapisywać wartości, żeby przeszły?
Format kolumn to jedno, zapis wartości to drugie. Tu przewraca się najwięcej pojedynczych pozycji.
- Cena to jeden ciąg znaków: kwota z dwoma miejscami po przecinku, spacja, trzyliterowy kod waluty. Zapis
349.99 PLNjest poprawny, a osobna kolumna z walutą nie istnieje. Kwoty i tak są zaokrąglane do dwóch miejsc, więc podawaj je od razu w tej precyzji. - Kodowanie UTF-8, bez wyjątków. Polskie znaki w tytułach i opisach nie wymagają niczego więcej.
- Adresy absolutne, najlepiej po HTTPS, i publicznie dostępne. Adres produktu ani zdjęcia nie może wymagać logowania.
- Identyfikatory trzymaj jako tekst, żeby nie zgubić zer wiodących. Arkusz kalkulacyjny potrafi z numeru 007123 zrobić 7123.
- Nie wpisuj wypełniaczy. Wartości w rodzaju null, unknown czy n/a są traktowane jako błąd, a nie jako brak danych. Pole opcjonalne po prostu zostaw puste.
- W pliku CSV cytuj komórki zawierające przecinek, cudzysłów albo złamanie linii, a każdy cudzysłów w środku podwajaj. Przy tabulatorach ten problem praktycznie znika.
Trzy sposoby przygotowania pliku
Ręcznie w arkuszu
Najprostsza droga przy małym i stabilnym asortymencie. Zakładasz arkusz z dziewięcioma kolumnami, wypełniasz wiersze i eksportujesz do CSV albo do tekstu z tabulatorami. Dwie rzeczy do pilnowania: ustaw kolumnę z numerem produktu jako tekst, zanim wkleisz dane, i sprawdź kodowanie przy eksporcie, bo część programów domyślnie zapisuje w innym niż UTF-8.
Ograniczenie tej metody jest oczywiste: przy każdej zmianie ceny albo stanu magazynowego robisz to od nowa, a pozycje wygasają po dwóch tygodniach. Do jednorazowego testu wystarczy, do stałej kampanii nie.
Generatorem po stronie sklepu
Docelowe rozwiązanie dla każdego sklepu, który już ma feed dla Google. Programista pisze skrypt, który bierze dane ze sklepu, mapuje pola na schemat OpenAI i zapisuje gotowy plik pod stałym adresem. Uruchamiany z harmonogramu raz na dobę utrzymuje katalog w aktualności bez niczyjej pracy.
Warto od razu wbudować w generator selekcję asortymentu, zamiast wypychać cały magazyn. U nas odsiewa on towar niedostępny, pozycje zbyt tanie, żeby kliknięcie się zwróciło, oraz produkty bez rozpoznanej marki. Opisaliśmy to w case study z naszego sklepu, razem z liczbami.
Z pomocą modelu językowego
Model dobrze nadaje się do napisania konwertera, a nie do wyprodukowania katalogu. Praktyczny przepis: wklejasz mu specyfikację pól, kilka wierszy swojego obecnego feedu i prosisz o skrypt, który przemapuje jedno na drugie. Sprawdzenie wyniku i tak należy do Ciebie.
Jedna zasada jest tu nienegocjowalna: model nie może uzupełniać brakujących wartości. Wymyślona marka, zgadnięta dostępność albo podrasowany tytuł produktu to dane, których nie ma w sklepie, a które trafią do reklamy i do klienta. Braki się uzupełnia w sklepie albo odsiewa z katalogu, nigdy nie dopisuje w pliku.
Sprawdź plik, zanim go wgrasz
Pięć minut kontroli oszczędza rundy zgadywania, dlaczego panel czegoś nie przyjął. Zacznij od małej próbki, około stu pozycji, i dopiero po czystym imporcie przechodź na pełny katalog. Przy pełnym pliku sprawdzamy sześć rzeczy.
- Puste pola wymagane: żadnej z dziewięciu kolumn nie może zabraknąć w żadnym wierszu.
- Format ceny: kwota z dwoma miejscami, spacja, kod waluty. Nic więcej w tym polu.
- Powtórzone numery produktów:
item_idmusi być unikalny. - Adresy: wszystkie po HTTPS i osiągalne z zewnątrz, nie tylko z Twojej sieci.
- Dostępność: tylko dopuszczone wartości, bez wariantów w rodzaju dostępny.
- Liczba kolumn w każdym wierszu: nadmiarowy tabulator w opisie potrafi przesunąć całą resztę.
Taki test zajmuje kilkanaście linii kodu i warto go wpiąć w harmonogram razem z generatorem, żeby plik nie wyjechał zepsuty w środku nocy.
Trzy drogi wgrania i konfiguracja połączenia
Katalog zakłada się w Menedżerze reklam, w zakładce z narzędziami. Po utworzeniu katalogu wybierasz jedną z trzech metod dostarczania pliku, a wybór ma konsekwencje na kolejne tygodnie.
Plik wgrany z dysku
Wskazujesz gotowy plik CSV albo TXT i on trafia do systemu od razu. Dobre na pierwszy test i do sporadycznych poprawek. Nic się potem nie odświeża samo, więc po dwóch tygodniach katalog przestaje istnieć.
Hostowany adres HTTPS
Podajesz adres, pod którym Twój serwer wystawia plik, a system pobiera go sam. To najprostsza droga do stałej aktualności i przy większości sklepów wystarczająca. Adres musi być publicznie dostępny, bez logowania i bez przekierowań wymagających ciasteczek. Warto też podać właściwy typ zawartości, u nas jest to text/tab-separated-values.
Połączenie SFTP
Wariant dla zespołów, które wolą wypychać katalog z własnego serwera. Panel udostępnia dane połączenia, a Ty wysyłasz plik na wskazany serwer. Zasady są tu inne niż przy zwykłym transferze plików i warto je znać, zanim zbudujesz automat:
- Katalog główny to cały Twój asortyment. System przetwarza wszystkie pliki, które w nim leżą, więc nie zostawiaj tam starych wersji.
- Zachowuj tę samą nazwę pliku i nadpisuj ją przy każdej aktualizacji, zamiast dokładać pliki z datą w nazwie.
- Nie musisz wysyłać sygnału zakończenia. System zaczyna przetwarzanie, gdy wysyłki przestaną się zmieniać przez chwilę.
- Duży katalog dziel na części, do pół miliona pozycji i mniej niż 500 MB na plik, i trzymaj stały zestaw tych części.
- Produkty rozpoznawane są po numerze, nie po nazwie pliku, więc przeniesienie pozycji między częściami niczego nie resetuje.
Przy tej drodze plik wysyłasz jako pełny stan katalogu, co najmniej raz dziennie. Produkt usunięty z pliku nie znika od razu: system trzyma jego ostatni zapis do dwóch tygodni, co chroni katalog przed skutkami jednej nieudanej wysyłki.
Co dzieje się z plikiem po wysłaniu?

Przetwarzanie trwa od kilku minut do kilku godzin, zależnie od wielkości katalogu, a postęp i błędy pokazuje historia wgrań. Zajrzyj tam po pierwszym imporcie, bo część pozycji potrafi odpaść po cichu z powodu braków w wymaganych polach.
Wgranie katalogu nie jest jeszcze obietnicą emisji. Produkt musi być dopuszczony do reklam, dostępny, mieć użyteczne dane i przejść weryfikację, a kampania, grupa reklam i szablon muszą być aktywne. Dopiero potem pozycja wchodzi do aukcji. Po starcie emisji dane w raportach pojawiają się do siedmiu godzin.
Po pierwszym pełnym wgraniu bieżące zmiany dostępności i tytułów można wysyłać aktualizacją różnicową, bez przesyłania całego katalogu od nowa. Opisaliśmy to przy technicznej stronie katalogu.
Jak emedia może w tym pomóc?
Ten plik zbudowaliśmy najpierw dla siebie, więc znamy każdy komunikat błędu na tej trasie.
- Obsługa ChatGPT Ads: katalog, kampania, pomiar i prowadzenie emisji.
- Generator katalogu z Twojego sklepu, z selekcją asortymentu i automatycznym odświeżaniem.
- Kontrola pliku przed każdą wysyłką, żeby błąd nie wyjechał niezauważony.
- Kampanie reklamowe PPC: ten sam katalog pracuje równolegle w Google Ads i Meta Ads.
Podsumowanie
Zbudowanie pliku produktowego do ChatGPT to praca na godzinę, o ile wiesz, że nie jest to plik dla Google z inną nazwą. Zapamiętaj cztery rzeczy: żadnego XML-a, dziewięć wymaganych kolumn, cena razem z walutą w jednym polu i automatyczne odświeżanie, bo pozycje wygasają po dwóch tygodniach. Jeśli chcesz, żebyśmy przygotowali taki katalog dla Twojego sklepu, napisz do nas. Kolejny krok to konfiguracja kampanii z katalogu.
Przeczytaj także
Kampania z katalogu produktów: cała ścieżka w panelu
Reklamy w ChatGPT dla sklepu: konfiguracja od zera
Katalog produktów w praktyce: wgrywanie i aktualizacje
Masz plik produktowy w Google? Wykorzystasz go w ChatGPT- Obsługa ChatGPT Ads: nasza oferta prowadzenia kampanii, cennik i zakres prac
Najczęstsze pytania
Czy mogę użyć pliku XML z Google Merchant Center albo z Ceneo?
Nie. OpenAI nie obsługuje XML, RSS ani Atom. Dane z tych feedów trzeba przepisać na tekst rozdzielany tabulatorami, plik CSV albo JSON Lines i zmapować nazwy pól na własny schemat OpenAI.
Ile kolumn musi mieć plik produktowy do ChatGPT?
Dziewięć wymaganych: item_id, title, description, url, brand, seller_name, image_url, availability i price. Do reklam dochodzi pole is_ads_eligible, choć katalogi zakładane w Menedżerze reklam dopuszczają produkty domyślnie.
Jak zapisać cenę w pliku?
Jako jeden ciąg znaków: kwota z dwoma miejscami po przecinku, spacja i trzyliterowy kod waluty, na przykład 349.99 PLN. Osobnej kolumny na walutę nie ma.
Czy plik da się zrobić w arkuszu kalkulacyjnym?
Tak, przy małym asortymencie. Eksportuj do CSV albo do tekstu z tabulatorami, w kodowaniu UTF-8, a kolumnę z numerem produktu ustaw jako tekst, żeby nie zgubić zer wiodących. Sam arkusz nie jest obsługiwanym formatem, liczy się wyeksportowany plik.
Jak często odświeżać katalog?
Co najmniej raz dziennie, wysyłając pełny stan katalogu. Pozycje bez odświeżenia wygasają po dwóch tygodniach, dlatego plik wgrany jednorazowo z dysku przestaje działać sam z siebie.
Czy model językowy może przygotować taki plik?
Nadaje się do napisania konwertera z Twojego obecnego feedu, nie do wypełniania danych. Marek, dostępności ani tytułów nie wolno zgadywać, bo trafią do reklamy i do klienta. Braki uzupełnia się w sklepie albo odsiewa z katalogu.
Jak to powstaje. Tematy, opinie i ostatnie słowo: Grzegorz Wysocki, właściciel emedia. Pierwsza wersja robocza, kod i testy: model Claude Opus 5 w narzędziu Claude Code. Nic nie idzie na stronę bez przeczytania i poprawienia przez człowieka. Grafiki składamy sami, sceny powstają z pomocą AI na bazie zdjęcia autora.
Na czym to stoi. OpenAI, specyfikacja pliku produktowego i przewodnik po przesyłaniu plików, stan na 4 września 2026. OpenAI, Centrum pomocy, zakładanie katalogu produktowego, stan na 4 września 2026. Katalog utrzymywany dla sklepu smartu.eu. Liczby pochodzą z dokumentacji producenta albo z naszych kampanii. Czego nie wiemy, o tym piszemy wprost.
Realizacja: artykuł zrealizowany przez człowieka we współpracy z systemami AI. Redakcję i publikację firmuje autor. Wykorzystane systemy: Anthropic oraz OpenAI.
14:26
Zobacz, jak to wygląda na żywym koncie
Czternaście minut z konta reklamowego, które założyliśmy 1 września 2026: dwa sposoby uruchomienia kampanii, minimalny budżet i miejsca, w których system nie pokaże Ci tego, czego oczekujesz.
Obejrzyj filmOpublikowano 04.09.2026
Więcej na ten temat: Poradniki krok po kroku Widoczność w AI ChatGPT Ads
Rozwiń z nami swój biznes on-line
Zobacz również
