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
- Status HTTP + nagłówki:
curl -I/curl -wna każdy URL (kod, TTFB, redirect, kompresja). - Meta dane (title, description, canonical, robots, H1, og:image, JSON-LD, lang): parsowanie zapisanych kopii HTML skryptem Python.
- Mapa URL: wyprowadzona z plików
content/ipages/repo (queryContent(...)), potwierdzona curl na produkcji. - Linkowanie wewnętrzne: ekstrakcja
hrefz zapisanych kopii HTML stron. - Analiza kodu:
nuxt.config.ts,app.vue,pages/*.vue,server/routes/*.ts,content/**. - PSI/Lighthouse: wyszukiwanie Pagespeed API (bez klucza) — odpowiedź 429 (Quota exceeded) → w raporcie: „brak danych do weryfikacji w PSI, do sprawdzenia w PageSpeed Insights po uzupełnieniu API".
- Konkurencja: DuckDuckGo (endpoint HTML) + dedykowane curl-healthchecks domen konkurencji.
- Ograniczenia: brak dostępu do Google Search Console i GA4 — dane o ruchu/wolumenach albo z jawnych źródeł, albo oznaczane jako „brak danych".
Wzorzec weryfikacji tabeli URL: wszystkie statusy sprawdzone curl w dniu 2026-08-26 (kod HTTP na produkcji, bez follow).
2. Metryki ogólne
| Metryka | Wynik (2026-08-26) |
|---|---|
| Strona główna HTTP | 200 |
| HTTP → HTTPS | 301 (nginx) |
| www → bez-www | 200 bez 301 — duplikat treści |
| robots.txt | 404 |
| sitemap.xml (+5 wariantów) | 404 (także sitemap_index, sitemap-index, server-sitemap, sitemaps, .xml.gz) |
| Moduły SEO w Nuxt | BRAK (@nuxtjs/sitemap, @nuxtjs/robots nie w package.json) |
| Canonical | tylko 3 strony z 31 (edukacja, voucher, call) |
<html lang> | **lang="en"** na prawie wszystkich stronach (treść PL) |
| JSON-LD | 0 bloków na wszystkich stronach |
| og:image | bazowy /__og-image__/image/og.png → 200 (46 KB); per-strona /edukacja/og.png itd. → 404 |
| Kompresja | gzip: TAK; brotli: NIE |
| TTFB (typ.) | 0,16–0,78 s (home ~0,67 s) |
| HSTS | brak |
| Cache-Control | brak |
| Favicon | OK (/favicon.ico) |
| 404-ka | pełny HTML z H1 „404" — zachowanie dobre |
| 500-ki | /promocje, /dla-kogo/* — błąd renderu „Cannot read properties of null (reading 'title')" |
API /api/tags | 500 — „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 HTML | 2 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">.
| # | URL | Tytuł | Meta desc | Canonical | H1 / uwagi | |
|---|---|---|---|---|---|---|
| 1 | / | Convertere - Szybka regeneracja (31 zn.) | 63 zn. | brak | „Odkryj siłę regeneracji" | |
| 2 | /regeneracja | Regeneracja - Convertere - odzyskaj zdrowie | 131 zn. | brak | „Regeneracja" | |
| 3 | /regeneracja/leczenie | Regeneracja, a leczenie - Convertere... | 101 zn. | brak | poprawna treść porównawcza | |
| 4 | /regeneracja/rehabilitacja | Regeneracja, a rehabilitacja - Convertere... | 101 zn. | brak | ||
| 5 | /partnerzy | Partnerzy - Convertere - odzyskaj zdrowie | 22 zn. (za krótkie) | brak | „Partnerzy" | |
| 6 | /partnerzy/diagnostyka | Diagnostyka - Convertere... | 103 zn. | brak | ||
| 7 | /partnerzy/leczenie | Leczenie - Convertere... | 120 zn. | brak | ||
| 8 | /partnerzy/rehabilitacja | Rehabilitacja - Convertere... | 132 zn. | brak | jedyna strona z frazą „komora hiperbaryczna" (×2) | |
| 9 | /edukacja | „Kompendium Medyczne — ..." (79 zn., za długie) | 121 zn. | TAK | najbogatsza treść: 1404 słowa | |
| 10 | /edukacja/normobaria | Normobaria - Convertere - odzyskaj zdrowie | brak | brak | dok. layout, 511 słów | |
| 11 | /edukacja/wodor | Wodór Molekularny H₂ - Convertere... | brak | brak | 550 słów | |
| 12 | /edukacja/pemf | PEMF - Convertere... | brak | brak | 520 słów | |
| 13 | /edukacja/synergia | Synergia trzech terapii - Convertere... | brak | brak | 400 słów | |
| 14 | /voucher | „Turnus Regeneracyjny z Voucherem −80 zł \ | Convertere Żory" | 134 zn. (dobre) | TAK | oferta + FAQ; brak og:image |
| 15 | /dolegliwosci | Dolegliwości - Convertere... | brak | brak | 116 słów; lista tagów pusta (API 500) | |
| 16 | /_2.jak-pomagamy/komora_normobaryczna | Normobaria - Convertere... | 240 zn. | brak | 518 słów — produkt bez linków | |
| 17 | /_2.jak-pomagamy/gaz-browna | Wodór molekularny - Convertere... | 30 zn. | brak | 498 słów | |
| 18 | /_2.jak-pomagamy/mwo | Oscylator Lakhowsky'ego - Convertere... | 17 zn. | brak | 470 słów | |
| 19 | /_2.jak-pomagamy/sauna-ozonowa | HOCATT - Convertere... | 131 zn. | brak | 838 słów | |
| 20 | /_2.jak-pomagamy/pemf | PEMF - Convertere... | 34 zn. | brak | 610 słów | |
| 21 | /call | „Zadzwoń do Convertere — 660 987 499" | 64 zn. | TAK | lang=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) | brak | brak | formularze bez desc, indexowalne | |
| 30 | /dziekuje-za-zlozenie-zamowienia | **BRAK <title>** | brak | brak | 110 słów, strona podziękowań |
Razem tabela A: 30 wierszy (21 stron merytorycznych + 8 formularzy + /call).
Tabela B — strony problematyczne (kontrolnie, 2026-08-26):
| URL | HTTP | Komentarz |
|---|---|---|
/promocje | 500 | „Cannot read properties of null (reading 'title')" |
/promocje/2-urodziny-convertere (+ pozostałe slugi z content/5.promocje) | 500 | to samo; 7 plików promocji w repo |
/dla-kogo i /dla-kogo/{chory,gornik,senior,sportywiec} | 500 | to 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)
| Obszar | Wynik | Dowód / przyczyna w kodzie |
|---|---|---|
| HTTPS | OK | 301 z portu 80; certyfikaty ważne (curl bez ostrzeżeń) |
| www duplikat | ❌ | https://www.convertere.pl/ → 200, bez 301; brak reguły przekierowania — konfig nginx na VPS, poza repo |
| robots.txt | ❌ 404 | brak 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/31 | ustawiany 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 |
| Hreflang | — | brak; niepotrzebne przy serwisie 1-języcznym, ale lang musi być pl |
<html lang> | ❌ en | app.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 NIE | nagłówek Content-Encoding: gzip; z Accept-Encoding: br — brak |
| TTFB | ⚠️ 0,16–0,78 s | zmienny; najwolniejszy / i /edukacja (~0,7 s) — brak cache na CDN/nginx |
| HSTS | ❌ brak | brak Strict-Transport-Security |
| Cache-Control | ❌ brak | brak nagłówka; statyczne assety raczej cache'owane przez nginx, HTML nie |
| 404-ka | ✔ poprawna | nieistnieją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) |
| viewport | ✔ | app.vue — meta viewport obecne |
| noindex | ⚠️ brak | formularze, /call, /dziekuje — brak noindex (indexowalne bez wartości) |
| Prerender | ⚠️ częściowy | routeRules: {'/**': {prerender: true}} — strony dynamiczne (formularze, API) nie prerenderowane; treść SSR OK |
Najważniejsze techniczne wnioski:
- Brak robots.txt + sitemap.xml + canonicali = boty nie mają mapy, strony nie sygnalizują wersji kanonicznej — indeksacja jest przypadkowa.
- 3 grupy 500 (promocje, dla-kogo) i 64 ślepe 301 (dolegliwości) = istniejąca treść/struktura jest w Google niedostępna.
- 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:
| Wzorzec | Gdzie | Problem |
|---|---|---|
| „X - Convertere - odzyskaj zdrowie" | ~15 stron | monotonia, zero fraz lokalnych/produktowych |
| „Formularz - Convertere - odzyskaj zdrowie" | 8 formularzy | identyczny tytuł ×8 |
| „Kompendium Medyczne — ..." | /edukacja | 79 zn. — ponad zalecane ~60 |
**brak <title>** | /dziekuje | strona 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 |
|---|---|---|---|---|
| normobaria | 2 | 9 | 5 | 4 |
| komora hiperbaryczna | 0 | 0 | 0 | 0 |
| hiperbaria | 0 | 1 | 0 | 0 |
| pemf | 3 | 11 | 5 | 0 |
| wodor | 4 | 3 | 1 | 2 |
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):
- „komora hiperbaryczna (cena, sesja, opinie)" — landing brak; konkurencja ma całe działy cennikowe.
- „normobaria (co to, ile kosztuje, przeciwwskazania)" — istnieje
content/edukacja/normobaria.md(200 pod catch-allem), ale URL jest poza nawigacją i bez meta desc. - „komora tlenowa" / „tlenoterapia" — brak.
- „regeneracja po operacji / urazie / złamaniu / udarze / zawale" — brak dedykowanych landingów (repo ma plany ofert —
oferta-program-szybkiego-zrostu-kosci.md,oferta-program-zamkniecia-rany.md,oferta-program-powrotu-po-udarze.md— nieopublikowane jako strony). - „gaz Browna", „MWO (oscylator Lakhovsky'ego)", „HOCATT", „PEMF", „sesja nocna" — produkty bez landingów cenowych.
- frazy lokalne: „komora hiperbaryczna Żory", „komora tlenowa Rybnik", „normobaria Śląsk", „komora hiperbaryczna Jastrzębie-Zdrój".
Noindex/niewartościowe: formularze (8), /call, /dziekuje — do wykluczenia z indeksu.
7. Lokalne SEO
Dane NAP (obecne w treści, spójne):
- Nazwa: Convertere (Normobaria)
- Adres: ul. Wyzwolenia 1, 44-240 Żory
- Telefon: +48 660 987 499
- Koordynaty (z linku Maps w
content/1.index.yml): 50.0412221, 18.7180766 - Godziny (z treści): rejestracja pon–pt 8–11 i 15–18; sesje pon–sob 8:00–18:00
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):
- JSON-LD LocalBusiness/HealthClub — zero (patrz diagnoza P0).
- Google Business Profile: brak możliwości weryfikacji bez dostępu do konta — do sprawdzenia przez CEO (profil istnieje wg mapy Google „Convertere Normobaria"; ocena/opinie/zdjęcia do uzupełnienia: kategorie, usługi, posty, Q&A, link do strony).
- Wizytówki lokalne: sprawdzić i uzupełnić: miastozory.pl (katalog firm — jest dedykowana strona „komora hiperbaryczna Żory" w katalogu), booksy.com (4 oferty komory w Żorach), findhealthclinics.org, tlenoterapia — portale śląskie (zoryinfo.pl, rybnik.com.pl, tuzory.pl).
- Frazy lokalne w tytułach/H1: dziś „Żory" tylko w tytule /voucher i w sekcji kontakt home; brak „Żory" w tytule home i brak całych landingów lokalnych.
- Opinie: strona ma agregator Trustindex (loader w
nuxt.config.tshead), ale brak strony „Opinie" w nawigacji i braku schema Review. Powiązany proces zbierania opinii (SMS po turnusie) — w repo są plany; do wdrożenia z targetem 50→100 opinii.
8. Konkurencja (web research, 2026-08-26)
| Konkurent | Lokalizacja / model | Title (home) | canonical | sitemap | robots | Uwagi | |
|---|---|---|---|---|---|---|---|
| tlenoterapiamedidiet.pl | Żory | — | — | — | — | nie odpowiada z env badawczego (000) — sprawdzić ręcznie | |
| tlenuzdrawia.pl | PL / Silesia | „TLENoterapia \ | KOMORA HIPERBARYCZNA" | ✔ | 302 | ✔ | ma cennik public |
| normobaric.com.pl | Osielsk (k. Bydgoszczy) | „Komora tlenowa w Osielsku - Regeneracja i Relax" | ✔ | 301 | ✔ | cennik public (komora tlenowa) | |
| normoterapia.pl | PL (prod.) | „Komora normobaryczna - Cena 2026 - Normobaria" | ✔ | 301 | ✔ | silna fraza „cena 2026" | |
| komora-normobaryczna.com | PL | „Normobaria \ | Terapia..." | ✖ brak | 301 | ✔ | brak canonical, ale SEO-owe slugi |
| oxomedica.pl | Poznań/Biedrusko | „Medyczna Komora Hiperbaryczna Poznań Biedrusko" | ✔ | 200 | ✔ | medyczny cennik, pakiety | |
| prolifemc.pl (artykuł) | PL | „Komora hiperbaryczna cena - Ile kosztuje sesja..." | ✔ | 403* | 403* | content-marketing o cenach | |
| tlenowa.pl | Lublin | „Magia Tlenu" (H1: Komora Hiperbaryczna Lublin) | ✔ | 404 | ✔ |
\ prolifemc.pl blokuje curl (403) — dla ludzi dostępny.*
3 luki marketingowe wobec konkurencji:
- 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.
- 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.
- 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
- Ruch: brak dostępu do GSC/GA4 — brak danych; po pierwszym miesiącu pomiaru ustawić baseline.
- site:convertere.pl: próba sprawdzenia przez DDG — 0 wyników z captcha/limitem (brak danych, do weryfikacji w GSC).
- Backliniki: brak danych z narzędzi; sygnały: footer NAP na Google Maps, link partnera traumadent.pl, publikatory Trustindex; formalnie do zbudowania wg planu.
- E-E-A-T: dobra baza (edukacja z PubMed), ale brak strony „O nas"/„Zespół"/kwalifikacje, brak autora artykułów, brak schematu Person/Organization — do uzupełnienia.
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 Google | Koszt |
|---|---|---|---|---|
| P0-1 | robots.txt 404, sitemap 404 | brak @nuxtjs/sitemap + @nuxtjs/robots: package.json (modules nie zawiera), nuxt.config.ts | boty nie znają struktury; wolne/niepełne indeksowanie | M |
| P0-2 | canonical tylko na 3 stronach | useSeoMeta 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) — brak | duplikaty treści (szczególnie www vs bez-www) | S |
| P0-3 | www → 200 duplikat | brak reguły 301 w nginx (VPS 142.93.110.2; konfig poza repo) | dzielenie PageRank, ryzyko indeksacji podwójnej | M |
| P0-4 | lang="en" z treścią PL | app.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 SSR | całe sekcje niedostępne dla użytkowników i botów | M |
| P0-6 | 64 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-7 | brak JSON-LD wszędzie | brak komponentów schema w pages/*.vue i app.vue | brak Organization/LocalBusiness/Service/FAQ — fundament rankingu lokalnego nie istnieje | M |
| P0-8 | API /api/tags → 500 | moduł 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ść)
| # | Problem | Przyczyna / lokalizacja | Koszt |
|---|---|---|---|
| P1-1 | og:image zepsuty na /edukacja i /voucher (meta brak), per-strona og.images 404 | nuxt-og-image per-route nie generowany/dostępność; pages/edukacja/index.vue i pages/voucher/index.vue bez skutecznego ogImage | S–M |
| P1-2 | Duplikaty tytułów 8× „Formularz..."; brak meta desc na formularzach i podstronach /edukacja/*; brak <title> na /dziekuje | pages/formularz/[form].vue — titleTemplate domyślny; podstrony /edukacja/* serwowane przez catch-all pages/[...slug].vue bez frontmatter description | S |
| P1-3 | formularze (8), /call, /dziekuje — indexowalne bez wartości | brak definePageMeta({ robots: 'noindex, nofollow' }) (jest tylko na stronie promocji/dla-kogo) | S |
| P1-4 | Linkowanie 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.yml — features.items[].to: '/' (tymczasowe, niedopracowane); nawigacja budowana przez fetchContentNavigation w app.vue wyklucza podkreślnikowe katalogi | S–M |
| P1-5 | dolegliwości w treści istnieją ale niedostępne (P0-6) — przywrócić zamiast 301 | patrz P0-6 | M |
P2 (jakość, szybkość)
- HSTS + Cache-Control + brotli w nginx (VPS) — M.
- CWV/PSI: brak danych — do weryfikacji po podpięciu API/PSI; TTFB 0,7 s na home — do poprawy przez cache HTML.
- Obrazy: część już .webp/cdn (docs.convertere.pl / DO Spaces); dodać wymiary i formaty
avifna hero. - Alt hero home.
P3 (rozwój, autorytet)
- Landingi cenowe i lokalne (patrz Plan 10x), linkbuilding lokalny, GBP, E-E-A-T (strona O nas, autorzy, opinie), ew. archetypy „normobaria.org.pl" (mapa certyfikowanych normobarii) — zarejestrować się i uzyskać link.
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):
- **
lang="pl"** —app.vue, wuseHead:htmlAttrs: { lang: 'pl' }(zamiast'en'). - robots.txt — dodać
public/robots.txt:User-agent: *+Sitemap: https://convertere.pl/sitemap.xml; albo zainstalować@nuxtjs/robots. - sitemap.xml — zainstalować
@nuxtjs/sitemap(yarn add @nuxtjs/sitemap) i dodać domoduleswnuxt.config.ts; exclude:/_formularz/*,/call,/dziekuje,/_2.jak-pomagamy/*(do decyzji),/promocje*(kandydat 301). - noindex dla utility:
definePageMeta({ robots: 'noindex, nofollow' })wpages/formularz/[form].vue,pages/call/index.vue,pages/dziekuje-za-zlozenie-zamowienia.vue. - JSON-LD Organization + LocalBusiness — dodać składnik
SeoJsonLd.vuei załączyć wapp.vue(ogólne dane) + per-stronęMedicalBusiness/HealthClub; dane NAP: wyżej (Żory, 660 987 499, koordynaty 50.0412/18.7181, godziny otwarcia). - **Fix
/dla-kogo** — przenieśćcontent/_dla-kogo/*.ymldocontent/dla-kogo/*.yml(usunąć podkreślnik) LUB zmienić ścieżki zapytań wpages/dla-kogo/[...name].vuena/_dla-kogo/${name}; równolegle naprawićpage.value.titleguard (null-check). - **Fix
/promocje** — pliki wcontent/5.promocje/*mają nazwy z podkreślnikiem (np._2-urodziny-convertere-a.yml) → zmienić na2-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. - Canonical globalny — w
app.vue/useHeaddodać canonical generowany zroute.path(basehttps://convertere.pl) + 301 www→bez-www na nginx. - **Naprawa 64
/dolegliwosci/{id}** — usunąć regułę wserver/routes/dolegliwosci/[id].ts(lub git-revert commita bebfd5d); strony dolegliwości wrócą jako indexable (content: nast.:content/4.dolegliwosci/{id}.ymli opinie z DB). Decyzja biznesowa: przywrócić (rekomendacja) albo trzymać 301 i zbudować nowe slugowe wersje (zob. Faza 2). - **Fix
/api/tags(500)** — przebudowa.output(reinstall better-sqlite3 dla platformy produkcyjnej) — naprawia /dolegliwosci i testiomonials. - Błędy 500 na /edukacja/normobaria etc. — dodać
descriptionfrontmatter docontent/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). - 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 docelowe | Typ | P | Uzasadnienie |
|---|---|---|---|---|---|
| 1 | /normobaria | normobaria, komora normobaryczna Żory | landing (pillar produktowy) | P0 | istnieje treść (500 słów) pod zepsutym URL-em; przenieść z /_2.jak-pomagamy/komora_normobaryczna — ładny slug |
| 2 | /komora-hiperbaryczna | komora hiperbaryczna, hiperbaria | landing pillar | P0 | fraza bazowa całej branży; dziś 0 wystąpień w serwisie |
| 3 | /komora-hiperbaryczna-cena | komora hiperbaryczna cena, ile kosztuje sesja | artykuł cennikowy (money) | P0 | konkurencja ma cenniki „cena 2026"; PL szuka przed tel. |
| 4 | /normobaria-cena | normobaria cena, ile kosztuje sesja normobaria | artykuł cennikowy | P0 | cena 160 zł/90 min jest na home — przenieść do dedykowanej strony z FAQ |
| 5 | /komora-hiperbaryczna-zory | komora hiperbaryczna Żory | landing lokalny | P0 | miasto 90 tys. mieszkańców — SERP lokalna bez konkurencji (tylko katalogi) |
| 6 | /komora-hiperbaryczna-rybnik | komora hiperbaryczna Rybnik / Jastrzębie / Wodzisław | landing lokalny (radius 30 km) | P1 | obsadzenie geografii okolic Żor |
| 7 | /normobaria-zory | normobaria Żory | landing lokalny | P1 | wariant lokalny |
| 8 | /regeneracja-po-operacji | regeneracja po operacji, po endoprotezie | artykuł/landing pillar | P1 | angle regeneracyjny jest unikalny — obsadzić „rehabilitacja" komplementarnie |
| 9 | /regeneracja-po-zlamaniu | szybki zrost kości, regeneracja po złamaniu | landing | P1 | plan oferty w repo (oferta-program-szybkiego-zrostu-kosci.md) — przepisać |
| 10 | /gojenie-ran | gojenie ran poop, tlen w leczeniu ran | landing | P1 | plan w repo (oferta-program-zamkniecia-rany.md); silne PubMed tło |
| 11 | /powrot-po-udarze | rehabilitacja po udarze, powrót po udarze | landing | P1 | plan w repo (oferta-program-powrotu-po-udarze.md) |
| 12 | /pemf | terapia PEMF, PEMF cena | landing produkt | P1 | treść jest (_2.jak-pomagamy/pemf, edukacja/pemf) — zlać w 1 stronę |
| 13 | /gaz-browna | gaz Browna, tlen wodór | landing produkt | P2 | treść jest (_2.jak-pomagamy/gaz-browna) |
| 14 | /mwo | MWO Lakhovsky, oscylator Lakhovsky'ego | landing produkt | P2 | treść jest (_2.jak-pomagamy/mwo) |
| 15 | /hocatt | HOCATT, sauna ozonowa Wolna | landing produkt | P2 | treść jest (_2.jak-pomagamy/sauna-ozonowa, 838 słów) |
| 16 | /wodor-molekularny | wodór molekularny, inhalacje wodoru | landing produkt | P2 | content 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) | P1 | odtworzyć P0-6 z content: slugi zamiast id; treść: yml + opinie z DB |
| 18 | /opinie | opinie o normobarze Żory | strona recenzji | P1 | agregacja + schema Review; wspiera lokalne SEO i CTR |
| 19 | /jak-dojechac | dojazd: Żory (parking), mapa | lokalna mikrostrona | P2 | wzmocnienie pack lokalnego — odpowiedzi na pytania |
| 20 | /sesja-nocna | sesja nocna komora, nocna regeneracja | oferta (800 zł) | P2 | cennik 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)
- 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.
- 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).
- Cennikowe aggregatory (kb.pl, tlenoterapia-hiperbaryczna ceny): opublikować „Ile kosztuje normobaria w Żorach" i uzyskać link/cytowanie z kb.pl (200 OK).
- 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.
- 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.
- 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)
- CWV: po PSI (podpięcie API) — optymalizacja LCP (hero images .webp/avif, preload), CLS (wymiary obrazów), TTFB (cache du HTML w nginx, brotli).
- Czyste URL-e: ładne slugi zamiast
/_2.jak-pomagamy/*i/_formularz/*(301). - Cache i pozycjonowanie: brotli_static/gzip_static na nginx,
immutabledla/_nuxt/*. - Monitoring: GSC (Errors — 5xx/404, pokrycie, zapytania), GA4 lub Ackee (tracker juz jest: stats.convertere.pl) — cele: telefoniczny, formularz, voucher.
KPI i mierzenie (założenia jawnie szacunkowe — bez GSC brak baseline'u)
| KPI | Baseline (2026-08) | Cel 6 mies. | Cel 12–18 mies. (10x) | Źródło |
|---|---|---|---|---|
| URL-e w indeksie GSC | brak danych (prawd. < 30) | 40–60 | 80–120 | GSC |
| Ruch organiczny/mies. | brak danych (do 4 tyg pomiaru) | +200–400% | 10x od baseline | GSC/GA4 |
| Frazy top-10 | brak | 10–15 fraz | 40–60 fraz | GSC |
| „komora hiperbaryczna Żory" TOP3 | brak | 12 mies | TOP3 | GSC |
| Opinie Google | brak danych | 50 | 100 (4,8★+) | GBP |
| Konwersje (tel+/formularz) | brak danych | + po instalacji śledzenia | 10x | Ackee/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)
| Faza | Zakres | Czas |
|---|---|---|
| F0 | technika (checklist wyżej) | T+2 tyg |
| F1 | 5 landingów P0 + nawigacja | T+4 tyg |
| F1.5 | 6 landingów P1 (lokalne + regeneracyjne) | T+8 tyg |
| F2 | GBP, katalogi, blog, 6 stron P2 | T+12–24 tyg |
| F3+P | optymizacja, KPI, cykliczne raporty | T+6–12 mies |
12. Ryzyka i zastrzeżenia
- 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.
- 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.
- 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".
- Błędy środowiskowe — API
/api/tags500 i ograniczenia PSI wynikają z bieżącego środowiska; po naprawie (deploy + rebuild .output) powtórzyć testy. - 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.
- 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)
| Plik | Rola w audycie |
|---|---|
/root/convertere/audyty/seo-audit-convertere.md | audyt v1 (baza, 2026-08-26) |
/root/convertere/www_v3/nuxt.config.ts | moduły (brak sitemap/robots), routeRules, head |
/root/convertere/www_v3/app.vue | htmlAttrs lang='en', favicon, viewport, Trustindex |
/root/convertere/www_v3/package.json | lista modułów (brak @nuxtjs/sitemap/@nuxtjs/robots) |
/root/convertere/www_v3/pages/[...slug].vue | catch-all — rendering md (podstrony /edukacja/, /_2.jak-pomagamy/) |
/root/convertere/www_v3/pages/promocje/[...name].vue | queryContent('/promocje/...') → 500 |
/root/convertere/www_v3/pages/dla-kogo/[...name].vue | queryContent('/dla-kogo/...') → 500 |
/root/convertere/www_v3/pages/dolegliwosci/[id].vue | strona 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.ts | API /api/tags (500 better-sqlite3) |
/root/convertere/www_v3/content/5.promocje/*.yml | 7 plików promocji (nazwy z podkreślnikami → 500) |
/root/convertere/www_v3/content/_dla-kogo/{chory,gornik,senior,sportywiec}.yml | treści dla-kogo (500) |
/root/convertere/www_v3/content/1.index.yml | home: NAP, cennik, features to:'/' |
/root/convertere/www_v3/content/_choroby/tagi.json | 64 tagi dolegliwości (id 34–170) |
/root/convertere/www_v3/content/edukacja/*.md | treść edukacyjna (+ zrodla.md z PubMed) |
/root/convertere/www_v3/content/_2.jak-pomagamy/*.md | 5 produktów (200, ale poza nav) |
/root/convertere/www_v3/content/4.dolegliwosci/{100,116,119}.yml | 3 karty dolegliwości (reszta tylko w DB) |
/tmp/seo-audit/pages/*.html | kopie HTML z audytu v1 |
/tmp/seo-v2/pages/*.html, /tmp/seo-v2/status.json, /tmp/seo-v2/meta.json | kopie 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)
- normobaria.org.pl — mapa certyfikowanych normobarii — 200 (dyrektywa branżowa + link; E-E-A-T)
- miastozory.pl — katalog firm: komora hiperbaryczna Żory — 200 (lokalny katalog — zgłosić profil)
- booksy.com — komora hiperbaryczna Żory (panel rezerwacji) — 200
- tlenuzdrawia.pl — cennik hiperbarii — 200 (konkurencja)
- normobaric.com.pl — cennik komory tlenowej — 200 (konkurencja)
- normoterapia.pl — komora normobaryczna: na co pomaga — 200 (konkurencja)
- oxomedica.pl — cennik tlenoterapii hiperbarycznej (Poznań) — 200 (konkurencja)
- komora-normobaryczna.com — normobaria (landing) — 200 (konkurencja)
- tlenowa.pl — cennik (Lublin) — 200 (konkurencja)
- kb.pl — cena komory normobarycznej (aggregator cen) — 200 (linkbuilding: cennikowe cytowanie)
- prolifemc.pl — „Komora hiperbaryczna cena" — 403 dla curl (blokada botów; dla ludzi OK) — konkurencja contentowa
- zoryinfo.pl — 200 (portal lokalny — digital PR)
- rybnik.com.pl — 403 dla curl (dla ludzi OK) — portal lokalny do PR
- tuzory.pl — 403 dla curl (dla ludzi OK) — portal lokalny do PR
- Normobaria — Wikipedia (PL) — 200 (wiki + kategoria do rozbudowy)
- PubMed — artykuł (PMID 41732651, tlenoterapia) — 203 (odpowiedź pomyślna) — przykład bazy źródeł /edukacja
- PMC7230641 — medicina, normobaria/terapie wspomagające — 200
- PubMed — wyszukiwarka: normobaric oxygen — 200
- Google Maps — Convertere Normobaria (Żory) — 200 (link z treści strony)
Zewnętrzne do WERYFIKACJI ręcznej (nie zweryfikowane tym środowiskiem)
- tlenoterapiamedidiet.pl (Żory) — nie odpowiada z środowiska badawczego (000) — sprawdzić w przeglądarce; potencjalny bezpośredni konkurent lokalny.
Wewnętrzne (r.10s.pl)
- Audyt SEO convertere.pl — wersja 2 (plan 10x) — 200 po publikacji 2026-08-26 (ta strona); wewnętrzne odnośniki do audytu v1 dodamy w kolejnych wersjach. (Nie używamy 10s.pl — domena 404.)
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.