Audyt techniczny + lejkowy

5 Filarów
kursy.mateuszgrzesiak.com

Pełny audyt landing page'a, lejka sprzedażowego, kodu i infrastruktury. Dr Mateusz Grzesiak - pakiet 5 programów online (997 zl).

2/10
Hosting
3/10
Performance
5/10
Kod
6/10
Lejek
[ TL;DR ]

Strona kursy.mateuszgrzesiak.com/5-filarow/ jest niedostępna dla użytkowników spoza Polski. Serwer (IP: 195.238.236.43, polski hosting ATMAN) ma włączony geo-IP firewall, ktory dropuje połączenia z zagranicznych adresów IP. Każdy, kto próbuje otworzyć stronę z Bali, Londynu, Berlina czy Nowego Jorku, dostaje connection timeout.

Jeśli reklamy Meta/Google targetują Polaków za granicą (emigracja, wakacje, digital nomadzi) - budżet reklamowy jest przepalany. Klikają w reklamę, strona się nie ładuje, odchodzą. Zero konwersji, 100% zmarnowanego CPC.

Dodatkowo: strona jest wyraźnie wygenerowana przez AI (prawdopodobnie Claude/GPT), ma 11 niezoptymalizowanych embedów YouTube, ~500 inline stylów, szacowana waga 2-4 MB, i wieczną "promocję" z fake countdown timerem.

[ 01 / HOSTING I GEO-BLOCKING ]

Serwer blokuje cały ruch zagraniczny

Krytyczny

Geo-IP firewall blokuje ruch spoza Polski

Serwer 195.238.236.43 (hosting: Marcin Cwiertnia, routing: ATMAN, Polska) ma włączony firewall z filtrowaniem po geolokalizacji IP. Połączenia z zagranicy są dropowane (nie odrzucane - dropowane, stąd timeout zamiast błędu HTTP).

# Test z polskiego IP (Firecrawl, location: PL)
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
# Test z indonezyjskiego IP (Firecrawl, location: ID)
ERR_TUNNEL_CONNECTION_FAILED
# curl z Bali (timeout po 10s)
curl: (28) Connection timed out after 10002 milliseconds

Skutek: Polacy na wakacjach, emigranci, digital nomadzi, ktokolwiek bez polskiego VPN - nie otworzą strony. Jeśli reklamy targetują te grupy, budżet jest przepalany w 100%.

Krytyczny

Brak CDN - cały ruch przez jeden serwer w Polsce

Strona nie używa Cloudflare, Fastly ani żadnego CDN. Wszystkie zasoby (HTML, CSS, obrazy) są serwowane z jednego IP w Polsce. Nawet gdyby geo-blocking został wyłączony, czas ładowania z Azji/Ameryk byłby drastycznie dłuższy niż przez CDN. Brak ochrony DDoS, brak cache'owania na edge'ach.

Info

Dane serwera

IP: 195.238.236.43
Netname: ORG-MC297-RIPE
Org: MARCIN CWIERTNIA
Country: PL
Routing: ATMAN (ATM S.A.)
CDN: Brak
SSL: Tak (HTTPS)
[ 02 / WYDAJNOŚĆ ]

Strona waży 2-4 MB i ładuje 11 iframe'ow YouTube

Krytyczny

11 pełnych embedów YouTube bez lazy loading

Strona osadza 11 filmów YouTube jako pelne iframe'y. Każdy iframe ładuje odtwarzacz YT (~300 elementów DOM), własny CSS (www-player.css powtórzony 10x), i JS (embed.js powtórzony 9x). To generuje dziesiątki dodatkowych HTTP requestów.

Rozwiązanie: Użyć YouTube Facade Pattern (np. lite-youtube-embed) - ładuje tylko thumbnail, a iframe dopiero po kliknięciu. Oszczędność: ~1-2 MB i ~50 requestów.

Wysoki

Obrazy bez optymalizacji

Zdjęcie bio (bio-mg.png) jest w formacie PNG zamiast WebP/AVIF. Brak atrybutów srcset, width, height i loading="lazy". Brak elementu <picture> z nowoczesnymi formatami. 9 thumbnailków YT ma pusty alt="".

Wysoki

Nadmierne użycie biblioteki AOS (72 animacje)

72 elementy z atrybutem data-aos (fade-up, fade-left, fade-right). AOS wymaga dodatkowego JS + CSS. Na prostym landing page'u to overkill - wystarczyłyby proste CSS transitions z Intersection Observer (3 linijki JS).

Wysoki

Szacowana waga strony: 2-4 MB

HTML: ~345 KB (niezoptymalizowany)
CSS: ~500-800 KB (Bootstrap + Icons + AOS + custom + 10x YT player)
JS: ~1-2 MB (Bootstrap + AOS + 11x YT embed)
Obrazy: ~200-500 KB (bio PNG + thumbnailki)
Łącznie: ~2-4 MB
Średni

5-6 render-blocking zasobów w head

Bootstrap CSS + JS, Bootstrap Icons CSS, AOS CSS + JS, custom CSS - wszystko ładowane synchronicznie. Brak widocznego font-display: swap na fontach.

[ 03 / JAKOŚĆ KODU ]

Wyraźnie wygenerowane przez AI, nieutrzymywalne

Wysoki

497 inline stylów

Cały dokument ma 497 atrybutów style="...". Zamiast CSS klas, wszystko jest wklejone inline. To uniemożliwia utrzymanie, modyfikacje i responsywność.

style="background:linear-gradient(135deg,
  rgba(var(--primary-rgb),0.04) 0%,
  rgba(var(--accent-rgb),0.06) 100%);
  border:1px solid rgba(var(--accent-rgb),0.15);
  box-shadow:0 8px 40px rgba(var(--primary-rgb),0.06),
  inset 0 0 80px rgba(var(--accent-rgb),0.03);"
Wysoki

Sygnały generowania AI (Claude/GPT)

  • Komentarze ASCII art: <!-- ═══════════════════ -->
  • "Perfekcyjna" struktura sekcji: HERO > SALES COPY > OBJECTION > TRANSFORMATION > PRICING > FAQ - jak z podręcznika
  • Nazwy klas: glass-orb, cinema-glow, pulse-ring, text-gradient-gold
  • Użyćie clamp() w inline styles - pattern typowy dla AI
  • 5 identycznych kart kursów z copy-paste HTML zamiast componentów/template'u
Wysoki

"Div soup" - brak semantycznego HTML

Zero elementów <nav>, <main>, <header>, <footer>, <article>. Cała strona to sekcje > divy > divy > divy. Źle dla accessibility i crawlerów.

Średni

Zaburzona hierarchia nagłówków

Skok z <h2> do <h6> w sekcji puzzli. Dwa puste tagi <h2>. FAQ używa h2 dla każdego pytania zamiast h3.

Średni

Accessibility (A11y)

9 obrazów z pustym alt="". Brak skip-navigation. Brak role="main". Kontrasty kolorów wątpliwe: tekst color:rgba(255,255,255,0.55) na półprzezroczystym tle - prawdopodobnie nie spełnia WCAG AA.

[ 04 / LEJEK SPRZEDAŻOWY ]

Wieczna promocja, fake timer, niespójne domeny

Krytyczny

Evergreen fake countdown timer

Strona wyświetla odliczanie "Promocja cenowa kończy się za: X dni Y godz." - ale najniższa cena z 30 dni wynosi 297 zl, czyli dokładnie tyle, ile wynosi "cena promocyjna". Cena nigdy nie była 699 zl - to wieczna "promocja".

Timer jest współdzielony między kursami (identyczne wartości na różnych stronach) - to skrypt JS resetujący się cyklicznie. Formalnie spełnia dyrektywę Omnibus (najniższa cena z 30 dni jest pokazana), ale praktyka jest manipulacyjna.

Wysoki

Niespójne domeny w lejku

Checkout ma og:url ustawione na edducamateuszgrzesiak.com - inna domena niz kursy.mateuszgrzesiak.com. To sugeruje, że checkout jest skopiowany z innej platformy/domeny. Może powodować problemy z trackingiem (Facebook Pixel, GA).

Landing: kursy.mateuszgrzesiak.com
Checkout OG: edducamateuszgrzesiak.com
Favicon LP: live.mateuszgrzesiak.com/img/favicon.ico
Favicon checkout: mateuszgrzesiak.com/pewnosc-siebie/img/favicon.ico
Wysoki

Copy-paste między kursami (mieszanie assetów)

Strona "Inteligencja Finansowa" ładuje obrazy z folderu /strategia-malzenska/img/ (np. mat-il-1.png). Favicon checkoutu pochodzi z folderu /pewnosc-siebie/ - innego kursu. Ewidentny copy-paste template'ów bez aktualizacji ścieżek.

Średni

22 CTA na jednej stronie z niespójnym messagingiem

Różne teksty prowadzą do tego samego celu: "Poznaj programy", "Kup pakiet", "Chce te zmiane", "Dolaczam do nich", "Kupuje pakiet". Brak konsekwencji w CTA copy. 4 elementy z animacja pulse-ring - nadmierne użycie efektu urgency.

Średni

Checkout bez OG tagow

Strona koszyka ma puste og:title, og:description i og:image. Jeśli ktoś udostępni link do koszyka (np. w Messengerze) - wyświetli się pusty podgląd.

MAPA LEJKA
1
Reklama Meta/Google
Targetowanie: Polacy (w tym za granicą?)
2
Landing Page (5 Filarów)
GEO-BLOCKED dla użytkowników spoza PL!
3
Checkout (custom form)
Niespójne OG tagi, favicon z innego kursu, custom payment (nie Stripe Checkout)
4
Dostęp do kursu
Login + haslo, panel uzytkownika, dostep 12 mies.
[ 05 / SEO ]

noindex (celowy), ale błędy w meta tagach

OK

Meta robots: noindex, follow

Celowe wykluczenie z indeksowania Google - sens ma dla landing page'a z paid traffic. Ale oznacza tez, ze strona nie zbiera organicznego SEO.

Średni

Zduplikowane OG tagi

og:title ma 2 wartości, og:type ma 2x "website", og:description ma 2 wartości, viewport powtórzony 12 razy (!). Prawdopodobnie wielokrotne wstrzyknięcie przez różne pluginy/iframe'y.

Średni

Brak Schema.org / JSON-LD

Zero structured data. Dla strony z kursami online, markup Product, Course, Offer byłby wartościowy (nawet z noindex, dla social sharing).

Średni

Brak tagu canonical

Jedyne tagi canonical na stronie pochodza z osadzonych odtwarzaczy YouTube (11 canonicali YT). Brak wlasnego canonical dla glownej strony.

[ 06 / ANALIZA CENOWA ]

Pricing i oferta

Pojedynczy kurs
699 zl
297 zl
Najnizsza cena z 30 dni: 297 zl
Pakiet 5 kursów
1 485 zl
997 zl
Oszczędność: 488 zl (vs. osobno)
Płatności Custom form + PayPal + Raty 0%
Dostęp 12 miesięcy od zakupu
Format Nagrania wideo, ~3h/program
Firma Starway Mateusz Grzesiak sp. j., Warszawa
Gwarancja zwrotu Brak informacji na stronie
[ PODSUMOWANIE ]

Ranking problemów wg wagi

P0
Geo-IP firewall blokuje caly ruch spoza Polski
P0
11 niezoptymalizowanych embedów YouTube (~2 MB waste)
P0
Fake evergreen countdown timer (wieczna "promocja")
P1
497 inline stylów - nieutrzymywalny, AI-generated kod
P1
Niespójne domeny w lejku (3 różne domeny)
P1
Copy-paste template'ow (assety z innych kursów)
P1
Brak CDN - wszystko z jednego serwera w PL
P2
Brak semantycznego HTML (div soup, zero a11y)
P2
Zduplikowane OG tagi, brak canonical, brak Schema.org
P2
22 CTA z niespójnym messagingiem
Werdykt

Strona wygląda jak wygenerowana przez AI w 30 minut, bez testowania na różnych lokalizacjach, urzadzeniach i predkosciach połączenia. Najważniejszy problem to geo-blocking - nie do zaakceptowania przy prowadzeniu reklam.

Lejek ma poprawną strukturę (landing > checkout > dostep), ale wykonanie techniczne jest na niskim poziomie. Wieczna promocja z fake timerem to red flag dla swiadomych użytkowników. Brak gwarancji zwrotu na stronie to kolejny problem zaufania.