Potřebujete zjistit, které stránky nějakého webu se jak sdílejí? Možná pro vlastní obsahový audit, možná pro rešerše konkurentů, možná pro inspiraci při hledání sexy témat? Hledáte alternativu za haprující camcimcumcem API? Pojďme se mrknout, jak na to – rychle a bezbolestně :-)
Co budeme potřebovat:
- Open Refine (stáhnout můžete na anglickém nebo českém webu)
- Alternativně ScreamingFrog nebo Xenu
- Účet na SharedCount.com + základní klíč k API
1. Příprava URL
Otevřete si Open Refine, klikněte na Create project -> Web Adresses (URL) a do řádku zadejte URL adresu mapy webu (sitemap.xml), který chcete zkoumat. Obvykle bývá sitemapa přímo v kořenovém adresáři (www.nejakyweb.cz/sitemap.xml), může být ale i jinde (typicky najdete umístění v robots.txt) nebo v jiném formátu (pokud je zkomprimovaná, pak bude nejdříve potřeba si rozbalit a nahrát ji jako soubor, ne jako URL).
Klikněte na Next a zobrazí se vám náhled strukturovaných dat v Sitemapě. My chceme zjišťovat jen metriky k URL adresám, takže nás zajímá jen obsah značek <loc>, klikněte na řádek s loc.
Klikněte na Create project. Podle velikosti sitemapy zkoumaného webu vám může sondování adres kratší či delší chvíli trvat. Finální výstup by měl vypadat nějak takto:
Pokud OpenRefine nemáte, nechcete nebo nedokážete zprovoznit (kvůli různým systémovým omezením pro instalace a zápis souborů, typicky u větších firem s nějakým bláznivým zabezpečením), můžete si URL zkoumaného webu natahat odjinud. Buďto si je vyextrahovat přímo ze sitemapy chytrým ořezáváním značek nebo za použití specializovaného crawlera jako je Xenu Link Sleuth nebo Screaming Frog.
Pro SF by postup vypadal takto: zadejte URL zkoumaného webu. Nejprve pro jistotu omezte rychlost procházení crawlera a počet vláken – větší weby „zvyklé“ na různé sosání a vykrádání by vám jinak mohly proces brzy zaříznout, pokud budete odesílat příliš mnoho dotazů příliš rychle. Klikněte na Configuration -> Speed.
2-3 vlákna po 5 URL najednou by měly být ok pro většinu webů. Půjde to sice pomaleji, ale na jistotu. Jelikož budeme chtít obvykle pouze metriky pro hlavní stránky, je rozumné hlavně u větších webů rovnou vyloučit obrázky a podobné doplňkové. V Configuration -> Exclude vepište adresáře s obrázky, které nechcete procházet.
Dále klikněte na Run a nechte web nacrawlovat. Zase to může podle velikosti webu chvilku trvat, velké weby se desítkami / stovkami tisíc URL adres mohou trvat i den. Pro velké objemy se vyplatí přidělit Screaming Frogu více RAM, aby data vůbec dokázal namapovat. Hotové mapování vyexportujte do .csv nebo .xls souboru a nahrajte do Open Refine jako soubor.
Při vkládání z .csv pozor na kódování znaků (v boxíku character encoding si nastavte správné). U exportu ze Screaming Frogu bude také potřeba při vkládání ignorovat první žádek s názvem exportu (nebo jej následně odmazat).
2. Získejte data
Nejprve bude potřeba zjistit, v jakém formátu se budeme SharedCount přes API ptát. Potřebujem znát:
- vaši API URL (záleží na úrovni služby, kterou používáte)
- váš API klíč
Obojí zjistíte v záložce Account. Pokud účet nemáte, můžete si ho během minutky založit zdarma. Základní limit je 10.000 URL adres k prozkoumání.
Vraťte se do OpenRefine, klikněte na šipku u názvu sloupečku s nasbíranými URL adresami a vyberte „Edit column -> Add column by fetching URLs“
Namísto value vepíšeme dotazovací URL ve fomátu
'http://api.sharedcount.com/?url=' + value + '&apikey={APIklic}'
kde namísto APIklic copy/pastněte číslo vašeho API klíče. Throttle delay v případě API můžete klidně nastavit na 1 (jde o rychlost, s jakou se bude OpenRefine APíčka ptát), sloupeček nezapomeňte vhodně pojmenovat.
U větších webů bude možná potřeba chvíli počkat. Nahoře se vám ukáže žlutý obdéník se stavem dotazování. Pozor, například u (nejen) Internet Exploreru často nevyskočí nic – nelekejte se, Open Refine pracuje, jen bývá zablokovaný ten boxík :-)
Konečný výstup by měl vypadat zhruba takto:
3. Parsování dat z JSONu
Poslední co nám zbývá je vyříznout si hodnoty pro jednotlivé sociální sítě. Výstup jsme dostali v JSONu s nímž naštěstí umí Open Refine krásně pracovat, takže si teď metriky jedno po druhé vytaháme.
Ptát se budeme pomocí příkazu
value.parseJson()["Nazev"]
kde Nazev nahradíme za název sociální sítě podle výstupu. Pro české weby nás bude zajímat například:
- Likes na Facebooku: value.parseJson()[„like_count“]
- Shares na Facebooku: value.parseJson()[„share_count“]
- +1ky na GooglePlus: value.parseJson()[„GooglePlusOne“]
- Mentiony a retweety URL na Twitteru: value.parseJson()[„Twitter“]
Příklady budeme vkládat tak, že si klikneme na šipku u názvu sloupce s daty s API (jak jste si ho předtím pojmenovali) a klikneme na Edit column -> Add column based on this column, zvolíme název nového sloupce podle metriky (sociální sítě), kterou chceme parsovat a vložíme místo value připravný parsovací příklad.
Klikněte na ok a voilá – máte oddělený sloupeček s metrikami :-)
4. Použití
Jakmile si vytaháte vše, po čem srdce analytikovo touží, můžete si celý projekt vyexportovat ven jako tabulku
Pak už je jen na vás, jak si s daty budete hrát. Pár příkladů, jak používám data já pro své klienty:
- Tematické rešerše konkurence: které jejich stránky mají úspěch, jsou „hot“?
- Kterým našim stránkám se daří (přitlačit na téma) / nedaří (opravit, konsolidovat)?
- Kteří redaktoři dokáží vydolovat největší míru interakce?
- Sdílení versus konverze versus jiné metriky v obsahovém auditu webu
- Další vstup do analýzy klíčových slov
UPDATE 10.4.2015 – vřelé díky za přispění Honzovi Pávovi z Lovebrand
SharedCount musel před nějakou dobou změnit své API, zřejmě z důvodu monetizace platformy. Asi proto se změnily URL adresy, které je třeba při získávání dat volat. Pokud používáte free verzi, URL adresa jehttps://free.sharedcount.com/ (více v dokumentaci API). Podle specifikace přístupového bodu pro získání dat o sdílení je pro potřeba přidat jen dva parametry – URL a API klíč (ve tvaru https://free.sharedcount.com/url&apikey={váš_api_key}). Jenže to v Open Refine nefunguje. Po drobném testování je funkční tato dotazovací URL:
‚https://free.sharedcount.com/?url=‘ + value + ‚&apikey={váš-api-key}‘
Ostatní funguje stále stejně.
Dá se postup zjednodušit? Znáte rychlejší metodu? Něco vám nefunguje? Ozvěte se v komentářích!
Na závěr velké díky Filipu Podstavcovi, bez jehož školení Open Refine bych to možná nikdy nenapsal :-)
30.8.2014 napsal Lukáš Pítra
Díky Lukáši, moc ráda vyzkouším. :)
Určitě vyzkouším, díky :)
Super článek, jako vždy.
Jen poznámka k parsování Facebook dat z JSONu, zápis by měl správně být value.parseJson()[„Facebook“][„like_count“], value.parseJson()[„Facebook“][„share_count“].
Díky za článek, určitě vyzkouším:)
bohužiaľ, nefunguje to ani po update. chybová hláška:
Parsing error at offset 0: Missing number, string, identifier, regex, or parenthesized expression
Zkousela jsem to vselijak, ale bohutel aktualne vzorec nefunguje. Skoda!