Audio Native na dużym portalu – firewall, archiwum i Next.js
Bartosz Sroczyński
Bartosz Sroczyński
W poradniku o Audio Native na WordPressie opisaliśmy wdrożenie, które zamyka się w kwadransie: jeden snippet, plugin, gotowe. Ten tekst jest jego drugą częścią – dla serwisów, na których kwadrans zamienia się w kilka tygodni.
Duży portal wydawniczy różni się od małego bloga w trzech miejscach naraz: frontend to zwykle aplikacja (Next.js, React), archiwum liczy tysiące tekstów i żyje własnym ruchem, a domenę chroni firewall z detekcją botów. Każda z tych rzeczy potrafi wywrócić wdrożenie w innym momencie – i żadnej z nich nie opisuje dokumentacja.
Krótkie przypomnienie mechaniki, bo na niej opiera się połowa tego tekstu: Audio Native to osadzany player, który generuje wersję lektorską artykułu przy pierwszej wizycie czytelnika na stronie – nie przy kliknięciu play. Gotowe nagranie trafia do cache na CDN i kolejne wizyty dostają je od razu, bez ponownych kosztów.
Poniżej problemy w kolejności, w jakiej zwykle się pojawiają – i co z nimi zrobić.
Na WordPressie surowy snippet (div + <script>) po prostu działa. W aplikacji React – nie, bo React nie wykonuje tagów <script> wstawianych w trakcie renderowania komponentów. Player zostaje w fallbacku, konwersja nigdy nie rusza, a w konsoli nie ma nic, co by to wprost powiedziało.
Rozwiązanie jest udokumentowane, choć łatwo je przegapić: dedykowany komponent, który w useEffect dokłada skrypt helpera do body dynamicznie. Wzorzec znajdziesz w oficjalnym przewodniku ElevenLabs dla Reacta – u nas zadziałał bez modyfikacji.
Dwie rady na etap testów:
Tryb automatyczny radzi sobie zaskakująco przyzwoicie: na typowym artykule pomija nawigację, lead i stopkę. Ale „zaskakująco przyzwoicie” to za mało, gdy między akapitami eseju lektor nagle czyta dane wydawnicze książki albo biogram autora.
Panel Audio Native ma dwa pola selektorów CSS: selektory treści (co czytać) i zablokowane (co pomijać). Kilka lekcji z praktyki:
>). Zapis #content > p przestaje łapać cokolwiek, gdy w strukturze pojawi się dodatkowy wrapper – a pojawi się, wystarczy drobny redesign. Selektor potomny (#content p) przeżywa takie zmiany. Co ważne, awaria jest cicha: nic nie zgłasza błędu, parser po prostu wraca do trybu automatycznego.<figcaption>; na customowym CMS-ie trzeba wskazać klasy ręcznie.@title i @author w czołówce nagrania biorą dane ze strony, a og:title na portalach bywa zaśmiecony („Tytuł | Dział | Nazwa serwisu”). W naszych testach porównawczych parser preferuje dane z JSON-LD schema.org – czyste headline i author.name dają czystą czołówkę. Jeśli serwis nie ma schema.org na artykułach, warto je dodać przy okazji: skorzysta i audio, i SEO.<break time="1.0s" />, przy czym w naszych próbach cisza powyżej ok. 1,5 s i tak jest przycinana przez model. Dłuższej pauzy nie wymusisz, krótszą – tak.Ten problem jest podstępny, bo nagranie brzmi dobrze. Dopiero uważny odsłuch obok tekstu pokazuje, że z niektórych artykułów wypadają całe fragmenty.
U nas przyczyną był markup: część tekstów miała akapity rozdzielane podwójnym <br><br> wewnątrz jednego bloku, zamiast osobnych znaczników <p>. Parser Audio Native gubił pierwszy segment każdej takiej sklejki – bez błędu, bez ostrzeżenia.
Rozwiązania, od najczystszego:
<p>, odstępy CSS-em. Jednorazowa zmiana w warstwie szablonu, korzysta na niej też dostępność i SEO.Obie drogi mają wspólny mianownik: bez odsłuchu i porównania z tekstem nie dowiesz się, że problem istnieje. O metodzie weryfikacji – na końcu.
Scenariusz z gatunku „przecież nic nie zmienialiśmy”: wdrożenie działa od tygodni, aż któregoś dnia nowe artykuły utykają na „Converting the page to audio” i nigdy nie kończą. Starsze nagrania grają normalnie – bo gotowe pliki są serwowane z CDN ElevenLabs, nie z twojej strony.
Kluczowa jest tu anatomia konwersji: stronę artykułu pobiera serwer ElevenLabs, nie przeglądarka czytelnika. To pobranie przechodzi przez firewall twojej domeny. Platformy hostingowe i CDN-y (Vercel, Cloudflare i inne) potrafią automatycznie włączyć ochronę przed botami przy wykryciu wzmożonego ruchu – challenge JavaScript, który przeglądarka rozwiązuje niezauważalnie, a serwerowy scraper nie. Od tej chwili ElevenLabs nie widzi treści i zwraca ogólnikowe „unable to convert the url”.
Kolejność diagnozy, która oszczędza godziny błądzenia:
Naprawa: wyjątek w firewallu dla stałych adresów egress ElevenLabs. Lista jest oficjalnie opublikowana w dokumentacji (sekcja o statycznych IP – te same adresy obsługują wszystkie usługi ElevenLabs). Dopasowanie po User-Agencie nie zadziała: challenge jest JavaScriptowy, UA scrapera nie jest publicznie skatalogowany, a ElevenLabs nie figuruje na listach „zweryfikowanych botów” przepuszczanych automatycznie. Najpewniejsze trafienie dają logi firewalla – widać w nich dokładnie, które żądania zostały zablokowane i skąd przyszły.
Mechanika „generuj przy pierwszej wizycie” na małym blogu jest zaletą: płacisz tylko za to, co ktoś naprawdę czyta. Na portalu z kilkunastoletnim archiwum ta sama mechanika staje się pułapką – bo pierwszą wizytę składa także robot indeksujący, agregator i czytelnik z długiego ogona wyszukiwarki.
Skala potrafi zaskoczyć: żywe archiwum to setki unikalnych starych adresów odwiedzanych każdej doby. Przy dłuższych formach (8–15 tys. znaków na tekst) miesięczna pula znaków planu potrafi zniknąć w kilka–kilkanaście godzin, a licznik overage bije dalej.
Co z tym zrobić – w kolejności od bezpiecznika do rozwiązania:
Najważniejsza lekcja z tego wdrożenia nie dotyczy żadnego pojedynczego błędu, tylko metody pracy:
<p>, semantyczne podpisy, boksy poboczne w osobnych klasach.headline i author.name.Audio Native pozostaje najkrótszą drogą do wersji lektorskiej artykułów – również na dużym serwisie. Różnica polega na tym, że na dużym serwisie trzeba wiedzieć, gdzie ta droga skręca.
Planujesz player audio na większym serwisie? Pomożemy przejść tę listę od góry do dołu – z firewallem i archiwum włącznie. Sprawdź naszą ofertę wdrożeń →
Zobacz, jak to wdrożyliśmy
Jak dodać automatyczny player audio ElevenLabs Audio Native do artykułów na WordPressie. Konfiguracja przez WPCode, problem z podpisami zdjęć i koszty.
Agent AI umawiający sesje, automatyczne follow-upy i wyceny w kilka minut – konkretne rozwiązania z naszego studia, które oszczędzają godziny tygodniowo.
Voice cloning, transkrypcja, czyszczenie nagrań i automatyzacja workflow – narzędzia AI, z których korzystamy na co dzień przy realnych zleceniach.