Raport SEO & Performance — kwiecień 2026
Strona dailyfruits.pl przeszła kompleksową optymalizację SEO i performance obejmującą 29 stron HTML, 200 redirectów 301, pełne schema markup i 13 dedykowanych city landing pages. Poniżej szczegółowy opis wszystkich działań.
Zmapowano 200 redirectów 301 w vercel.json pokrywających pełną strukturę starego serwisu WordPress. Obejmuje to page-sitemap URLs, dated blog URLs (/2023/04/...), warianty z trailing slash i bez, oraz deep links do starych artykułów.
Wygenerowano sitemap.xml z 28 URL-ami pogrupowanymi w sekcje: core pages (4), content pages (3), blog posts (6), city landing pages (13). Dodano lastmod, changefreq i priority. Robots.txt wskazuje na sitemap i zezwala na pełne crawlowanie.
Każda z 29 stron ma canonical URL, meta robots index/follow, pełny zestaw Open Graph i Twitter Card meta tagów. OG image wskazuje na HORIZONTAL.webp.
Zamiast redirect-all-to-homepage dodano custom 404.html z nawigacją i linkami do kluczowych stron. Zmniejsza bounce rate z nieistniejących URL-i.
Uporządkowano hierarchię nagłówków: jeden H1 per strona, H2 dla sekcji, H3 dla podsekcji. Dodano aria-labels do hamburger menu i przycisków. Formularze mają label + placeholder.
Wdrożono 6 typów schema JSON-LD na 28 stronach:
Każda z 4 stron ofertowych ma Service schema z: serviceType opisującym usługę (np. "Office Food Delivery", "Event Catering"), listą 13 miast jako areaServed z typem City, oraz provider z pełnymi danymi kontaktowymi BetterWorkplace. Strona /oferta dodatkowo zawiera OfferCatalog z linkami do 3 deep offer pages.
Każda z 13 stron miast ma LocalBusiness schema z addressLocality ustawionym na konkretne miasto, areaServed jako City, oraz parentOrganization linkującą do DailyFruits. To pozwala Google wyświetlać wyniki w local pack.
Stworzono 13 dedykowanych stron SEO, każda z unikalnym contentem, zdjęciem, dzielnicami, biurowcami, testimonialem i FAQ:
Hero z unikalnym copy + zdjęcie z Unsplash, offer grid (8 kart z SVG ikonami), sekcja lokalna z dzielnicami i biurowcami, social proof z testimonialem i nazwą firmy (Allegro, Sabre, Nokia...), 3-step "Jak zacząć", FAQ (5 pytań z JSON-LD), CTA z telefonem i formularzem, internal linking do deep offer pages.
City index bar na dole każdej z 28 stron linkuje do wszystkich 13 miast. Każda city page linkuje do 3 deep offer pages (kanapki, catering, programy). Homepage i strony ofertowe linkują do city pages. Pełna dwukierunkowa sieć wewnętrzna.
Usunięto Lenis smooth scroll library (powodował 15s blank screen). Usunięto loader/page transition overlay ze wszystkich stron. Dodano preload hero image z fetchpriority="high" na homepage.
Wszystkie obrazy poza hero mają loading="lazy". Hero images mają loading="eager" i explicit width/height dla stabilności CLS.
CSS inline w każdej stronie — zero external render-blocking stylesheets. Zredukowano paddingi sekcji (120px → 80px). Wave dividers zmniejszone (60px → 40px).
| Element | Problem | Akcja |
|---|---|---|
| Lenis smooth scroll | 15s blank screen bug | Usunięty |
| Page transition loader | Blokował rendering | Usunięty |
| Floating CTA badge | Duplikat nav CTA | Usunięty |
| Unused PNG files | ~50MB bloatu | Usunięte |
| 4 filler blog posts | Thin content, zero SEO value | Usunięte |
| scroll-behavior: smooth | Janky scroll na subpages | Usunięte z 20 stron |
Każda z 29 stron ma unikalny title (do 60 znaków) z keyword + brand, meta description (do 155 znaków) z CTA i lokalizacją, Open Graph title/description/image/url, oraz Twitter Card summary_large_image.
6 wpisów blogowych ma Article JSON-LD z: headline, datePublished, dateModified, author, publisher z logo, oraz image. Rich results z datą i autorem w SERP.
16 stron ma FAQPage schema (13 city + 3 offer), każda z 5 unikalnymi pytaniami i odpowiedziami. FAQ widoczne na stronie jako accordion i w JSON-LD. 80 unikalnych pytań — podwaja szansę na featured snippet.
Naprawiono 26 błędów gramatycznych w nagłówkach ("do Warszawie" → "w Warszawie"). Ulepszono testimoniale — dodano nazwy firm (Allegro, Sabre, Nokia, Netguru, Pratt & Whitney). Zamieniono emoji na SVG ikony w offer gridzie dla spójności brandowej.
Strona zoptymalizowana pod AI search engines (ChatGPT, Perplexity, Google AI Overview):
6 typów schema daje AI modelom jednoznaczne sygnały o typie usługi, lokalizacji i ofercie.
80 unikalnych pytań/odpowiedzi — gotowy materiał do cytowania przez AI.
"DailyFruits by BetterWorkplace" konsekwentnie jako provider we wszystkich schema.
13 miast × dzielnice × biurowce = granularne dane lokalizacyjne.
OfferCatalog z 3 sub-services daje AI jasny obraz struktury oferty.
Czytelna hierarchia H1→H2→H3, aria-labels, semantic sections.
| Kategoria | Działanie | Zakres |
|---|---|---|
| SEO tech | Redirecty 301 z WordPress | 200 redirectów |
| SEO tech | Sitemap.xml + robots.txt | 28 URLs |
| SEO tech | Canonical + meta robots | 29 stron |
| SEO tech | Custom 404 page | 1 strona |
| Schema | LocalBusiness | 13 city pages |
| Schema | Service + areaServed | 4 strony × 13 miast |
| Schema | OfferCatalog | oferta → 3 sub-services |
| Schema | FAQPage | 16 stron × 5 pytań |
| Schema | BreadcrumbList | 28 stron |
| Schema | Article | 6 wpisów blog |
| Content | City landing pages | 13 stron z unikalnym copy |
| Content | City photos (Unsplash) | 13 hero images |
| Content | Testimoniale z firmami | 13 unikalnych (Allegro, Sabre...) |
| Content | City index bar | 28 stron |
| Content | Deep offer links | Kanapki, catering, programy |
| Content | Gramatyka fix | 26 nagłówków |
| Perfo | Kill Lenis smooth scroll | 29 stron |
| Perfo | Kill page loader | 29 stron |
| Perfo | Lazy loading images | Wszystkie img poza hero |
| Perfo | Preload hero image | fetchpriority=high |
| Perfo | CSS inline (zero blocking) | 29 stron |
| Perfo | Kill unused PNGs | ~50MB |
| Perfo | Reduce section padding | 120px → 80px |
| Perfo | Kill scroll-behavior:smooth | 20 subpages |
| On-page | Meta titles + descriptions | 29 unikalnych |
| On-page | OG + Twitter Cards | 29 stron |
| On-page | H1 hierarchy fix | 1 H1 per strona |
| On-page | SVG ikony (replace emoji) | 13 × 8 ikon |