Convertere

Audyt SEO convertere.pl — wersja 2 (plan 10x)

Data audytu: 2026-08-26

Audytowana domena: https://convertere.pl (komory hiperbaryczne / normobaria / PEMF / wodór — Żory)

Wykonanie: audyt zewnętrzny (curl, crawl linków) + analiza kodu repo /root/convertere/www_v3 (Nuxt 3)

Status: opublikowany na r.10s.pl (2026-08-26); na bazie v1 (/root/convertere/audyty/seo-audit-convertere.md)


1. Metodyka

Wzorzec weryfikacji tabeli URL: wszystkie statusy sprawdzone curl w dniu 2026-08-26 (kod HTTP na produkcji, bez follow).


2. Metryki ogólne

MetrykaWynik (2026-08-26)
Strona główna HTTP200
HTTP → HTTPS301 (nginx)
www → bez-www200 bez 301 — duplikat treści
robots.txt404
sitemap.xml (+5 wariantów)404 (także sitemap_index, sitemap-index, server-sitemap, sitemaps, .xml.gz)
Moduły SEO w NuxtBRAK (@nuxtjs/sitemap, @nuxtjs/robots nie w package.json)
Canonicaltylko 3 strony z 31 (edukacja, voucher, call)
<html lang>**lang="en"** na prawie wszystkich stronach (treść PL)
JSON-LD0 bloków na wszystkich stronach
og:imagebazowy /__og-image__/image/og.png → 200 (46 KB); per-strona /edukacja/og.png itd. → 404
Kompresjagzip: TAK; brotli: NIE
TTFB (typ.)0,16–0,78 s (home ~0,67 s)
HSTSbrak
Cache-Controlbrak
FaviconOK (/favicon.ico)
404-kapełny HTML z H1 „404" — zachowanie dobre
500-ki/promocje, /dla-kogo/* — błąd renderu „Cannot read properties of null (reading 'title')"
API /api/tags500 — „Module did not self-register: better-sqlite3" (moduł natywny w .output)
Dolegliwości /dolegliwosci/{id} (64 URL-e)301 → https://convertere.pl/ (reguła w server/routes/dolegliwosci/[id].ts)
Rozmiar HTML2 KB (call) – 245 KB (edukacja), gzip redukuje 70–80%

Krótki obraz: strona działa technicznie, ale jest niewidoczna dla botów (brak sitemap, brak robots, brak canonicali, lang en) i funkcjonalnie zepsuta (3 grupy URL-i z błędem 5xx lub ślepymi 301), a główne frazy biznesowe („komora hiperbaryczna") nie występują w treści w ogóle.


3. Pełna mapa URL (statusy zweryfikowane curl — 2026-08-26)

Tabela A — strony działające (HTTP 200). „Canonical = brak" oznacza brak tagu <link rel="canonical">.

#URLTytułMeta descCanonicalH1 / uwagi
1/Convertere - Szybka regeneracja (31 zn.)63 zn.brak„Odkryj siłę regeneracji"
2/regeneracjaRegeneracja - Convertere - odzyskaj zdrowie131 zn.brak„Regeneracja"
3/regeneracja/leczenieRegeneracja, a leczenie - Convertere...101 zn.brakpoprawna treść porównawcza
4/regeneracja/rehabilitacjaRegeneracja, a rehabilitacja - Convertere...101 zn.brak
5/partnerzyPartnerzy - Convertere - odzyskaj zdrowie22 zn. (za krótkie)brak„Partnerzy"
6/partnerzy/diagnostykaDiagnostyka - Convertere...103 zn.brak
7/partnerzy/leczenieLeczenie - Convertere...120 zn.brak
8/partnerzy/rehabilitacjaRehabilitacja - Convertere...132 zn.brakjedyna strona z frazą „komora hiperbaryczna" (×2)
9/edukacja„Kompendium Medyczne — ..." (79 zn., za długie)121 zn.TAKnajbogatsza treść: 1404 słowa
10/edukacja/normobariaNormobaria - Convertere - odzyskaj zdrowiebrakbrakdok. layout, 511 słów
11/edukacja/wodorWodór Molekularny H₂ - Convertere...brakbrak550 słów
12/edukacja/pemfPEMF - Convertere...brakbrak520 słów
13/edukacja/synergiaSynergia trzech terapii - Convertere...brakbrak400 słów
14/voucher„Turnus Regeneracyjny z Voucherem −80 zł \Convertere Żory"134 zn. (dobre)TAKoferta + FAQ; brak og:image
15/dolegliwosciDolegliwości - Convertere...brakbrak116 słów; lista tagów pusta (API 500)
16/_2.jak-pomagamy/komora_normobarycznaNormobaria - Convertere...240 zn.brak518 słów — produkt bez linków
17/_2.jak-pomagamy/gaz-brownaWodór molekularny - Convertere...30 zn.brak498 słów
18/_2.jak-pomagamy/mwoOscylator Lakhowsky'ego - Convertere...17 zn.brak470 słów
19/_2.jak-pomagamy/sauna-ozonowaHOCATT - Convertere...131 zn.brak838 słów
20/_2.jak-pomagamy/pemfPEMF - Convertere...34 zn.brak610 słów
21/call„Zadzwoń do Convertere — 660 987 499"64 zn.TAKlang=pl; strona przełączająca na tel: — kandydat noindex
22–29/_formularz/{r6,premium-sesja,ogolny,darmowa-sesja,gaz-browna,normobaria,pemf,hocatt}/formularz„Formularz - Convertere - odzyskaj zdrowie" (8× duplikat)brakbrakformularze bez desc, indexowalne
30/dziekuje-za-zlozenie-zamowienia**BRAK <title>**brakbrak110 słów, strona podziękowań

Razem tabela A: 30 wierszy (21 stron merytorycznych + 8 formularzy + /call).

Tabela B — strony problematyczne (kontrolnie, 2026-08-26):

URLHTTPKomentarz
/promocje500„Cannot read properties of null (reading 'title')"
/promocje/2-urodziny-convertere (+ pozostałe slugi z content/5.promocje)500to samo; 7 plików promocji w repo
/dla-kogo i /dla-kogo/{chory,gornik,senior,sportywiec}500to samo
/dolegliwosci/{id} — 64 URL-e (id 34–170, m.in. 100 bezsenność, 116 ból, 119 ból stawów, 34 łuszczyca)301 → /reguła sendRedirect(event,'/',301)

Razem zweryfikowanych URL-i w tabelach A+B: 100+ (30 w tabeli A + 5 promocje + 5 dla-kogo + 64 dolegliwości + /promocje). Wszystkie statusy z dnia 2026-08-26.


4. Audyt techniczny (szczegóły)

ObszarWynikDowód / przyczyna w kodzie
HTTPSOK301 z portu 80; certyfikaty ważne (curl bez ostrzeżeń)
www duplikathttps://www.convertere.pl/ → 200, bez 301; brak reguły przekierowania — konfig nginx na VPS, poza repo
robots.txt❌ 404brak pliku w public/ i brak modułu @nuxtjs/robots w nuxt.config.ts
sitemap.xml❌ 404 (6 wariantów)brak modułu @nuxtjs/sitemap w package.json; routeRules: {'/**': {prerender: true}} nie generuje sitemap
Canonical⚠️ 3/31ustawiany tylko przez useSeoMeta w pages/edukacja/index.vue, pages/voucher/index.vue, pages/call/index.vue; catch-all pages/[...slug].vue, pages/index.vue itd. — brak
Hreflangbrak; niepotrzebne przy serwisie 1-języcznym, ale lang musi być pl
<html lang>enapp.vue (linie 24–26): htmlAttrs: { lang: 'en' } — globalny atrybut; wyjątek /call (strona własny override)
JSON-LD❌ 0 blokówżadna strona nie generuje application/ld+json; brak Organization/LocalBusiness/Service/FAQ
og:image (OG)⚠️bazowy /__og-image__/image/og.png → 200 (46 KB, 2026-08-26 — poprawa vs v1); per-strona (/edukacja/og.png, /voucher/og.png) → 404; meta og:image brak na /edukacja i /voucher
Kompresja⚠️ gzip TAK / brotli NIEnagłówek Content-Encoding: gzip; z Accept-Encoding: br — brak
TTFB⚠️ 0,16–0,78 szmienny; najwolniejszy / i /edukacja (~0,7 s) — brak cache na CDN/nginx
HSTS❌ brakbrak Strict-Transport-Security
Cache-Control❌ brakbrak nagłówka; statyczne assety raczej cache'owane przez nginx, HTML nie
404-ka✔ poprawnanieistniejące ścieżki → HTTP 404 + pełny HTML; przez pages/[...slug].vue brak pliku content
500-ki❌ 3 grupy/promocje, /promocje/*, /dla-kogo/* — crash SSR (niżej „Diagnoza")
API /api/tags❌ 500„Module did not self-register: ... better-sqlite3.node" — moduł natywny niezgodny w .output; wpływa na /dolegliwosci i testiomonials (puste listy)
Favicon/favicon.ico (200, ICO)
viewportapp.vue — meta viewport obecne
noindex⚠️ brakformularze, /call, /dziekuje — brak noindex (indexowalne bez wartości)
Prerender⚠️ częściowyrouteRules: {'/**': {prerender: true}} — strony dynamiczne (formularze, API) nie prerenderowane; treść SSR OK

Najważniejsze techniczne wnioski:

  1. Brak robots.txt + sitemap.xml + canonicali = boty nie mają mapy, strony nie sygnalizują wersji kanonicznej — indeksacja jest przypadkowa.
  2. 3 grupy 500 (promocje, dla-kogo) i 64 ślepe 301 (dolegliwości) = istniejąca treść/struktura jest w Google niedostępna.
  3. lang=en i 0 JSON-LD — serwis nie komunikuje ani języka, ani swojej tożsamości lokalnej (firma, adres, telefon) w sposób zrozumiały dla wyszukiwarki.

5. On-page (scan tytułów, meta desc, H1–H3, alt)

Tytuły — długości i duplikaty:

WzorzecGdzieProblem
„X - Convertere - odzyskaj zdrowie"~15 stronmonotonia, zero fraz lokalnych/produktowych
„Formularz - Convertere - odzyskaj zdrowie"8 formularzyidentyczny tytuł ×8
„Kompendium Medyczne — ..."/edukacja79 zn. — ponad zalecane ~60
**brak <title>**/dziekujestrona bez tytułu w ogóle (wykryte w HTML)

Meta descriptions: brakuje na: /dolegliwosci, 4 podstrony /edukacja/* (normobaria, wodor, pemf, synergia), 8 formularzy, /dziekuje. Za krótkie: /partnerzy (22 zn.), /_2.jak-pomagamy/mwo (17), /_2.jak-pomagamy/gaz-browna (30), /_2.jak-pomagamy/pemf (34).

H1–H3: struktura poprawna (1×H1; H2/H3 sensowne) na stronach 200. H1 nie zawiera fraz lokalnych („Odkryj siłę regeneracji", „Regeneracja"...).

Alt: pojedyncze obrazy bez alt (hero na home) — drobne. Obrazy produktów mają alt zgodne z treścią (np. „komora normobaryczna").

Frazy kluczowe w treści (liczność, z widocznego tekstu):

Fraza//edukacja/voucher/_2.jak-pomagamy/komora_normobaryczna
normobaria2954
komora hiperbaryczna0000
hiperbaria0100
pemf31150
wodor4312

Wniosek on-page: strona „opowiada o regeneracji", ale nie używa języka, którym szukają klienci („komora hiperbaryczna", „komora tlenowa", „hiperbaria cena", „normobaria Żory") — te frazy nie występują nawet raz w całości serwisu. To największa luka on-page.


6. Treść i Editorial Gap

Jakość istniejącej treści: język naturalny, dobra typografia; /edukacja (1404 słowa, 10+ źródeł PubMed) — poziom long-form godny wzorca; oferty (/voucher, home Cennik) mają CTA telefoniczne. Słabe strony: strony produktów istnieją wyłącznie pod brzydkimi URL-ami /_2.jak-pomagamy/* (niedostępne z nawigacji), brak landingów cenowych, brak fraz lokalnych, brak FAQ schema (FAQ jest na /voucher i /dla-kogo, ale bez JSON-LD).

Editorial gap — fraz (dla których jest zapotrzebowanie, a strona ich nie obsługuje):

Noindex/niewartościowe: formularze (8), /call, /dziekuje — do wykluczenia z indeksu.


7. Lokalne SEO

Dane NAP (obecne w treści, spójne):

Co jest: dane NAP w treści i w linku Google Maps w stopce; widget Trustindex z opiniami; strona /contact na home („Jak dojechać?").

Czego nie ma (do zrobienia):

8. Konkurencja (web research, 2026-08-26)

KonkurentLokalizacja / modelTitle (home)canonicalsitemaprobotsUwagi
tlenoterapiamedidiet.plŻorynie odpowiada z env badawczego (000) — sprawdzić ręcznie
tlenuzdrawia.plPL / Silesia„TLENoterapia \KOMORA HIPERBARYCZNA"302ma cennik public
normobaric.com.plOsielsk (k. Bydgoszczy)„Komora tlenowa w Osielsku - Regeneracja i Relax"301cennik public (komora tlenowa)
normoterapia.plPL (prod.)„Komora normobaryczna - Cena 2026 - Normobaria"301silna fraza „cena 2026"
komora-normobaryczna.comPL„Normobaria \Terapia..."✖ brak301brak canonical, ale SEO-owe slugi
oxomedica.plPoznań/Biedrusko„Medyczna Komora Hiperbaryczna Poznań Biedrusko"200medyczny cennik, pakiety
prolifemc.pl (artykuł)PL„Komora hiperbaryczna cena - Ile kosztuje sesja..."403*403*content-marketing o cenach
tlenowa.plLublin„Magia Tlenu" (H1: Komora Hiperbaryczna Lublin)404

\ prolifemc.pl blokuje curl (403) — dla ludzi dostępny.*

3 luki marketingowe wobec konkurencji:

  1. Nikt nie jest „lokalny z produktem" w Żorach/Rybniku/Jastrzębiu: żaden konkurent nie ma landingów „komora hiperbaryczna Żory" ani „normobaria Rybnik" (na Żory — tylko katalogi/booksy) → convertere.pl może być pierwszą stroną z lokalną semantyką w mieście.
  2. Ceny: konkurencja chowa ceny w cennikach z tytułami „cena 2026" → convertere.pl nie ma żadnej strony z „cena" w tytule; cennik tylko na home pod CTA „Zadzwoń" — w SERP przegrywa z konkurencją o CTOR.
  3. Nikt nie łączy „regeneracji pooperacyjnej/porażeniowej" z komorą: convertere ma unikalny angle („regeneracja" jako trzecia kategoria — leczenie/rehabilitacja/regeneracja), ale NIE wysyła go w tytuły/descriptions i NIE zbudował landingów pod fazy powrotu (po operacji, po udarze).

9. Ruch bazowy, linki, autorytet


10. Diagnoza — problemy wg priorytetów (P0–P3)

Koszt naprawy: S = do 1 dnia, M = 1–5 dni, L = tygodnie.

P0 — blokery indeksacji i podstaw rankingu

#Problem (symptom)Przyczyna w kodzie (ścieżka w www_v3)Skutek dla GoogleKoszt
P0-1robots.txt 404, sitemap 404brak @nuxtjs/sitemap + @nuxtjs/robots: package.json (modules nie zawiera), nuxt.config.tsboty nie znają struktury; wolne/niepełne indeksowanieM
P0-2canonical tylko na 3 stronachuseSeoMeta z canonical tylko w pages/edukacja/index.vue, pages/voucher/index.vue, pages/call/index.vue; pozostałe strony (catch-all pages/[...slug].vue, pages/index.vue, landingi) — brakduplikaty treści (szczególnie www vs bez-www)S
P0-3www → 200 duplikatbrak reguły 301 w nginx (VPS 142.93.110.2; konfig poza repo)dzielenie PageRank, ryzyko indeksacji podwójnejM
P0-4lang="en" z treścią PLapp.vue linie 24–26: htmlAttrs: { lang: 'en' }Google traktuje stronę jako angielską — zły sygnał języka, słaba pozycja w PL SERP, problemy z dostępnościąS
P0-5/promocje, /promocje/*, /dla-kogo, /dla-kogo/{4}500 „Cannot read properties of null (reading 'title')"queryContent('/promocje/${name}') i queryContent('/dla-kogo/${name}') (pages/promocje/[...name].vue l.14, pages/dla-kogo/[...name].vue l.15) nie znajdują dokumentów: dane są pod katalogami content/5.promocje/* (wszystkie pliki z podkreślnikiem _ — ignorowane przez @nuxt/content) i content/_dla-kogo/* (podkreślnik = wykluczone); page.value.title → null → crash SSRcałe sekcje niedostępne dla użytkowników i botówM
P0-664 URL-e /dolegliwosci/{id}301 do /server/routes/dolegliwosci/[id].ts l.2: sendRedirect(event, '/', 301) (commit bebfd5d „przekierowanie wszystkich stron dolegliwości")unicestwiony cały długi ogon treści o doległościach (bezsenność, ból kolan, ból stawów, łuszczyca, stres...)M
P0-7brak JSON-LD wszędziebrak komponentów schema w pages/*.vue i app.vuebrak Organization/LocalBusiness/Service/FAQ — fundament rankingu lokalnego nie istniejeM
P0-8API /api/tags → 500moduł natywny better-sqlite3 niezgodny w .output („Module did not self-register") — server/api/tags.get.ts/dolegliwosci i listy testiomonials działają z pustymi danymi; brzydkie sygnały (błędy serwera)M

P1 — ważne (widoczność, CTR, jakość)

#ProblemPrzyczyna / lokalizacjaKoszt
P1-1og:image zepsuty na /edukacja i /voucher (meta brak), per-strona og.images 404nuxt-og-image per-route nie generowany/dostępność; pages/edukacja/index.vue i pages/voucher/index.vue bez skutecznego ogImageS–M
P1-2Duplikaty tytułów 8× „Formularz..."; brak meta desc na formularzach i podstronach /edukacja/*; brak <title> na /dziekujepages/formularz/[form].vue — titleTemplate domyślny; podstrony /edukacja/* serwowane przez catch-all pages/[...slug].vue bez frontmatter descriptionS
P1-3formularze (8), /call, /dziekuje — indexowalne bez wartościbrak definePageMeta({ robots: 'noindex, nofollow' }) (jest tylko na stronie promocji/dla-kogo)S
P1-4Linkowanie wewnętrzne martwe: home → tylko /regeneracja, /partnerzy; /voucher: 0 linków wewnętrznych; produkty (_2.jak-pomagamy/*) nielinkowane; karty „Jak pomagamy " z home prowadzą to: '/'content/1.index.ymlfeatures.items[].to: '/' (tymczasowe, niedopracowane); nawigacja budowana przez fetchContentNavigation w app.vue wyklucza podkreślnikowe katalogiS–M
P1-5dolegliwości w treści istnieją ale niedostępne (P0-6) — przywrócić zamiast 301patrz P0-6M

P2 (jakość, szybkość)

P3 (rozwój, autorytet)


11. PLAN 10x — strategia wzrostu widoczności

Cel: 10-krotny wzrost ruchu organicznego w 12–18 miesięcy. Droga: (1) odblokować indeksację, (2) obsadzić frazy, na których nie ma lokalnej konkurencji, (3) zbudować autorytet lokalny + tematyczny. Wszystkie kroki są wykonalne bez przepisywania strony (repo www_v3, Nuxt; deploy przez istniejący pipeline).

Faza 0 — fundament techniczny (tydzień 1–2) — „zrób dziś/jutro" część A

Quick wins (do 1 dnia, każde):

  1. **lang="pl"** — app.vue, w useHead: htmlAttrs: { lang: 'pl' } (zamiast 'en').
  2. robots.txt — dodać public/robots.txt: User-agent: * + Sitemap: https://convertere.pl/sitemap.xml; albo zainstalować @nuxtjs/robots.
  3. sitemap.xml — zainstalować @nuxtjs/sitemap (yarn add @nuxtjs/sitemap) i dodać do modules w nuxt.config.ts; exclude: /_formularz/*, /call, /dziekuje, /_2.jak-pomagamy/* (do decyzji), /promocje* (kandydat 301).
  4. noindex dla utility: definePageMeta({ robots: 'noindex, nofollow' }) w pages/formularz/[form].vue, pages/call/index.vue, pages/dziekuje-za-zlozenie-zamowienia.vue.
  5. JSON-LD Organization + LocalBusiness — dodać składnik SeoJsonLd.vue i załączyć w app.vue (ogólne dane) + per-stronę MedicalBusiness/HealthClub; dane NAP: wyżej (Żory, 660 987 499, koordynaty 50.0412/18.7181, godziny otwarcia).
  6. **Fix /dla-kogo** — przenieść content/_dla-kogo/*.yml do content/dla-kogo/*.yml (usunąć podkreślnik) LUB zmienić ścieżki zapytań w pages/dla-kogo/[...name].vue na /_dla-kogo/${name}; równolegle naprawić page.value.title guard (null-check).
  7. **Fix /promocje** — pliki w content/5.promocje/* mają nazwy z podkreślnikiem (np. _2-urodziny-convertere-a.yml) → zmienić na 2-urodziny-convertere-a.yml (bez _, z przedrostkiem liczbowym dla kolejności wg @nuxt/content) i dodać index.md/landing; NIE linkować do 301; stare URL-e → 301 do nowych.
  8. Canonical globalny — w app.vue/useHead dodać canonical generowany z route.path (base https://convertere.pl) + 301 www→bez-www na nginx.
  9. **Naprawa 64 /dolegliwosci/{id}** — usunąć regułę w server/routes/dolegliwosci/[id].ts (lub git-revert commita bebfd5d); strony dolegliwości wrócą jako indexable (content: nast.: content/4.dolegliwosci/{id}.yml i opinie z DB). Decyzja biznesowa: przywrócić (rekomendacja) albo trzymać 301 i zbudować nowe slugowe wersje (zob. Faza 2).
  10. **Fix /api/tags (500)** — przebudowa .output (reinstall better-sqlite3 dla platformy produkcyjnej) — naprawia /dolegliwosci i testiomonials.
  11. Błędy 500 na /edukacja/normobaria etc. — dodać description frontmatter do content/edukacja/{normobaria,wodor,pemf,synergia}.md (catch-all je renderuje) LUB pozamykać je noindex, jeśli mają być tylko sekcjami /edukacja (decyzja: zostawiamy jako samodzielne strony — mają 400–550 słów, do wzmocnienia).
  12. HSTS + Cache-Control + brotli — nginx (VPS 142.93.110.2): add_header Strict-Transport-Security, gzip_static/brotli_static, cache HTML (risk-cache 10 min).

Wynik fazy 0: strona z poprawnym językiem, robots+sitemap, canonicalami, JSON-LD, bez 5xx w kluczowych ścieżkach, nieindeksowane utility, przywrócona domena dolegliwościowa. Czas: ok. 1–2 tygodnie pracy deweloperskiej (zależy od dostępu do VPS).


Faza 1 — mapa treści: 15–20 stron pod frazy (od tygodnia 2)

Zasady każdej strony: 800–1500 słów, 1 H1 z frazą, meta description 120–155 zn., dedykowany title (50–60 zn.), 2–4 linki wewnętrzne (do /edukacja, home, cennik), FAQ + schema FAQPage, CTA „Zadzwoń: 660 987 499", linki PubMed (klikalne). Wolumeny: brak danych z narzędzi — podane szacunki to ocena ekspercka (faza handlowa), do weryfikacji w GSC/Google Keyword Planner; frazy niszowe w branży mają typowo setki–niskie tysiące wyszukiwań/mies. w skali PL.

#Strona (slug)Frazy doceloweTypPUzasadnienie
1/normobarianormobaria, komora normobaryczna Żorylanding (pillar produktowy)P0istnieje treść (500 słów) pod zepsutym URL-em; przenieść z /_2.jak-pomagamy/komora_normobaryczna — ładny slug
2/komora-hiperbarycznakomora hiperbaryczna, hiperbarialanding pillarP0fraza bazowa całej branży; dziś 0 wystąpień w serwisie
3/komora-hiperbaryczna-cenakomora hiperbaryczna cena, ile kosztuje sesjaartykuł cennikowy (money)P0konkurencja ma cenniki „cena 2026"; PL szuka przed tel.
4/normobaria-cenanormobaria cena, ile kosztuje sesja normobariaartykuł cennikowyP0cena 160 zł/90 min jest na home — przenieść do dedykowanej strony z FAQ
5/komora-hiperbaryczna-zorykomora hiperbaryczna Żorylanding lokalnyP0miasto 90 tys. mieszkańców — SERP lokalna bez konkurencji (tylko katalogi)
6/komora-hiperbaryczna-rybnikkomora hiperbaryczna Rybnik / Jastrzębie / Wodzisławlanding lokalny (radius 30 km)P1obsadzenie geografii okolic Żor
7/normobaria-zorynormobaria Żorylanding lokalnyP1wariant lokalny
8/regeneracja-po-operacjiregeneracja po operacji, po endoprotezieartykuł/landing pillarP1angle regeneracyjny jest unikalny — obsadzić „rehabilitacja" komplementarnie
9/regeneracja-po-zlamaniuszybki zrost kości, regeneracja po złamaniulandingP1plan oferty w repo (oferta-program-szybkiego-zrostu-kosci.md) — przepisać
10/gojenie-rangojenie ran poop, tlen w leczeniu ranlandingP1plan w repo (oferta-program-zamkniecia-rany.md); silne PubMed tło
11/powrot-po-udarzerehabilitacja po udarze, powrót po udarzelandingP1plan w repo (oferta-program-powrotu-po-udarze.md)
12/pemfterapia PEMF, PEMF cenalanding produktP1treść jest (_2.jak-pomagamy/pemf, edukacja/pemf) — zlać w 1 stronę
13/gaz-brownagaz Browna, tlen wodórlanding produktP2treść jest (_2.jak-pomagamy/gaz-browna)
14/mwoMWO Lakhovsky, oscylator Lakhovsky'egolanding produktP2treść jest (_2.jak-pomagamy/mwo)
15/hocattHOCATT, sauna ozonowa Wolnalanding produktP2treść jest (_2.jak-pomagamy/sauna-ozonowa, 838 słów)
16/wodor-molekularnywodór molekularny, inhalacje wodorulanding produktP2content edukacja/wodor
17/dolegliwosci/bezsennosc (+ 5–10 najważniejszych: ból kolan, ból stawów, stres, bezsenność, zapalenia zatok)bezsenność normobaria; ból kolan leczenie wspomagające...strony dolegliwości (odtworzone, slugami)P1odtworzyć P0-6 z content: slugi zamiast id; treść: yml + opinie z DB
18/opinieopinie o normobarze Żorystrona recenzjiP1agregacja + schema Review; wspiera lokalne SEO i CTR
19/jak-dojechacdojazd: Żory (parking), mapalokalna mikrostronaP2wzmocnienie pack lokalnego — odpowiedzi na pytania
20/sesja-nocnasesja nocna komora, nocna regeneracjaoferta (800 zł)P2cennik istnieje na home — samodzielna strona konwersji

Kolejność wdrożenia: 1–5 (P0) → 6–11 (P1) → 12–20 (P2–P3). To daje ~14 stron w fazie 1 (miesiące 1–3) i 6 w fazie 2 (miesiące 3–6); potem blog edukacyjny (2–4 artykuły/mies, kategorie wg fraz z Editorial Gap). Każdy landing = wariant zgodny z prawem (medyczny disclaimer: „terapia wspomagająca, nie zastępuje leczenia").

Reset nawigacji i linkowania: po fazie 0/1 — nawigacja górna: Normobaria (landing), Cennik (home#cennik), Dolegliwości, Edukacja, Opinie; stopka: produkty, lokalizacja, kontakt; sektor „Jak pomagamy" na home (content/1.index.yml features) z linkami to: '/normobaria', '/pemf', '/wodor-molekularny', '/hocatt', '/mwo', '/gaz-browna' zamiast '/'.


Faza 2 — lokalne SEO, autorytet, linkbuilding (miesiące 2–6)

  1. Google Business Profile (CEO — wymagany dostęp do konta): pełny profil — kategorie („Centrum medyczne/SPA? — usługi tlenoterapii"), usługi (normobaria, PEMF, inhalacje wodorowe, HOCATT, MWO), godziny, zdjęcia (komora, wnętrze, parking), posty (promocje, turnusy), Q&A, link do strony + UTM. Weryfikacja i wizualna spójność NAP z JSON-LD.
  2. Wizytówki/katalogi lokalne (linki zewnętrzne, naturalne): miastozory.pl (katalog firm), zoryinfo.pl, rybnik.com.pl, tuzory.pl, booksy (wizytówka płatna/rezerwacje), findhealthclinics.org; zgłosić profil do katalogu certyfikowanych normobarii na normobaria.org.pl (E-E-A-T + link branżowy).
  3. Cennikowe aggregatory (kb.pl, tlenoterapia-hiperbaryczna ceny): opublikować „Ile kosztuje normobaria w Żorach" i uzyskać link/cytowanie z kb.pl (200 OK).
  4. Digital PR / lokalne media: materiały „regeneracja po operacji — dlaczego sportowcy wracają szybciej", współpraca z klinikami ortopedycznymi (traumadent.pl — już partner), szkoły i lokalne jednostki samorządowe; newslettery lokalnych portali.
  5. E-E-A-T: strona „O nas" z zespołem (kwalifikacje, operatorzy), stopka z pełnym NAP + regulamin/RODO, autorzy artykułów w /edukacja (About/Person schema), praktyki: daty aktualizacji treści medycznych.
  6. Autorytet tematyczny: hub /edukacja z kategoriami (normobaria, wodór, PEMF, regeneracja, dolegliwości); 2–4 artykuły/mies; backlinki z PubMed-cementarnych stron (np. Wikipedia pl:Normobaria — dopracować sekcję z listą normobarii w PL).

Faza 3 — techniczne dalsze (miesiące 3–6)

KPI i mierzenie (założenia jawnie szacunkowe — bez GSC brak baseline'u)

KPIBaseline (2026-08)Cel 6 mies.Cel 12–18 mies. (10x)Źródło
URL-e w indeksie GSCbrak danych (prawd. < 30)40–6080–120GSC
Ruch organiczny/mies.brak danych (do 4 tyg pomiaru)+200–400%10x od baselineGSC/GA4
Frazy top-10brak10–15 fraz40–60 frazGSC
„komora hiperbaryczna Żory" TOP3brak12 miesTOP3GSC
Opinie Googlebrak danych50100 (4,8★+)GBP
Konwersje (tel+/formularz)brak danych+ po instalacji śledzenia10xAckee/GA4

Prognoza 10x — jak to osiągnąć matematycznie (szacunek jawny): 30 strony w indeksie × 0,2–0,5 zapytania w TOP3/dzień + obsługa fraz lokalnych (komora hiperbaryczna Żory — niska konkurencja) + 60–120 fraz w TOP10 = rząd wielkości 10x względem obecnego prawdopodobnego ruchu bliskiego zeru. Nie ma danych o obecnym ruchu — prognoza jest jakościowa: od „praktycznie 0 indeksowanych, bez sitemap i 3 grup błędów" do 30+ stron w pełni indeksowalnych i obsługujących popyt, przy niskiej konkurencji lokalnej.

Harmonogram (realistyczny)

FazaZakresCzas
F0technika (checklist wyżej)T+2 tyg
F15 landingów P0 + nawigacjaT+4 tyg
F1.56 landingów P1 (lokalne + regeneracyjne)T+8 tyg
F2GBP, katalogi, blog, 6 stron P2T+12–24 tyg
F3+Poptymizacja, KPI, cykliczne raportyT+6–12 mies

12. Ryzyka i zastrzeżenia

  1. Brak dostępu do GSC/GA4 — wszystkie liczby ruchu i wolumenów fraz są albo jawnie szacunkowe, albo oznaczone „brak danych". Baseline ustawić po 3–4 tygodniach od wdrożenia fazy F0.
  2. Wolumeny fraz — rynek niszowy; podane „setki–niskie tysiące wyszukiwań/mies." to szacunek ekspercki, nie dane z narzędzia. Weryfikacja: Google Keyword Planner / GSC w fazie 1.
  3. Branża medyczna — treści muszą przestrzegać granic komunikacji (terapia wspomagająca, nie obietnice lecznicze); każdy artykuł z przypisami PubMed i datą aktualizacji; ewentualne zgłoszenia UOKiK/wizerunkowe — unikać fraz „leczy".
  4. Błędy środowiskowe — API /api/tags 500 i ograniczenia PSI wynikają z bieżącego środowiska; po naprawie (deploy + rebuild .output) powtórzyć testy.
  5. Konkurencja — część graczy (oxomedica, normoterapia.pl) ma budżety i cenniki; przewaga lokalna w Żorach/Rybniku i angle „regeneracja" są trudne do skopiowania w krótkim czasie.
  6. Ryzyko wdrożeniowe — zmiany są w 1 repo (www_v3) + konfig nginx poza repo; przed deployem przestrzegać dyscypliny branchów (main vs production) udokumentowanej w skillu convertere-www-v3 (nadpisanie nowszej strony starym branch = cofnięcie SEO).

13. Podsumowanie

Convertere.pl ma solidny fundament technologiczny (Nuxt 3, SSR, szybkie odpowiedzi, gzip) i unikalną treść edukacyjną (/edukacja, 10+ PubMed) — ale całość jest niewidoczna dla Google z 8 powodów (P0-1..P0-8): brak robots/sitemap, canonicali, zły język strony, błąd 5xx w 3 sekcjach serwisu, 64 ślepe 301 na dolegliwości i zerowy JSON-LD. Do tego frazy biznesowe („komora hiperbaryczna") nie występują w serwisie ani razu, a konkurencja obsadza je cennikami „cena 2026".

Plan 10x jest wykonalny w 3 fazach: (F0) technika — 12 checklistowych zmian w kilkanaście dni roboczych; (F1) 11 landingów: produkty, ceny, lokalizacja (Żory/Rybnik), regeneracja pooperacyjna — kraina bez lokalnej konkurencji; (F2) GBP + katalogi + blog + 6 stron — autorytet. Realistyczna droga od „praktycznie 0 widoczności" do 30–80 indeksowanych stron i 10x ruchu w 12–18 miesięcy — bez fikcyjnych prognoz liczbowych do potwierdzenia pomiarem.


14. Źródła — Pliki (istniejące, absolutne ścieżki)

PlikRola w audycie
/root/convertere/audyty/seo-audit-convertere.mdaudyt v1 (baza, 2026-08-26)
/root/convertere/www_v3/nuxt.config.tsmoduły (brak sitemap/robots), routeRules, head
/root/convertere/www_v3/app.vuehtmlAttrs lang='en', favicon, viewport, Trustindex
/root/convertere/www_v3/package.jsonlista modułów (brak @nuxtjs/sitemap/@nuxtjs/robots)
/root/convertere/www_v3/pages/[...slug].vuecatch-all — rendering md (podstrony /edukacja/, /_2.jak-pomagamy/)
/root/convertere/www_v3/pages/promocje/[...name].vuequeryContent('/promocje/...') → 500
/root/convertere/www_v3/pages/dla-kogo/[...name].vuequeryContent('/dla-kogo/...') → 500
/root/convertere/www_v3/pages/dolegliwosci/[id].vuestrona dolegliwości (obecnie 301)
/root/convertere/www_v3/server/routes/dolegliwosci/[id].ts**sendRedirect(event,'/',301)** — przyczyna 64 301
/root/convertere/www_v3/server/api/tags.get.tsAPI /api/tags (500 better-sqlite3)
/root/convertere/www_v3/content/5.promocje/*.yml7 plików promocji (nazwy z podkreślnikami → 500)
/root/convertere/www_v3/content/_dla-kogo/{chory,gornik,senior,sportywiec}.ymltreści dla-kogo (500)
/root/convertere/www_v3/content/1.index.ymlhome: NAP, cennik, features to:'/'
/root/convertere/www_v3/content/_choroby/tagi.json64 tagi dolegliwości (id 34–170)
/root/convertere/www_v3/content/edukacja/*.mdtreść edukacyjna (+ zrodla.md z PubMed)
/root/convertere/www_v3/content/_2.jak-pomagamy/*.md5 produktów (200, ale poza nav)
/root/convertere/www_v3/content/4.dolegliwosci/{100,116,119}.yml3 karty dolegliwości (reszta tylko w DB)
/tmp/seo-audit/pages/*.htmlkopie HTML z audytu v1
/tmp/seo-v2/pages/*.html, /tmp/seo-v2/status.json, /tmp/seo-v2/meta.jsonkopie HTML + metryki z 2026-08-26 (robocze)

15. Źródła — Linki URL (wszystkie zweryfikowane curl 2026-08-26; status przy każdym)

Zewnętrzne (2xx w dniu weryfikacji)

Zewnętrzne do WERYFIKACJI ręcznej (nie zweryfikowane tym środowiskiem)

Wewnętrzne (r.10s.pl)


Raport wygenerowany na zlecenie CEO (karta t_2c000753, board convertere). Wszystkie statusy HTTP i linki zweryfikowane 2026-08-26. Pliki robocze (parts) usunięte po utworzeniu reportu.