Hotové skripty pro blogery, kteří nechtějí programovat — jen zkopírovat, doplnit klíč a nahrát na svůj hosting. Technickou referenci všech funkcí najdete v dokumentaci API.
Postup je u všech návodů stejný: zkopírujte skript do souboru, nahoře doplňte svůj klíč (a případně e-mail), nahrajte na hosting a otevřete v prohlížeči. Když má běžet opakovaně, nastavíte na hostingu „cron" — návod, jak na to, má každý hosting v nápovědě (v cPanelu je to Cron Jobs / Naplánované úlohy).
Co to dělá: každých pár minut se podívá, jestli pro vaše blogy nejsou nové poptávky, a pošle vám je e-mailem. Žádná propásnutá zakázka, žádné obcházení webu.
Potřebujete: klíč s oprávněním čtení.
placla-hlidac.php<?php
// ============ DOPLŇTE SVOJE ÚDAJE ============
$KLIC = 'SEM-VLOZTE-SVUJ-API-KLIC';
$EMAIL = '[email protected]';
// =============================================
// pomocná funkce: zavolá PlaCla API
function placla($cesta) {
global $KLIC;
$ctx = stream_context_create(['http' => [
'header' => "Authorization: Bearer {$KLIC}\r\n",
'ignore_errors' => true, 'timeout' => 20,
]]);
$telo = file_get_contents('https://api.placla.cz/v1' . $cesta, false, $ctx);
return json_decode((string)$telo, true);
}
// které poptávky už jsme viděli (pamatuje si soubor vedle skriptu)
$pametSoubor = __DIR__ . '/placla-hlidac-pamet.json';
$videno = is_file($pametSoubor) ? (array)json_decode(file_get_contents($pametSoubor), true) : [];
// projít všechny blogy a posbírat nové poptávky
$blogy = placla('/blogs');
$nove = [];
foreach (($blogy['data'] ?? []) as $blog) {
$poptavky = placla('/blogs/' . $blog['id'] . '/demands');
if (isset($poptavky['error'])) continue; // např. blog bez vyplněné ceny se přeskočí
foreach (($poptavky['data'] ?? []) as $p) {
if (in_array($p['id'], $videno)) continue;
$videno[] = $p['id'];
$nove[] = "• {$p['name']}\n odměna: {$p['reward']} Kč, rozsah: {$p['ns']} NS"
. ($p['vip'] ? ' (VIP)' : '')
. "\n blog: {$blog['name']}"
. "\n klíčová slova: {$p['keywords']}\n";
}
}
file_put_contents($pametSoubor, json_encode($videno));
// poslat mail (jen když něco nového je)
if ($nove) {
$text = "Nové poptávky na PlaCle:\n\n" . implode("\n", $nove)
. "\nNabídnout je můžete na https://sluzba.placla.cz/bloger/\n";
mail($EMAIL, 'PlaCla: ' . count($nove) . ' nových poptávek', $text,
"Content-Type: text/plain; charset=UTF-8\r\n");
echo 'Posláno: ' . count($nove) . " nových poptávek\n";
} else {
echo "Nic nového.\n";
}
Nahrajte soubor na hosting a otevřete ho v prohlížeči
(https://vas-web.cz/placla-hlidac.php). Poprvé napíše „Posláno" a přijde
vám e-mail se všemi aktuálními poptávkami — to je v pořádku, skript se je právě
naučil. Od té doby hlásí jen nové.
V administraci hostingu nastavte, aby se skript spouštěl třeba každých 15 minut. Příkaz do cronu (cestu upravte podle svého hostingu):
php /cesta/k/vasemu/webu/placla-hlidac.php
Pokud hosting umí jen „volat URL", zadejte adresu skriptu — funguje to stejně.
Co to dělá: místo aby se váš skript ptal, PlaCla sama zavolá vaši adresu ve chvíli, kdy se objeví nová poptávka vhodná pro vaše blogy. V tomto návodu vám nová poptávka přijde e-mailem; v návodu 3 na ni skript rovnou nabídne. Kromě nových poptávek chodí i další události (akceptace, proplacení, zpráva, reklamace — přehled v referenci); tento přijímač je v klidu ignoruje a klidně si ho o ně později rozšíříte.
Potřebujete: klíč s oprávněním čtení + zápis.
placla-webhook.php a nahrajte na hosting<?php
// ============ DOPLŇTE SVOJE ÚDAJE ============
$SECRET = 'SEM-PRIJDE-SECRET-Z-KROKU-2';
$EMAIL = '[email protected]';
// =============================================
// přečíst zprávu a ověřit podpis (ochrana: zprávu opravdu poslala PlaCla)
$telo = file_get_contents('php://input');
$podpis = $_SERVER['HTTP_X_PLACLA_SIGNATURE'] ?? '';
if (!hash_equals(hash_hmac('sha256', $telo, $SECRET), $podpis)) {
http_response_code(403);
exit('spatny podpis');
}
$data = json_decode($telo, true);
if (($data['event'] ?? '') === 'demand.created') {
$p = $data['demand'];
$blogy = implode(', ', array_map(fn($b) => $b['name'], $data['blogs'] ?? []));
$text = "Nová poptávka na PlaCle:\n\n"
. "{$p['name']}\nodměna: {$p['reward']} Kč, rozsah: {$p['ns']} NS\n"
. "klíčová slova: {$p['keywords']}\nvhodná pro blogy: {$blogy}\n\n"
. "Nabídnout: https://sluzba.placla.cz/bloger/\n";
mail($EMAIL, 'PlaCla: nová poptávka - ' . $p['name'], $text,
"Content-Type: text/plain; charset=UTF-8\r\n");
}
// jiné (budoucí) události v klidu ignorujeme
http_response_code(200); // říct PlaCle „doručeno", jinak to zkusí znovu
echo 'ok';
Jediný příkaz — na počítači ho spustíte v terminálu (Windows: aplikace „Příkazový řádek", Mac: „Terminál"). Doplňte svůj klíč a adresu, kam jste soubor nahráli:
curl -X PUT -H "Authorization: Bearer VAS_KLIC" -H "Content-Type: application/json" -d "{\"url\": \"https://vas-web.cz/placla-webhook.php\"}" https://api.placla.cz/v1/webhook
Odpověď obsahuje secret — dlouhý řetězec, který zkopírujete do
skriptu z kroku 1 (proměnná $SECRET) a znovu ho nahrajete.
Secret se zobrazí jen teď.
curl -X POST -H "Authorization: Bearer VAS_KLIC" https://api.placla.cz/v1/webhook/test
PlaCla hned pošle zkušební zprávu a odpoví vám, jak váš server zareagoval:
{"delivered": true, "status": 200, ...} znamená, že vše funguje.
Když ne, podívejte se do Když něco nefunguje — a historii
všech doručení kdykoli vypíše
curl -H "Authorization: Bearer VAS_KLIC" https://api.placla.cz/v1/webhook/deliveries.
Co to dělá: rozšíření návodu 2 — na novou poptávku skript rovnou podá nabídku za základní cenu a pošle vám o tom e-mail. Vy už jen čekáte, jestli inzerent akceptuje.
Potřebujete: hotový návod 2 a klíč s oprávněním čtení + zápis.
placla-webhook.php z návodu 2 přidejte za řádek s $EMAIL:$KLIC = 'SEM-VLOZTE-SVUJ-API-KLIC';
// nabízet automaticky JEN tyto blogy (ID najdete v adrese blogu na PlaCle,
// nebo příkazem: curl -H "Authorization: Bearer VAS_KLIC" https://api.placla.cz/v1/blogs)
$AUTO_BLOGY = [123, 456];
if (($data['event'] ?? '') === 'demand.created') { před řádek s mail(: $vysledky = [];
foreach (($data['blogs'] ?? []) as $b) {
if (!in_array($b['id'], $AUTO_BLOGY)) continue;
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer {$KLIC}\r\nContent-Type: application/json\r\n",
'content' => json_encode(['demand_id' => $p['id']]),
'ignore_errors' => true, 'timeout' => 20,
]]);
$odpoved = json_decode((string)file_get_contents(
'https://api.placla.cz/v1/blogs/' . $b['id'] . '/offers', false, $ctx), true);
$vysledky[] = $b['name'] . ': '
. (isset($odpoved['error']) ? 'NEPODÁNO (' . $odpoved['error']['message'] . ')' : 'nabídnuto');
}
if ($vysledky) $text .= "\nAutomatické nabídky:\n" . implode("\n", $vysledky) . "\n";
Nabídka se podává za základní cenu poptávky. Chcete-li automaticky
nabízet vyšší částku, přidejte do těla požadavku pole reward (vaše
požadovaná odměna v Kč) a případně note s poznámkou pro inzerenta —
podrobnosti v referenci.
Co to dělá: když si u zakázky objednáte napsání textu redakcí PlaCly, tenhle skript hotový text stáhne — vypíše ho, nebo z něj ve WordPressu rovnou udělá koncept článku.
Potřebujete: klíč s oprávněním čtení; číslo zakázky (deal)
zjistíte z výpisu /v1/deals nebo z adresy zakázky na webu.
placla-text.php)<?php
// ============ DOPLŇTE SVOJE ÚDAJE ============
$KLIC = 'SEM-VLOZTE-SVUJ-API-KLIC';
// =============================================
$deal = (int)($_GET['deal'] ?? 0);
if (!$deal) exit('Použití: placla-text.php?deal=CISLO_ZAKAZKY');
$ctx = stream_context_create(['http' => [
'header' => "Authorization: Bearer {$KLIC}\r\n",
'ignore_errors' => true, 'timeout' => 20,
]]);
$odpoved = json_decode((string)file_get_contents(
"https://api.placla.cz/v1/deals/{$deal}/text", false, $ctx), true);
header('Content-Type: text/plain; charset=UTF-8');
if (isset($odpoved['error'])) exit('Chyba: ' . $odpoved['error']['message']);
echo $odpoved['text'];
Otevřete https://vas-web.cz/placla-text.php?deal=12345678 a text si
zkopírujete. Pozor: text, který musí nejdřív schválit inzerent, API před schválením
nevydá (dostanete srozumitelnou chybu) — to je záměr, nepublikujte ho dřív.
Stejný skript nahrajte do kořenové složky WordPressu (tam, kde je
wp-config.php) a místo posledních tří řádků (od header()
dejte:
if (isset($odpoved['error'])) exit('Chyba: ' . $odpoved['error']['message']);
require __DIR__ . '/wp-load.php';
$id = wp_insert_post([
'post_title' => 'PlaCla - text k zakázce ' . $deal,
'post_content' => $odpoved['text'],
'post_status' => 'draft',
]);
echo 'Koncept vytvořen, upravíte ho v administraci: příspěvek č. ' . $id;
Po otevření s číslem zakázky se v administraci WordPressu objeví koncept s textem — doladíte titulek a obrázky a publikujete jako obvykle. Po použití skript z webu smažte, nebo si do něj přidejte vlastní tajný parametr; vytvářet koncepty by neměl umět každý, kdo zná adresu.
Co to dělá: vypíše, co čeká na proplacení, a výdělky po měsících.
Potřebujete: klíč s oprávněním čtení.
placla-vydelky.php, nahrajte, otevřete v prohlížeči<?php
// ============ DOPLŇTE SVOJE ÚDAJE ============
$KLIC = 'SEM-VLOZTE-SVUJ-API-KLIC';
// =============================================
$ctx = stream_context_create(['http' => [
'header' => "Authorization: Bearer {$KLIC}\r\n",
'ignore_errors' => true, 'timeout' => 20,
]]);
$v = json_decode((string)file_get_contents('https://api.placla.cz/v1/payouts', false, $ctx), true);
header('Content-Type: text/plain; charset=UTF-8');
if (isset($v['error'])) exit('Chyba: ' . $v['error']['message']);
echo "ČEKÁ NA PROPLACENÍ\n==================\n";
$suma = 0;
foreach ($v['pending'] as $p) {
$suma += $p['reward'];
echo "{$p['reward']} Kč {$p['blog']} - {$p['demand']}"
. ($p['in_arbitration'] ? ' (v arbitráži)' : '') . "\n";
}
echo "celkem: {$suma} Kč\n\nPROPLACENO PO MĚSÍCÍCH\n======================\n";
foreach ($v['paid_monthly'] as $m) {
echo "{$m['month']} {$m['amount']} Kč ({$m['count']} článků)\n";
}
Jen za konkrétní rok: na konec adresy API přidejte
?rok=2026.
| Co vidíte | Co to znamená a co s tím |
|---|---|
| chybi_klic (401) | Skript neposílá klíč — zkontrolujte, že jste ho vložili
do proměnné $KLIC celý a bez mezer navíc. |
| neplatny_klic (401) | Klíč je špatně zkopírovaný, zneplatněný, nebo účet není aktivní. Nejjistější je vytvořit si v nastavení nový klíč. |
| chybi_scope (403) | Klíč má jen oprávnění čtení, ale skript potřebuje i zápis (nabídky, webhook). Vytvořte klíč s oprávněním čtení + zápis. |
| blog_neuplny (422) | Blog nemá vyplněnou minimální cenu, nebo je návštěvnost starší než měsíc — doplňte v nastavení blogu na webu (nebo přes PATCH v API). Hlídač z návodu 1 takový blog tiše přeskakuje. |
| rate_limit (429) | Moc požadavků za minutu. U návodů z této stránky se to běžně nestane; když ano, prodlužte interval cronu. |
| webhook test: status 0 | Váš server neodpověděl — překlep v adrese, skript na jiném místě, nebo hosting blokuje příchozí požadavky. Otevřete adresu webhooku v prohlížeči: má vypsat „spatny podpis" (to je správně — prohlížeč podpis nemá). |
| webhook test: status 403 | Skript běží, ale nesedí $SECRET —
zkopírujte ho znovu z odpovědi registrace, případně si vygenerujte nový:
POST /v1/webhook/rotate-secret. |
| nechodí e-maily | Funkce mail() bývá na hostingu omezená —
zkontrolujte spam a nápovědu hostingu k odesílání pošty z PHP. |
| jiná chyba s kódem PC-… | Napište nám na
[email protected] a kód PC-XXXXXX přiložte —
podle něj chybu dohledáme. |
PlaCla API v1 · technická reference · dotazy: [email protected]