Jak by mělo vypadat XML pro affiliate katalogy?

Co v základu potřebuje každý affilák, který chce tvořit katalogy produktů? Kvalitní XML feed! Takový XML feed by měl být udělaný na míru přímo pro affiliate program. Různé „Heuréka standardy“ co nejsou standardy jsou super pro srovnávače, ale ne pro affiláky. Neříkám, že se s nimi nedá pracovat, ale je to zbytečně komplikované a je to házení klacků pod nohy affilákům. Problém je, že jsem se ještě nesetkal s inzerentem, který by to měl 100% v pořádku, na kterém bych Vám ukázal jak by takové XML mělo ideálně vypadat. Rozhodl jsem se proto sestavit krátké XML, které obsahuje jeden virtuální produkt a všechny základní elementy. Na tom si vysvětlíme vše potřebné.

Základní XML pro affiliate program by tedy mělo mít ideálně takovouto strukturu:

Idealni_XML_pro_affiliate_katalogy

Nyní něco konkrétně o jednotlivých parametrech a o tom proč by měly v každém XML být.

<SHOP> – To je asi úplný základ, který není třeba blíže představovat. Pod tímto parametrem jsou schované všechny produkty, které ve feedu jsou. Určuje tedy začátek a konec XML feedu.

<SHOPITEM> – Opět základní prvek každého XML feedu, který specifikuje začátek a konec každého jednotlivého produktu. Je důležité, aby všechny parametry pro určitý produkt byly vymezené v tomto elementu XML feedu. Stejně jako na příkladu výše. Tento parametr totiž většina affiláků používá k párování produktů se svým webem.

<ITEM_ID> – Zdá se jako nepotřebný parametry, ale je kritický důležité, aby každý produkt měl svoje unikátní ITEM_ID. Tento parametr se může samozřejmě jmenovat i jinak. Například <ITEM_GROUP>, <PRODUCT_ID> apod. Jde ale jednoduše o to, aby tam nějaké takové unikátní ID bylo. Na základě toho totiž možné snadno svůj katalog updatovat a poznat, které produkty jsou skladem, a které ne. O tomhle bude řeč ještě níže, ale zde k tomuto parametru stačí takto. Myslete také na to, že toto ID by se nikdy nemělo u daného produktu měnit. NIKDY! Proto třeba není vhodné jako párovací ID použít EAN, který se v čase může měnit. Ve feedu je třeba mít nagenerované takové ID, které bude stále stejné ať svítí sluníčko nebo padají trakaře.

<PRODUCT> – Jasně, občas je také dobré produkty pojmenovat. Tento parametr to má na starosti. Může to být například i <PRODUCTNAME>, <NAME> apod. Je to jedno. Opět je důležité, aby tam ten parametr hlavně byl. Myslete také na to, že je velice důležité jak produkty pojmenujete. VÝRAZNĚ doporučuji, aby součástí názvu produktu byla i nějaké specifikace. Ne pouze třeba „Lodičky Rieker“. V rámci módního segmentu je dobré zmínit barvu, typ produktu + specifikaci  a značku. Nevytvoří se tak duplicitní názvy.

<DESTRIPTION> – Hodně diskutovaná součást XML feedu. Pokud se rozhodnete dát XML veřejně pro affiláky, tak tam MUSÍTE dát i popis. Již jsem se setkal s tím, že inzerenti dají XML, kde není popis produktu. Vyhledávače jsou FULL TEXTOVÉ. To znamená, že indexují TEXT. Proto tam také nějaký musí být, aby affilák měl v detailu produktu nějaký obsah, který je relevantní k danému produktu. V úplně nejideálnějším případě by bylo nejlepší, kdyby byl popisek odlišný od Vašeho webu. Je to, ale nesmyslné množství práce, které se Vám reálně nezaplatí. Z toho důvodu stačí dát popisek buď celý a nebo nějakým rozumným způsobem ořezaný. Pokud tam necháte pouze název použité materiály, barvu apod. a to bude vše, tak to je opět málo.

<URL> – Zde jsou dvě možnosti. Pokud to Vaše měřící platforma umožňuje, tak můžete partnerům generovat takové XML, které bude rovnou obsahovat jejich unikátní affiliate ID. Takhle to má například v Čechách MT-nábytek a je to příjemné. Affilák pak nemusí řešit přidávání svého ID do URL apod. Nicméně zas taková katastrofa to není a pro affiláka by to neměla být komplikace, když tam svoje ID mít nebude. 

<IMGURL> – Do feedu bohatě stačí umístit jeden obrázek. Drtivá většina affiláku stejně s více obrázky nepracuje, protože to nedává logický význam. XML affilák nechce, aby si zákazník zdlouhavě vybíral produkt u něj na webu, ale chce ho jen seznámit s produktem a následně co nejdříve poslat na cílový shop. K tomu jeden obrázek plně dostačuje. O tom proč také stačí jeden obrázek bude řeč níže v souvislosti s velikostí XML feedu. Tento parametr se opět může jmenovat různě – <IMAGE_URL>, <IMAGE> apod.

<PRICE> – Bohatě stačí uvádět v XML feedu jednu cenu a to tu, která již obsahuje DPH. Není nutné uvádět cenu bez DPH. K čemu by jí opět affilák použil? Cena bez DPH opět spíš mate než by k něčemu byla. V nějakém B2B segmentu by to možná bylo dobré, ale pro běžné affiláky je jedna cena dostačující. 

<MANUFACTURER> – Pokud je produkt značkový, tak není důvod neuvádět výrobce. Tento parametr k tomu skvěle slouží. Affilák s tím může na webu dále pracovat. Je dobré to uvádět i takhle odděleně mimo <PARAM>, o kterých je řeč níže. Lépe se to pak používá například pro filtraci.

<CATEGORYTEXT> – Osobně tento parametr nevyužívám, ale dovedu si představit jeho využití. Pokud je tento parametr udělaný dobře, tak se pomocí něho dá například nazrcadlit celé menu z webu inzerenta na katalog. Udělaný dobře je ve chvíli, když přesně odpovídá struktuře menu, kterou má inzerent na webu. Jak jsem již napsal, tak absence tohoto parametru není až tak kritická a dá se bez ní v klidu s feedem pracovat. Zda použijete jako oddělovací parametry „|“ nebo „,“ je úplně jedno.

<PARAM> – Tady se láme chleba! Tyto parametry jsou absolutně to nejlepší s čím se dá v XML nejvíce kouzlit. Pokud jsou parametry dobře rozdělené jako na příkladu výše, tak je affilák může skvěle využívat(když to umí). Dají se s nimi například doplňovat popisy produktů, měnit nadpis produktů, tvořit filtrace a  spousty dalších věcí. Pro mnohé inzerenty je však velice komplikované a nákladné tyto parametry udělat a zároveň je udělat dobře. Samozřejmě se i bez nich dá postavit dobrý katalog, ale není to ono. Pokud chcete o svoje partnery opravdu pečovat a dát jim vše co potřebují k propagaci, tak dobře udělané parametry v atributu <PARAM> jsou skvělou věcí jak jim vyjít vstříc.

Kapitolou sama pro sebe jsou varianty produktů. Například barevnostní, velikostní apod. Tady je důležité se vždy zamyslet, zda je vhodné vytvořit celý nový <SHOPITEM>, tedy nový produkt a nebo stačí pouze přidat další parametr u již existujícího produktu. Uvedeme si příklad. Máte jeden model trička v různých barvách. V tomhle případě jsou tedy logicky možné dvě varianty. Buď vytvoříte pouze jeden <SHOPITEM>, ve kterém specifikujete všechny barvy a nebo vytvoříte pro každou barvu nový produkt. Obecně se vždycky řiďte tím, zda má daný parametr výrazný vliv na vzhled produkt. Což je právě například barva. V takovém případě je tedy nutné udělat pro každou barvu nový produkt do XML feedu a ke každému produktu dát vždy fotku se správnou barvou. Dále by se barevné provedení musí objevit v názvu produktu v XML.

Většina affiláku totiž používá WordPress a díky tomu, že by jste pro každou barvu vytvořili nový produkt v XML a nezměnili to také v názvu produktu, tak by se jim na webu vytvořili takovéto URL:

  • http://domenaaffilaka.cz/nazev-produktu-bez-barvy
  • http://domenaaffilaka.cz/nazev-produktu-bez-barvy-2
  • http://domenaaffilaka.cz/nazev-produktu-bez-barvy-3
  • http://domenaaffilaka.cz/nazev-produktu-bez-barvy-4

To není z pohledu SEO pro affiláka dobré, a proto je nutné měnit s barvou i název produktu a příslušnou fotku. Tím se zaručí, že každý produkt bude mít unikátní URL bez nutnosti použití symbolů na konci, aby se od sebe URL odlišily.

Pak je tady další základní parametr, u které je asi největší problém vůbec a to jsou velikosti. Kvůli nestandardnímu „Heuréka standardu“ se totiž pro každou velikost produktu dělá nový <SHOPITEM> do XML. K čemu bude affilákovi 5 stejných produktů v XML, které se liší jen velikostí? Nehledě na to, že mu na webu vytvoří duplicity v podobě variant. Affilák potřebuje prezentovat produkt jako takový a ne jeho velikost. Velikost je dobrá jako doplňkový parametr, aby zákazník viděl co je aktuálně dostupné, ale rozhodně není třeba dělat kvůli tomu nový <SHOPITEM>. S odfiltrováním těchto duplicit má pak affilák jen problémy. Dá se to dělat na základě <ITEM_ID>, ale když už i to v XML chybí, tak je to opravdu oříšek a XML je rázem téměř nepoužitelné. Zopakuji tedy co jsem zmínil výše. Velikost nemá zásadní vliv na vzhled produktu. Tím pádem bohatě stačí, že bude uváděna jako <PARAM> v rámci jednoho produktu.

Proč zrovna takový XML feed?

To co tady popisuje je pouze příklad, který by měl vystačit většina affiláků. Je však možné si hrát daleko více a vše je jen o datech a jejich kvalitě, které je inzerent schopný do XML dostat. Uvedu tu jeden příklad takové hračky, která se dá využít. Například, když inzerent na svém webu propisuje velikost daného produktu do URL. Tzn. že když zákazník vybere třeba velikost „L“, tak se v URL udělá třeba takového – http://domenashopu.cz/nazev-produktu?velikost=l .. V takovém případě lze vzít tyto jednotlivé URL adresy a dát je do XML feedu ke konkrétním velikostem. Affilák pak tedy může například odkazovat z detailu produktu přímo na detail produktu na eshopu, kde se díky konkrétní URL již zaškrtne velikost „L“ atd. Těch věcí, se kterými se dá hrát je spousta. Nicméně formát XML, který je výše je plně dostačující. Reálně si moc affiláku již s těmito pokročilými věcmi hrát neumí.

Co s vyprodanými produkty v XML feedu ?

Nehledat v tom vědu. Nejlepší variantou je produkt z feedu jednoduše odstranit. Na základě párování přes ITEM_ID pak affilák zjistí, že mu zmizel z feedu produkt a může mu na svých stránkách nastavit, že je vyprodaný. Největším vtipem většiny českých eshopů je, že třeba po týdnu vrací nově naskladněný produkt zpátky do oběhu, ale do XML ho pošlou s novým ITEM_ID. Tím pádem affilákovi přibude na stránkách nový produkt, který bude mít duplicitní URL s tím, který je vyprodaný. Vytvoří se tedy na konci s „-2“. Obdobně jako příklad s barvami výše. A to je prostě zlo. Jako inzerent by jste měli umět vracet znovu naskladněné produkty do oběhu přes stejné ID. Není to těžké. Stačí pouze chtít. Tuto základní věc umí v ČR opravdu velice málo eshopů a je to škoda. Opět je to, možná nevědomky, házení klacků pod nohy svým partnerům.

Optimalizace XML

Věc, která je také hodně opomíjená je celková velikost XML feedu. Díky struktuře, kterou jsem popsal výše udržíte feed krásně štíhlý a nebude mít nesmyslnou velikost. Pracuji například s jedním XML, které má 160 Mb. Víte proč? Protože obsahuje pro affiláka zbytečné parametry jako cenu bez DPH, EAN, dopravu DPD, dopravu českou poštou, heuréka cpc nebo obsahuje 3x název produktu v různých elementech atd. Kapitolou sama o sobě jsou pak zbytečné velikostní varianty produktů, které feed nafukují do nesmyslu. Eliminováním těchto parametrů by se velikost feedu dostala na 1/3. S velkým XML je pak složité pracovat, dlouho se stahuje a jsou s tím jen komplikace. Dávejte tedy do XML jen to nejnutnější a bůh Vás bude milovat!

Podívej se výše na počet řádek pro jeden <SHOPITEM>. Na 42 řádcích je vše co affilák potřebuje. Bez blbostí. Níže uvádím příklad XML, které poskytuje jeden velký shop v ČR – Vivantis. Posuďte sami kolik zbytečností toto XML obsahuje. Když například v jednom <SHOPITEM> je 5 zbytečností, tak krát 5000 produktů a už je to 25000 zbytečných řádek navíc a to už je pořádná porce ušetřené velikosti feedu.

priklad_spatneho_XML

Uvědomuji si, že to není úplně jednoduché postavit dobré XML na míru pro affiliate program. Pokud budete chtít, nejenom v této oblasti affiliate marketingu, poradit, tak mě neváhejte kontaktovat na emailu jsem@milanpichlik.cz a společně se na Váš problém podíváme. Případně můžete navštívit moje školení affiliate katalogů, kde se problematikou affiliate katalogů zabývám detailně.

O autorovi Milan Pichlík

Od roku 2013 podnikám na internetu. Svůj pracovní čas věnuji primárně budování affiliate platformy eHUB, investování do nemovitostí, krypta a akcií. Baví mě zdravý životní styl a kalistenika. Žijeme len raz! 🫡

11 komentářů: “Jak by mělo vypadat XML pro affiliate katalogy?”

  1. peter napsal:

    ean resp. part number by som určite dal do feedu a to z toho dovodu, ak stahujem xml od viacerych obchodov, tak si na základe toho možem parovat produkty a nebudem ich tam mat viackrat

    • Milan Pichlík napsal:

      K tomu se dá přece využít i ITEM_ID 🙂 Ale v tomhle případě se tím asi nic nezkazí.

      • peter napsal:

        ITEM_ID mi skor príde ako nejaký interný kód eshopu, pod ktorým sa nachádza produkt … ak by som chcel mat vo feede už aj affil odkazy pre partnerov, tak ako to technicky vyriešiť? kazdy partner by mal vlastny xml feed alebo ako?

        • Milan Pichlík napsal:

          Budeš mít například URL ve feedu, které budou obsahovat názevdomény.cz/produkt-1?a_box=tvojeid .. Místo „tvojeid“ pak můžeš rovnou vkládat partnerovo ID. Já to u sebe řeším tak, že mám v administraci kolonku pro vložení ID a až pak kliknu na „export“. Item ID se mi všude změní a není problém. Nicméně už je to trošku programátořina 🙂

  2. Petr napsal:

    Pěkný článek, jen ti to trochu poopravim 🙂
    ITEM ID ti ean u stejného zboží z různých obchodů nenahradí, protože může být logicky jiné, kdežto ean je u stejného zboží všude vždy stejný.

    Pokud ti eShop vrací XML pokaždé s jiným ID, tak ho přes ID nemusíš párovat a duplicitám se tak lehce vyhneš.
    Varianty v parametrech jsou asi na delší povídání, základem je ale třeba říci všem affiliate manažerům, že do názvů produktů až na výjimky fakt nepatří, pak se možná někteří inzerenti přestanou divit, proč je nikdo i přes vymazlený eShop nepropaguje. A kdo jiný to má inzerentům pořád říkat, že? 🙂

    • Milan Pichlík napsal:

      Určité modifikace ITEM_ID se ve feedech vyskytují daleko častěji než EAN. Nikdy tedy nemůžeš říct, že párování na základě ITEM_ID je špatně a párování na základě EAN dobře. Musíš umět pracovat s oběma variantami. To, že ITEM_ID je u každého stejného produktu unikátní nevadí. Když ve feedu EAN chybí, tak si jednoduše vezmeš k rozhodování dva parametry. ITEM_ID a třeba URL obrázku. „Pokud je URL obrázku u dvou produktů stejná, pak vem první výskyt unikátního ITEM_ID“ .. Tohle je jen krkolomný příklad, ale také to tak lze řešit. Spoléhat se na kvalitu vstupního XML je pohádka 😀

      Ono právě těžko zjistíš jak ho oni vrací zpět. Občas je to s jiným ID. Občas třeba i lehce pozmění název a přitom je to ten stejný produkt apod. Prostě v tomhle směru nelze očekávat standard a už vůbec ne, když kombinuješ několik dodavatelů dohromady.

      Parametry nepatří do názvu produktů? Když to shop má řešené dobře, tak tam přece mohou snadno být. V tom bych problém neviděl. Ano, když je v názvu pouze hrubý název produktu, tak si můžeš různé parametry do názvu poskládat, ale nesmyslím si, že když prohodíš místo, kde se nachází třeba barva, že tím snížíš duplicity. To, že bych si mohl sám sestavovat názvy produktů už je pohádka a nepovažuji to za reálné, aby tohle shopy dělaly. Nevěřím v zázraky v tomhle směru 😀

      • Milan Pichlík napsal:

        A pardon. To co jsem měl zmínit je ITEMGROUP_ID – Tedy něco takového jako EAN, ale není to EAN. Je u všechny variant stejný a dá se to podle toho odfiltroval úplně jednoduše. IMHO za mě nejlepší řešení.

  3. Petr napsal:

    Já myslím, že mluvíš o něčem jiném..ITEM ID je právě u každého stejného zboží z různých eshopů neunikátní a proto je k tomu lepší použít ean, který je unikátní všude – jak ti už někdo psal, reagoval jsem na to, že lze snadno nahradit ID, což nelze.
    Ano, párování přes ID není problém, ale může být, jak píšeš, proto je u problémových eshopů lepší zvolit jinou metodu.

    Parametry v názvech jsou fakt ošidné, jak jsem psal až na vyjímky to nemá smysl, protože pak máš všude obludné xmlka a většina to neumí udělat správně – jako třeba velikosti aktualizovat jen v parametrech. Barvy jsou trochu něco jiného, ale zase, málo kdo to umí a proto to většina rve k názvům a pak barvu ani nedá do parametru, což už je fakt shit 🙂

  4. Jirka napsal:

    Zdravím Milane.
    Potýkám se s problémem, že když chci v pluginu WP All Import naimportovat produkty z feedu dodavatele, ani mě to nepustí do dalšího kroku.
    Zadám URL feedu, dám „Download“ a vždy mi to vrátí chybu cURL error 7:

    Netušíš, jak toto vyřešit?
    Pravděpodobně to bude velikostí feedu (cca 100 000 položek – které bych si potřeboval ořezat cca na 1000 pomocí filtrů, ale k tomu se ani nedostanu).

    Díky
    Jirka

    • Milan Pichlík napsal:

      Ahoj,

      omlouvám se za pozdní odpověď. Ano, bude to pravděpodobně velikostí vstupního feedu. Ta je velice důležitá, protože WP musí vždy stáhnout celý feed (někdy i 100 Mb+) a až pak se aplikujeme filtrace. To může být problém pro tvůj hosting, protože to stahování obvykle nějakou dobu trvá a server ten proces může zaříznout. Proto se ani feed nikdy pořádně nestáhne. Možnost je například přes Mergado nebo podobný tool ten vstupní feed zmenšit. Pokud se jedná o nějaký z našich programů v Affiliate Agency, tak ti takový feed mohu připravit na míru. 🙂

  5. Lukáš Koucký napsal:

    Fakt dobrý článek pro zorientování v XML, díky Milane!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *