1. Ümumiyyətlə Product Feed nə üçün lazımdır
Klassik e‑commerce ilə müqayisədə, Product Feed aşağıdakılar arasında bir yerdədir:
- malların «vitrini» (qiymətlər, mövcudluq, linklər və media ilə kataloq);
- və texniki kontrakt, hansı SKU-ları satıcının ChatGPT vasitəsilə göstərməyə və/və ya satmağa hazır olduğunu təsvir edir.
OpenAI spesifikasiyasında açıq şəkildə deyir ki, feed — mallar barədə axtarışın, tövsiyələrin və çekaout üçün məlumatların hazırlanmasının əsaslandığı yeganə həqiqət mənbəyidir.
Adi onlayn mağazada istifadəçi özü səhifələrdə gəzir, kateqoriyaları vərəqləyir, filtrləyir və s. AI‑commerce-də isə hər şey əksinədir: istifadəçi sadəcə modelə «stolüstü oyunları sevən developer dostum üçün 30 dollaradək rəqəmsal hədiyyə seç» deyir — sonra isə ChatGPT artıq özü düşünür ki, Product Feed-inizdən hansı SKU-lar uyğundur, onları hansı ardıcıllıqla göstərmək və bütün bunları kartlar və ardınca Instant Checkout şəklində necə tərtib etmək lazımdır.
Bu səbəbdən Product Feed bir neçə vəzifəni eyni anda həll edir.
Birincisi, o, ChatGPT-yə axtarış üçün strukturlaşdırılmış məlumat verir. Model təkcə məhsulun adına və təsvirinə deyil, həm də kateqoriyalara, teqlərə, qiymətə, əlçatanlığa, lokalaya, ölkə məhdudiyyətlərinə əsaslanır.
İkincisi, o, çekaout üçün məlumatların mənbəyidir. ChatGPT checkout_session hazırlamağa başlayanda, məhz feed-dən SKU ID, qiymət, valyuta, seller URL və digər kommersiya məlumatları götürülür.
Və nəhayət, Product Feed — bu, sizinlə platforma arasında formallaşdırılmış kontraktdır. Siz açıq şəkildə deyirsiniz: «budur SKU-ların siyahısı, onlardan hansılar yalnız axtarışda (discovery) istifadə oluna bilər, hansılar isə Instant Checkout vasitəsilə rəsmiləşdirilə bilər».
Bunu görmək üçün sadə bir sxem çəkmək rahatdır.
flowchart TD A[GiftGenius DB] --> B[Feed Builder] B --> C["Product Feed (CSV/JSON/...)"] C --> D[OpenAI Ingestion] D --> E[Axtarış indeksi + sıralama] E --> F[ChatGPT/Agent hədiyyələri seçir] F --> G["Instant Checkout (ACP)"]
Solda — sizin daxili bazanız, burada artıq «əsl» kataloq yaşayır. Sağda — istifadəçiyə göstərilən ChatGPT. Ortada — Product Feed və onun qəbulu və indeksləmə mexanizmləri. Bu mühazirədə etdiyimiz hər şey məhz A ilə D arasında yerləşir.
2. Product Feed formatları və «fizikası»
OpenAI spesifikasiyası fayl formatına kifayət qədər elastik yanaşır: TSV, CSV, XML və JSON dəstəklənir. Bu, əksər mövcud sistemlərin (özəl monolitlərdən tutmuş Shopify-a qədər) feed-i əlavə sehrsiz ixrac edə bilməsi üçün xüsusi olaraq edilib.
Tipik variantda:
- Product Feed olan faylı və ya endpoint-i öz HTTPS serverinizdə yerləşdirirsiniz;
- bu ünvanı ChatGPT Merchants portalında qeydiyyatdan keçirirsiniz;
- OpenAI bu feed-i periodik olaraq götürür, təsdiqləyir və malları indeksləşdirir.
Sənədləşmə vurğulayır ki, feed mütəmadi yenilənməlidir (hətta hər 10–15 dəqiqədən bir də olar), belə ki, istifadəçilər aktual qiymətləri və mövcudluğu görsünlər — xüsusilə endirimlər və pik dövrlərdə.
GiftGenius üzrə tədris nümunəsində JSON formatı ilə işləyəcəyik, çünki bu, TypeScript tərtibatçıları üçün daha rahatdır. Ancaq başa düşmək vacibdir: OpenAI səviyyəsində spesifikasiya JSON-a bağlı deyil, sadəcə bizim üçün bu daha uyğundur.
Ən sadə JSON feed belə görünə bilər:
[
{
"id": "gg-coffee-sub-1m-usd",
"title": "1 aylıq qəhvə abunəliyi",
"description": "Proqramçı üçün hər ay dənəvər qəhvə qutusu.",
"price": 2900,
"currency": "usd",
"availability": "in_stock",
"link": "https://giftgenius.app/gifts/coffee-subscription-1m",
"image_link": "https://cdn.giftgenius.app/images/coffee-1m.png",
"enable_search": true,
"enable_checkout": true
}
]
Reallıqda sahələr daha çox olacaq və bəziləri məcburi, digərləri isə tövsiyə olunan və ya opsional olacaq. Bunun necə qurulduğunu indi izah edəcəyik.
3. Məhsul və variant (SKU): bunu necə modelləşdirməli
Ən çox verilən suallardan biri: «Bəs Product Feed-də bir məhsulun ölçülərini, paketlərini, abunə müddətlərini və digər variantlarını necə göstərək?»
Product Feed spesifikasiyası sətirlər/yazılar ilə işləyir və hər yazı satılan bir konfiqurasiyanı təsvir edir. Sənayenin tövsiyə etdiyi (və OpenAI feed-i ilə yaxşı uyğunlaşan) memarlıq nümunəsi belədir: hər bir ayrıca konfiqurasiya (ölçü, abunə variantı, tarif, region) — ayrı feed yazısı, yəni ayrı SKU-dur.
Baza məhsul sizdə daxili modeldə yaşayır, feed-də isə SKU səviyyəsində işləyirsiniz.
Məsələn, sizdə bir xidmət var və ona 1 ay, 3 ay, 6 ay abunə var. Product feed baxımından bunların hamısı ayrı SKU-lardır. Əgər bir xidməti 20 fərqli şərtlə almaq mümkündürsə, product feed-də 20 SKU olmalıdır.
TypeScript-də bunu təxminən belə ifadə etmək olar:
// GiftGenius-in daxili modeli
export interface GiftProduct {
id: string; // product_123
name: string;
description: string;
baseImageUrl: string;
}
// Product Feed-ə gedəcək SKU
export interface GiftSkuFeedItem {
id: string; // product_123_usd_1m
productId: string; // GiftProduct.id-ə istinad
title: string;
description: string;
price: number; // minimal vahidlərdə (sentlərlə)
currency: string; // "usd"
}
GiftGenius daxilində GiftProduct ilə GiftSkuFeedItem arasında bir‑dən‑çox‑a əlaqə ola bilər. Feed-də isə artıq «yastı» SKU siyahısını verirsiniz.
ChatGPT hansı SKU-ların bir baza məhsula aid olduğunu (məsələn, 1, 3 və 12 aylıq abunə) anlaya bilsin deyə, tez‑tez item_group_id kimi qruplaşdırıcı sahədən istifadə olunur. Lakin bu artıq memarlıq nümunəsidir, standartın sərt tələbi deyil.
Məsələn:
{
"id": "gg-coffee-sub-1m-usd", // 1 aylıq abunə SKU-su
"item_group_id": "gg-coffee-sub", // Sizin məhsul
"title": "Qəhvəyə abunə — 1 ay",
"price": 2900,
"currency": "usd",
"enable_search": true,
"enable_checkout": true
}
Və 3 aylıq abunə üçün:
{
"id": "gg-coffee-sub-3m-usd", // 3 aylıq abunə SKU-su
"item_group_id": "gg-coffee-sub", // Eyni məhsul id-si
"title": "Qəhvəyə abunə — 3 ay",
"price": 7900,
"currency": "usd",
"enable_search": true,
"enable_checkout": true
}
Belə yanaşma həm modelin, həm də sizin backend-in sifariş yaratmaq zamanı işini asanlaşdırır: SKU ID istifadəçi tərəfindən alınan dəqiq konfiqurasiyanı həmişə tapa biləcəyiniz unikal açara çevrilir.
4. Product Feed-in məcburi sahələri və onların UX-ə təsiri
OpenAI Product Feed spesifikasiyasında sahələr təxminən üç qrupa bölünür: məcburi (required), tövsiyə olunan (recommended) və opsional (optional).
Dəqiq adları və siyahıları həmişə aktual sənədləşmədə yoxlamaq lazımdır, amma tədris məqsədləri üçün belə «minimal» dəstəkdən istifadə edə bilərik.
| Sahə | Nəyə lazımdır | O olmayanda nə baş verir |
|---|---|---|
|
Satıcı çərçivəsində SKU-nun unikal identifikatoru | Məhsulu birmənalı identifikasiya etmək mümkün deyil |
|
Kart üçün qısa ad | Model üçün bunun hansı məhsul olduğunu anlamaq çətinləşir |
|
Genişləndirilmiş təsvir | Cavablar daha ümumi olacaq, fərdiləşdirmə pisləşəcək |
|
Minimal vahidlərdə qiymət | Çekaoutu hazırlamaq mümkün deyil |
|
ISO 4217 valyuta kodu, adətən kiçik hərflə | Platforma nədə hesablamalı olduğunu anlamayacaq |
|
Satıcının saytında məhsul səhifəsinin URL-i | İstifadəçi saytınıza gedə bilməyəcək |
|
Mövcudluq statusu (in_stock, out_of_stock və s.) | Əlçatan olmayan məhsullar göstərilə bilər |
|
Məhsulu axtarışda istifadə etmək mümkündürmü | true olmadan məhsul nəticələrə düşməyəcək |
|
Instant Checkout vasitəsilə almaq mümkündürmü | Yalnız discovery/link‑out olacaq |
Vacib nüans: enable_search və enable_checkout iş rejimlərini məntiqi olaraq ayırır.
Əgər enable_search = true, enable_checkout = false isə, məhsul nəticələrə düşə bilər, amma almağa cəhd ediləndə istifadəçi sizin linkiniz (link) vasitəsilə saytınıza gedəcək, ChatGPT daxilində Instant Checkout-a (kart artıq bağlıdır) yox.
Əgər enable_checkout = true olarsa, digər şərtlər də ödənildikdə (dəstəklənən region, valyuta, valid ACP backend) məhsulu bir‑iki kliklə elə ChatGPT-də almaq olar (bu da konversiyanı xeyli artırır).
Checkout üçün «minimal yararlı» GiftGenius obyekti nümunəsi:
{
"id": "gg-dev-notebook-plain-usd",
"title": "Proqramçı üçün minimalist dəftər",
"description": "Qara, xətli deyil, 120 səhifə. Əl ilə spesifikasiya yazanlar üçün.",
"price": 1500,
"currency": "usd",
"availability": "in_stock",
"link": "https://giftgenius.app/gifts/dev-notebook",
"image_link": "https://cdn.giftgenius.app/images/dev-notebook.png",
"enable_search": true,
"enable_checkout": true
}
Diqqət edin: hətta nümunədə şəkil (image_link) əlavə edirik — formal olaraq o, tövsiyə olunan, yoxsa məcburi sahə ola bilər, lakin onsuz UX xeyli zəifləyəcək.
5. Tövsiyə olunan və opsional sahələr: feed-i necə «cəlbedici» etmək
Məcburi sahələr — «heç olmasa işləsin» üçündür. Ancaq yalnız onlarla kifayətlənsəniz, sonda mühasibat uçotu üçün minimal valid CSV-yə oxşar bir şey alacaqsınız, cool AI vitrini yox.
Tövsiyə olunan sahələr adətən bunları əhatə edir:
- əsas və əlavə şəkil URL-ləri;
- məhsulun kateqoriyası (tez‑tez «gifts > experiences > online courses» kimi taksonomiyaya əsasən);
- brend/satıcı adı;
- rəng, ölçü, material kimi atributlar;
- adult məzmun flaqları, yaş məhdudiyyətləri və s.
Məhsulu nə qədər zəngin təsvir etsəniz, model bir o qədər məntiqli cavablar yarada bilər. Məsələn, əgər siz açıq şəkildə qeyd etsəniz ki, dəftər təkrar emal olunmuş kağızdan hazırlanıb və «planet barədə narahat olan tərtibatçıları» dəstəkləyir, ChatGPT ekoloji dost hədiyyələr istəyən istifadəçiyə onu şüurlu şəkildə tövsiyə edə bilər.
GiftGenius-də belə bir SKU-nu bu cür genişləndirə bilərdik:
{
"id": "gg-dev-notebook-plain-usd",
"title": "Eko dəftər — proqramçılar üçün",
"description": "Xətsiz minimalist dəftər, 120 səhifə, təkrar emal olunmuş kağızdan.",
"price": 1500,
"currency": "usd",
"availability": "in_stock",
"link": "https://giftgenius.app/gifts/eco-dev-notebook",
"image_link": "https://cdn.giftgenius.app/images/eco-dev-notebook.png",
"category": "gifts > office > notebooks",
"brand": "GiftGenius Originals",
"enable_search": true,
"enable_checkout": true
}
category və brand kimi əlavə atributlar yalnız nəticələri yaxşılaşdırmır, həm də analitikaya kömək edir: ChatGPT vasitəsilə hansı kateqoriyaların daha yaxşı konvertasiya etdiyini, hansının isə daha zəif olduğunu görə bilərsiniz.
Opsional sahələr tez‑tez çox spesifik ssenarilərlə bağlıdır (məsələn, qiymətin geo parametrləri — bunu ayrıca danışacağıq, və ya xüsusi metadatlar). Onları «quş» xatirinə deyil, layihə yetişdikcə əlavə etmək lazımdır.
6. Kommersiya flaqları və yalnız discovery rejimi
Gəlin enable_search və enable_checkout məntiqini bir daha dəqiq sabitləyək, çünki bu, ACP və Instant Checkout haqqında növbəti mühazirələr üçün kritik körpüdür.
Təsəvvür edin ki, siz ChatGPT satıcısı kimi yola yeni çıxırsınız. Kataloqunuz var, amma ACP backend və Delegated Payment hələ hazırlanır. İstəyirsiniz ki, ChatGPT artıq indi SKU-larınızı tapa bilsin və istifadəçiləri ödəniş üçün saytınıza yönləndirsin.
Bu halda siz:
- lazımi SKU-lar üçün enable_search = true ilə Product Feed dərc edirsiniz;
- enable_checkout dəyərini = false saxlayırsınız — ACP inteqrasiyasını büküb sertifikatlaşdırana qədər.
Belə olanda ChatGPT hədiyyələrinizi istifadəçi cavablarına daxil edə, kartları göstərə və «GiftGenius saytına keç» linki təklif edə bilər, amma daxili Instant Checkout UI-sini qurmayacaq.
Agentic Checkout və Delegated Payment-i reallaşdırdıqdan sonra isə müəyyən məhsulları «Instant Checkout üçün hazırdır» rejiminə keçirə bilərsiniz — sadəcə enable_checkout = true qoyub, əlavə olaraq bütün məlumat tələblərini (qiymət, valyuta, seller URL və s.) yerinə yetirməklə.
Spesifikasiyalar səviyyəsində məhz Product Feed-dən olan sahələr line_items və checkout_session-da məbləğin doldurulması üçün istifadə olunacaq.
Beləliklə, feed incə tənzimləmə alətinə çevrilir: ChatGPT sizin adınızdan ümumiyyətlə hansı SKU-ları və hansı formada sata bilər.
7. Lokallar, valyutalar, regionlar və multi‑regional qiymətlər
Yəqin bilirsiniz ki, dünya en-US və dollarlarla məhdudlaşmır. Lokallaşdırma modullarında artıq locale və userLocation-un biznes məntiqinə necə təsir etdiyini müzakirə etmişdik. Burada bu mövzu ön plana çıxır: Almaniyada malların qiyməti ABŞ-dan fərqli ola bilər və bəzi hədiyyələr ümumiyyətlə bəzi ölkələrdə satıla bilməz.
Product Feed spesifikasiyası bunu bir neçə mexanizmlə nəzərə alır.
Birincisi, valyuta: currency ISO 4217-in etibarlı kodu olmalıdır (məsələn, usd, eur, gbp).
İkincisi, geo-asılı qiyməti və əlçatanlığı təsvir edən sahələr istifadə oluna bilər. Sənədləşmədə geo_price kimi atributlar və onunla əlaqəli ISO 3166-ya əsaslanan regional kodlar nümunə gətirilir.
İki əsas memarlıq yanaşması var.
Yanaşma 1: hər region üçün ayrı feed.
- product-feed-us-en.json ABŞ üçün;
- product-feed-de-de.json Almaniya üçün;
- product-feed-br-pt.json Braziliya üçün.
Hər feed-də bütün SKU-lar artıq lazımi valyuta və lokalaya gətirilir. ChatGPT üçün sadəlik, sizin üçün isə bir neçə feed-i dəstəkləmək baxımından daha çox iş.
Yanaşma 2: geo‑sahələri olan vahid feed.
Hər yazının içində ya qiymət massivini saxlayırsınız, ya da əlavə atributlar:
{
"id": "gg-dev-notebook-multi",
"title": "Eko dəftər — proqramçılar üçün",
"description": "Təmiz koda və planetə olan sevginizi dəstəkləyir.",
"prices": [
{ "region": "US", "currency": "usd", "price": 1500 },
{ "region": "DE", "currency": "eur", "price": 1400 }
],
"availability_by_region": [
{ "region": "US", "availability": "in_stock" },
{ "region": "DE", "availability": "out_of_stock" }
],
"enable_search": true,
"enable_checkout": true
}
Multi‑regional sahələrin konkret strukturu spesifikasiyanın versiyasından asılıdır, lakin fikir eynidir: feed platformanın SKU-nun hansı ölkələrdə mövcud olduğunu və orada neçə başa gəldiyini anlaya bilməsinə imkan verməlidir.
GiftGenius baxımından, aşağıdakıların arasında xəritələşdirməni düşünmək vacibdir:
- ChatGPT-nin bildiyi locale və userLocation;
- və feed-in hansı hissəsindən qiymətlər və mətnlər götürülməlidir.
Əksər kommersiya ssenarilərində siz “bütün dünya üçün” bir yazı vermirsiniz, əvəzində müxtəlif ölkələr üçün fərqli SKU-lar edirsiniz ki, vergilərə, siyasətə və məhsul məhdudiyyətlərinə əməl etmək asan olsun.
8. Məlumat keyfiyyəti və siyasət: bunlar olmadan Instant Checkout uçmayacaq
Product Feed təkcə formatdan ibarət deyil, həm də məlumat keyfiyyəti və OpenAI siyasətinə riayət etməkdən ibarətdir.
Keyfiyyət hissəsində OpenAI açıq şəkildə tələb edir:
- düzgün, stabil identifikatorlar;
- HTTPS ilə etibarlı URL-lər və 200 cavab kodu;
- qiymət və valyutanın uyğunluğu;
- aktual mövcudluq (realda artıq olmayan məhsullar in_stock kimi göstərilməməlidir).
Həmçinin spesifikasiyada mətnlərin uzunluğuna dair tələblər var: məsələn, title həddindən artıq uzun olmamalıdır (yüzlərlə simvol), description üçün isə məntiqli limit var (minlərlə simvol) ki, kartlar səliqəli görünsün və üç cildlik romana çevrilməsin.
Ayrı blok — Prohibited Products Policy. Bu, Instant Checkout vasitəsilə və/və ya ümumiyyətlə ChatGPT-də satılmasına icazə verilməyən məhsul və xidmət kateqoriyalarının siyahısıdır: qanunsuz mallar, silahlar, bəzi tibbi xidmətlər və s. kimi aşkar şeylər. Konkret detallar həmişə aktual siyasətdə yoxlanmalıdır, lakin bizim üçün vacib olanı anlamaqdır: Product Feed yalnız formata görə deyil, həm də məzmunun yolverilməzliyinə görə yoxlanacaq.
Kataloqunuz şübhəli kateqoriyalar ehtiva edirsə (məsələn, alkoqol, qumar və ya uşaqlarla bağlı nəsə), bu bölmələrə xüsusi diqqətlə yanaşmağa dəyər. Çox vaxt onları enable_checkout = false rejimində saxlamaq və yalnız öz saytınızda tam hüquqi çərçivə ilə satmaq daha asandır.
9. Təcrübə: GiftGenius üçün minimal Product Feed tərtib edirik
Gəlin indi bunları praktikada tətbiq edək və üç GiftGenius SKU-su üçün sadə feed yığaq. Təsəvvür edək ki, bizdə var:
- Proqramçı üçün eko dəftər.
- 1 aylıq qəhvə abunəliyi.
- «Böyüklər üçün TypeScript» kursuna hədiyyə sertifikatı.
Əvvəlcə feed-i generasiya etmək üçün istifadə edəcəyimiz TypeScript tipini təsvir edək:
export interface GiftGeniusFeedItem {
id: string;
title: string;
description: string;
price: number; // sentlərlə
currency: "usd" | "eur";
availability: "in_stock" | "out_of_stock";
link: string;
image_link?: string;
enable_search: boolean;
enable_checkout: boolean;
}
İndi bir neçə elementdən ibarət massiv yaradıb sonra onu JSON-a serializasiya edək:
export const giftGeniusFeed: GiftGeniusFeedItem[] = [
{
id: "gg-eco-notebook-usd",
title: "Eko dəftər — proqramçılar üçün",
description: "Xətsiz minimalist dəftər, təkrar emal olunmuş kağızdan.",
price: 1500,
currency: "usd",
availability: "in_stock",
link: "https://giftgenius.app/gifts/eco-dev-notebook",
image_link: "https://cdn.giftgenius.app/images/eco-dev-notebook.png",
enable_search: true,
enable_checkout: true
},
{
id: "gg-coffee-sub-1m-usd",
title: "Proqramçı üçün qəhvə abunəliyi — 1 ay",
description: "Aylıq dənəvər qəhvə qutusu. Deadline-larla uyğundur.",
price: 2900,
currency: "usd",
availability: "in_stock",
link: "https://giftgenius.app/gifts/coffee-subscription-1m",
image_link: "https://cdn.giftgenius.app/images/coffee-1m.png",
enable_search: true,
enable_checkout: true
},
{
id: "gg-ts-course-gift-usd",
title: "TypeScript kursuna hədiyyə sertifikatı",
description: "Nəhayət generics-i başa düşmək istəyən tərtibatçılar üçün onlayn kurs.",
price: 9900,
currency: "usd",
availability: "in_stock",
link: "https://giftgenius.app/gifts/ts-course",
image_link: "https://cdn.giftgenius.app/images/ts-course.png",
enable_search: true,
enable_checkout: false // hələlik yalnız discovery
}
];
Daha sonra bu strukturdakı məlumatlardan product-feed.json faylını hər N dəqiqədə bir generasiya edib HTTPS serverinizə yükləyən sadə utiliti yaza bilərsiniz.
import { writeFile } from "node:fs/promises";
import { giftGeniusFeed } from "./feed-data";
// Ən sadə JSON-feed generatoru
async function buildProductFeed() {
const json = JSON.stringify(giftGeniusFeed, null, 2);
await writeFile("public/product-feed.json", json, "utf8");
}
buildProductFeed().catch(console.error);
Aydındır ki, real layihədə bütün feed-i kodda saxlamayacaqsınız; bunun əvəzinə məlumatlar DB-dən götürüləcək. Lakin başlanğıc üçün heç olmasa belə tədris nümunəsini yığmaq faydalıdır ki, pipeline-ı test edəsiniz: generasiya → yükləmə → təsdiqləmə.
10. Anti‑nümunə: «pis» Product Feed necə görünür
Spesifikasiya və UX tələblərini daha yaxşı hiss etmək üçün, formal olaraq demək olar işləyən, amma praktikada problemlərə səbəb olacaq feed nümunəsinə baxmaq faydalıdır:
{
"id": "1",
"title": "Hədiyyə",
"description": "Əla hədiyyə",
"price": 12.333333,
"currency": "usdollars",
"availability": "yes",
"link": "http://giftgenius.local/gift/1",
"enable_search": "true",
"enable_checkout": "maybe"
}
Burada dərhal bir neçə problemi saymaq olar.
Birincisi, id = "1" — stabil və mənalı identifikator deyil. Haradasa DB miqrasiyası etsəniz və ya şardlaşdırma tətbiq etsəniz, belə identifikatorlar kövrək olur. Satıcı çərçivəsində unikal, məzmunlu və kifayət qədər uzun ID-lərdən istifadə etmək daha yaxşıdır.
İkincisi, price sonsuz quyruqlu onluq ədəd kimi göstərilib. Spesifikasiyalar və ödəniş sistemləri adətən qiyməti minimal vahidlərdə (sent, qəpik) tam ədəd kimi gözləyir ki, üzən nöqtə və yuvarlaqlaşdırma problemləri yaranmasın.
Üçüncüsü, currency = "usdollars" və availability = "yes" gözlənilən formatlara (ISO 4217 və icazə verilən statusların siyahısı) uyğun deyil.
Dördüncüsü, link http və lokal domenə aparır — real proda üçün bunların heç biri qəbuledilməzdir; spesifikasiya açıq şəkildə HTTPS və publik əlçatanlıq tələb edir.
Beşincisi, enable_search və enable_checkout flaqları sətir deyil, boolean olmalıdır. Əks halda OpenAI parseri feed-i ya qəbul etməyəcək, ya da susmaya görə bir dəyərə gətirəcək; bu isə sizi xoşagəlməz şəkildə təəccübləndirə bilər.
Belə problemlər həm sərt təsdiqləmə səhvinə (feed rədd edilir), həm də daha xoşagəlməz vəziyyətə səbəb ola bilər: feed formal olaraq qəbul edilib, amma bəzi SKU-lar ignor edilir və ya gözlədiyiniz kimi işləmir. Məhz buna görə daxili təsdiqləməyə öz tərəfinizdə də sərmayə qoymağa dəyər.
11. Product Feed ilə işləyərkən tipik səhvlər
Səhv №1: feed-ə «bir dəfəlik import üçün CSV» kimi yanaşmaq.
Bəzən komandalar Product Feed-i bir dəfə «inteqrasiya üçün» generasiya edəcəkləri və sonra unudacaqları fayl kimi qəbul edirlər. AI‑commerce-də bu belə deyil: feed — mütəmadi yenilənməli canlı həqiqət mənbəyidir. Qiymətləri dəyişirsinizsə, məhsulları satışdan çıxarırsınızsa, promo aksiyalar başladırsınızsa — bütün bunlar vaxtında feed-ə düşməlidir. Əks halda ChatGPT artıq olmayanı və ya köhnə qiymətlə tövsiyə edəcək və istifadəçilər haqlı olaraq narazı qalacaqlar.
Səhv №2: məhsul modelini SKU ilə qarışdırmaq.
Populyar anti‑nümunə — çoxsaylı opsiyaları olan bir baza məhsulu «size1/size2/size3» və ya «duration1/duration2» kimi bir çox sahəli tək feed yazısında əks etdirməyə çalışmaqdır. Nəticədə model nə satıldığını anlamır, ACP backend isə çekaout zamanı bu sahələri «açmaqdan» əziyyət çəkir. Daha sadə və etibarlı yanaşma: bir SKU — bir feed yazısı, hətta bu, eyni məhsul çərçivəsində variant olsa belə.
Səhv №3: lokalları və regionları görməməzlikdən gəlmək.
İlk MVP-ni hazırlayan tərtibatçılar tez‑tez bütün şeylər üçün currency = "usd" və enable_checkout = true qoyurlar, halbuki Instant Checkout sizin regionunuzda əlçatan olmaya bilər və ya bəzi məhsulları müəyyən ölkələrdə siyasətə və ya qanuna görə satmaq olmaz. Sonra yeni bazara çıxanda hər şey qırılır: qiymətlər tutmur, vergilər nəzərə alınmır. Ən başlanğıcdan SKU-ları regionlara və valyutalara bağlamaq daha yaxşıdır — hətta hələlik yalnız bir bazarınız olsa belə.
Səhv №4: təsvirlərə keçmişin SEO mətnləri kimi yanaşmaq.
Bəzi komandalar Product Feed-ə saytlarındakı köhnə, bəzən «açar sözlər» və robotlar üçün yazılmış təsvirləri köçürürlər. ChatGPT üçün bu, faydadan çox zərərdir: model özü mətn yaza bilir, ona daha çox strukturlaşdırılmış, dürüst və dəqiq faktlar lazımdır. Daha yaxşısı qısa və işgüzar təsvir etməkdir, nəinki description-u yarım ekran marketinq «su»su ilə doldurmaq.
Səhv №5: feed-i müstəqil şəkildə təsdiqləməmək.
Yalnız OpenAI tərəfindən təsdiqlənməyə güvənmək — deadline-lar ərəfəsində ağrılı gecələrə gedən yoldur. Backend-də və ya CI-da sadə bir validator yazmağa dəyər ki, sahə sxemlərini, icazə verilən dəyərləri, URL və valyuta formatlarını yoxlasın. Bunu hətta TypeScript-də Zod və ya öz yoxlamalarınızdan istifadə edərək etmək olar. Onda problemləri feed-i proda atmazdan əvvəl tutacaqsınız.
Səhv №6: Product Feed-ə «hər şeyi» daxil etmək.
Bəzən minlərlə SKU-nu «qoy olsunlar, bəlkə gərək oldu» deyə feed-ə salmaq istəyirsiniz. Praktikada bu həm sazlamanı, həm analitikanı, həm də keyfiyyətə nəzarəti çətinləşdirir. Daha məntiqlisi məhdud alt dəstdən başlamaqdır: yalnız ChatGPT vasitəsilə həqiqətən satmaq istədiyiniz və izləməyə hazır olduğunuz kateqoriyalar və SKU-lar. Qalanını discovery rejimində saxlamaq və ya ümumiyyətlə inteqrasiyasız keçinmək olar.
Səhv №7: Product Feed və ACP backend-i sinxronlaşdırmamaq.
Feed və ACP API eyni medalın iki üzüdür. Əgər feed-də yeni SKU peyda olub, amma backend hələ onu sata bilmir (və ya əksinə, SKU feed-dən çıxarılıb, amma backend hələ də onun mövcud olduğuna inanırsa), desinxronizasiya, mürəkkəb bug-lar və dəstəkdə çətin tikelər alacaqsınız. Yaxşı təcrübə — vahid domen kataloq modeli saxlamaq və ondan həm feed generasiyası, həm də çekaoutun işlənməsi üçün istifadə etməkdir.
GO TO FULL VERSION