Analiza odbiorców
Podaj temat lub stronę internetową marki, a otrzymasz to, co prawdziwi ludzie mówią o nich w publicznych komentarzach i dyskusjach: słowa, których używają, pytania, które zadają, czego oczekują od produktu, w czym nie zgadzają się z twórcami, czego brakuje w istniejących treściach i które tematy zyskują na popularności. Każdy wniosek jest liczony w niezależnych wątkach i powiązany z komentarzami, z których pochodzi, dzięki czemu Twój zespół lub Twój własny model AI może go sprawdzić.
Jedno zadanie badawcze czyta jedną próbę do 500 zaakceptowanych komentarzy i przekształca ją we wszystkie dziewięć poniższych produktów (różnych widoków tych samych danych). Każde zadanie zawiera wszystkie dziewięć; możesz wskazać ten, na którym zależy Ci najbardziej.
Wartość products | Co otrzymujesz |
|---|---|
audience_keywords | frazy używane przez odbiorców, pogrupowane według znaczenia (częstotliwość w komentarzach, a nie wolumen wyszukiwań) |
audience_questions | powtarzające się pytania z wariantami, etapem lejka i informacją, czy twórcy już na nie odpowiadają |
website_requirements | co strona internetowa musi powiedzieć lub pokazać: funkcje, integracje, ceny, dowody, zastrzeżenia; każdy punkt oznaczony jako must, should lub could |
comparison_intelligence | jak odbiorcy porównują wymienione produkty: kryteria, powody zmiany, luki w zaufaniu |
content_brief_from_audience | brief treści: roboczy tytuł, sekcje, pytania, na które trzeba odpowiedzieć, zastrzeżenia, FAQ, twierdzenia, których należy unikać |
audience_content_gaps | zapotrzebowanie, które istniejące odpowiedzi pokrywają słabo, wraz z materiałem, który warto stworzyć |
creator_vs_audience_gap | gdzie komentujący nie zgadzają się z twierdzeniami twórców, podważają je lub dodają do nich warunki |
buyer_expectations | co kupujący uważają za oczywiste (must_have) i co wyróżnia produkt (differentiator) |
trend_from_audience | tematy rising, stable lub declining, znormalizowane na 1 000 istotnych wątków |
Analiza odbiorców jest włączana dla klucza na życzenie: napisz na support@omev.be. Zadania są rozliczane ze zwykłego salda klucza.
Cena
| Co | Cena |
|---|---|
| Jedno zadanie badawcze, wszystkie dziewięć produktów w cenie | $0.99 |
Cena jest pobierana raz, gdy jobs/create przyjmie zadanie. Zadanie zakończone stanem
NO_DATA (za mało istotnych publicznych dyskusji) jest bezpłatne; zadanie COMPLETED_PARTIAL
jest rozliczane w całości. Powtórzenie jobs/create z tym samym idempotency_key zwraca to
samo zadanie i nie jest ponownie płatne. estimate, jobs/get, jobs/result i
jobs/cancel są bezpłatne.
Najpierw sprawdź zapytanie
estimate weryfikuje treść żądania, pokazuje znormalizowany zakres i cenę, nie uruchamiając
żadnej pracy. Przyjmuje tę samą treść co jobs/create; idempotency_key jest tu opcjonalny.
curl -sS https://llmapi.omev.be/v1/audience-intelligence/estimate \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_version": "1.2",
"products": ["audience_questions", "buyer_expectations"],
"topic": {"name": "waterproof sneakers for commuting"},
"audience": {"description": "city commuters who walk in the rain"},
"scope": {"platforms": ["youtube", "reddit"], "languages": ["en"], "markets": ["US"]}
}'
{
"request_id": "…",
"supported": true,
"normalized_scope": {
"markets": ["US"], "languages": ["en"],
"from": "2026-03-31T10:00:00Z", "to": "2026-09-27T10:00:00Z",
"platforms": ["reddit", "youtube"]
},
"sample": {"target_accepted_comments": 500, "consent_required": false},
"quote": {
"customer_cost_usd": "0.99000000", "currency": "USD", "tier": "single",
"products": ["audience_content_gaps", "audience_keywords", "audience_questions", "…"],
"valid_until": "2026-09-27T11:00:00Z"
},
"estimated_completion_seconds": {"min": 20, "typical": 240, "max": 1800},
"warnings": []
}
quote.customer_cost_usd to cena zadania. supported: false lub uwaga w warnings
oznacza, że źródło danych jest chwilowo niedostępne: spróbuj ponownie później.
Uruchomienie zadania badawczego
curl -sS https://llmapi.omev.be/v1/audience-intelligence/jobs/create \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_version": "1.2",
"idempotency_key": "acme-17-sneakers-2026-09",
"products": ["audience_questions", "buyer_expectations"],
"topic": {"name": "waterproof sneakers for commuting"},
"audience": {"description": "city commuters who walk in the rain"},
"scope": {"platforms": ["youtube", "reddit"], "languages": ["en"], "markets": ["US"]}
}'
| Pole | Wymagane | Znaczenie |
|---|---|---|
schema_version | tak | 1.0, 1.1 lub 1.2; używaj 1.2 |
idempotency_key | tak dla jobs/create | 8–200 znaków; ponowne użycie zwraca to samo zadanie zamiast uruchamiać nowe |
product lub products | nie | produkt, na którym zależy Ci najbardziej, lub lista produktów z tabeli powyżej; najwyżej jedno z tych dwóch pól. Zadanie i tak tworzy wszystkie dziewięć |
topic.name | name lub website_url | temat, 3–300 znaków |
topic.website_url | name lub website_url | strona marki; nazwa marki jest odczytywana ze strony |
topic.description | nie | do 2 000 znaków doprecyzowujących temat |
topic.include_terms, topic.exclude_terms | nie | do 50 terminów w każdym, aby poszerzyć lub zawęzić to, co uznaje się za istotne |
audience.description | nie | kogo chcesz usłyszeć, 3–2 000 znaków |
audience.roles, audience.company_size | nie | dodatkowe wskazówki dla odbiorców biznesowych |
scope.platforms | nie | dowolne z youtube, reddit, linkedin, tiktok, instagram, threads, facebook, twitter, web |
scope.languages | nie | języki komentarzy, domyślnie ["en"], do 10 |
scope.markets | nie | kody krajów, np. ["US"]; pusta wartość oznacza cały świat |
scope.period | nie | {"days": 7…365} (domyślnie 180) lub {"from": "…Z", "to": "…Z"} w UTC, w odstępie 7–365 dni |
entities | nie | produkty lub firmy do porównania: {"name": "…", "kind": "product", "aliases": ["…"]}; bez nich comparison_intelligence korzysta z porównań znalezionych w komentarzach |
creator_seeds | nie | kanały lub społeczności do przeczytania: {"platform": "youtube", "url": "https://…"}; społeczność Reddit to https://www.reddit.com/r/<name>, pojedynczy wątek Reddit to URL wątku z "kind": "publication" |
source_mode | nie | discover (domyślnie) samodzielnie znajduje źródła; seeds_only czyta tylko Twoje creator_seeds |
data_mode | nie | refresh_if_needed (domyślnie) ponownie wykorzystuje świeże dane dla tego samego zakresu i je uzupełnia; fresh zbiera dane od nowa; corpus_only używa wyłącznie danych już zebranych dla Twojego konta |
output | nie | max_signals (1–100, domyślnie 30), max_evidence_per_signal (1–20, domyślnie 5), include_short_quotes i include_markdown (oba domyślnie true) |
limits | nie | max_creators (domyślnie 30, do 100), max_publications (domyślnie 300, do 1 000), max_comments (domyślnie 15 000, do 50 000), deadline_seconds (domyślnie 1 800, 60–3 600) |
Ważne wartości domyślne:
- Jeśli podasz tylko
topic.website_url, zadanie czyta wszystkie platformy, a także niezależne fora i blogi. - Jeśli podasz
topic.namebezscope.platforms, zadanie czyta tylko YouTube. Wymień platformy, których potrzebujesz.
Odpowiedzią jest 202 z zadaniem:
{
"request_id": "…",
"job": {"id": "aij_…", "status": "QUEUED", "stage": "VALIDATE", "progress": 0,
"created_at": "…", "deadline_at": "…", "currency": "USD", "warnings": []},
"idempotent_replay": false,
"poll_after_seconds": 3
}
Śledzenie zadania
Zadanie trwa zwykle kilka minut i kończy się najpóźniej po upływie limits.deadline_seconds.
Sprawdzaj status co 5–10 sekund.
curl -sS https://llmapi.omev.be/v1/audience-intelligence/jobs/get \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "aij_…"}'
job.progress rośnie od 0 do 100; job.coverage_so_far pokazuje, ile danych zebrano do
tej pory.
status | Znaczenie |
|---|---|
QUEUED, RUNNING | oczekuje lub trwa |
WAITING_PROVIDER, RETRY_WAIT | czeka na źródło danych lub ponawia próbę; sprawdzaj dalej |
COMPLETED | raport jest gotowy |
COMPLETED_PARTIAL | raport jest gotowy, ale próba jest mniejsza niż planowano; zobacz warnings i product_readiness |
NO_DATA | nie znaleziono wystarczająco dużo istotnych publicznych dyskusji; raportu nie ma |
BUDGET_EXHAUSTED, EXPIRED, FAILED | zadanie zakończyło się bez pełnego raportu; stop_reason i public_error_code podają przyczynę |
CANCELLED | zadanie zostało anulowane przez Ciebie |
Aby zatrzymać zadanie, wyślij {"job_id": "aij_…"} na /v1/audience-intelligence/jobs/cancel.
Odpowiedzią jest 202, gdy zadanie się zatrzymuje, lub 200, jeśli jest już anulowane.
Pobranie raportu
curl -sS https://llmapi.omev.be/v1/audience-intelligence/jobs/result \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "aij_…"}'
Przed zakończeniem zadania wywołanie zwraca 409 JOB_NOT_READY. Zadanie, które zakończyło
się bez raportu (na przykład NO_DATA), zwraca {"job": {…}, "report": null}.
Raport:
| Pole | Zawartość |
|---|---|
status, products | status końcowy i utworzone produkty |
product_results | jeden obiekt na produkt, z nazwą produktu jako kluczem; każdy zawiera listę items w formacie danego produktu |
product_readiness | dla każdego produktu: sufficient, insufficient_sample lub no_evidence, wraz z przyczyną |
summary | krótkie podsumowanie prostym językiem |
research_question, scope | co zbadano: temat, odbiorców, okres, platformy zamówione i faktycznie objęte |
methodology | czyje opinie reprezentuje próba, jak wybierano źródła, ograniczenia |
coverage | komentarze zebrane, zaakceptowane i wykluczone, unikalne wątki, platformy, największy udział jednego źródła |
signals | wnioski źródłowe: type (pytanie, problem, oczekiwanie, zastrzeżenie, porównanie, trend…), label, strength (anecdotal, emerging, recurring, strong), liczniki i evidence_ids |
evidence | komentarze stojące za wnioskami: platforma, publikacja, treść komentarza, trafność |
contradictions, warnings | sprzeczne wnioski i wszystko, co ogranicza raport |
rendered_markdown | ten sam raport w formacie Markdown, gdy output.include_markdown ma wartość true |
Liczone są unikalne wątki dyskusji, a nie pojedyncze komentarze, więc jeden głośny wątek nie
sprawi, że temat będzie wyglądał na duży. Traktuj wnioski anecdotal jako wskazówki, a nie
fakty.
Raporty są dostępne przez 90 dni od zakończenia zadania; potem wywołanie zwraca
410 RESULT_EXPIRED.
Wąskie tematy
Zadanie celuje w 500 zaakceptowanych komentarzy, czyli maksimum. W niszy, w której tylu nie ma,
możesz zaakceptować mniejszą próbę 200–499 komentarzy w tej samej cenie: ustaw sample_policy.mode na
narrow, sample_policy.target_accepted_comments na docelową liczbę i dodaj
sample_policy.narrow_topic_consent z zarejestrowaną treścią zgody, czasem jej akceptacji i
wersją zasad. Zanim wbudujesz to w produkt, skontaktuj się z
support@omev.be, aby otrzymać dokładne brzmienie.
Błędy
| Kod | Kiedy |
|---|---|
401 | brak klucza API lub klucz nieprawidłowy |
403 | klucz nie może używać tego produktu |
404 | nieznane zadanie lub zadanie należące do innego konta |
409 JOB_NOT_READY | raport zamówiono przed zakończeniem zadania |
409 IDEMPOTENCY_CONFLICT | idempotency_key został już użyty z inną treścią żądania |
409 JOB_ALREADY_TERMINAL | anulowanie wysłano dla zadania, które już się zakończyło |
410 RESULT_EXPIRED | raport jest starszy niż 90 dni |
422 INVALID_ARGUMENT | brakuje pola lub jest ono poza zakresem; treść odpowiedzi wskazuje pole |
429 | zbyt wiele żądań lub zbyt wiele zadań w kolejce; spróbuj ponownie po krótkiej przerwie |
Dla 409, 410 i 422 treść odpowiedzi zawiera kod usługi pokazany powyżej. Pozostałe
statusy zwracają wspólną treść błędu, zobacz Błędy.