Blog

Strony internetowe i pozycjonowanie Websites and SEO

Konkretne artykuły o tym, jak powstaje dobra strona firmowa i co naprawdę wpływa na jej widoczność w Google. Bez marketingowej ściemy, bez obietnic „pierwsze miejsce w tydzień" - tylko rzeczy, które sam stosuję w projektach. Practical articles on how a good company website gets built and what genuinely affects its visibility in Google. No marketing fluff, no "page one in a week" promises - only things I actually apply in my own projects.

BiznesBusiness 8 min czytania8 min read
Ile kosztuje strona internetowa i od czego to zależy What a website costs, and what drives the price

Rozbicie ceny na części pierwsze: co podbija koszt, co go realnie obniża i dlaczego dwie oferty na „taką samą stronę" potrafią się różnić kilkukrotnie. The price broken into parts: what pushes it up, what genuinely brings it down, and why two quotes for "the same website" can differ several times over.

Czytaj →Read →
PozycjonowanieSEO 9 min czytania9 min read
Pozycjonowanie małej strony firmowej: co realnie działa SEO for a small company site: what actually works

Kolejność działań, która ma sens przy budżecie lokalnej firmy - od struktury adresów i tytułów, przez treść, po Wizytówkę Google i linki. The order of work that makes sense on a local business budget - from URLs and titles through content to Google Business Profile and links.

Czytaj →Read →
PozycjonowanieSEO 7 min czytania7 min read
Dane strukturalne Schema.org: jak wyróżnić się w wynikach Schema.org structured data: how to stand out in results

Gwiazdki, breadcrumbs, godziny otwarcia i FAQ w wynikach wyszukiwania nie biorą się znikąd. Bierze się je z kilkunastu linijek JSON-LD. Stars, breadcrumbs, opening hours and FAQ blocks in search results don't appear by magic. They come from a dozen lines of JSON-LD.

Czytaj →Read →
WydajnośćPerformance 8 min czytania8 min read
Szybkość strony a konwersja: Core Web Vitals bez ściemy Page speed and conversion: Core Web Vitals, honestly

Co oznaczają LCP, INP i CLS, które z nich naprawdę psuje Twoja strona i które poprawki dają największy zwrot przy najmniejszym nakładzie. What LCP, INP and CLS mean, which one your site is actually failing, and which fixes give the biggest return for the least effort.

Czytaj →Read →
Strony internetoweWebsites 7 min czytania7 min read
Czego wymagać od wykonawcy strony What to require from whoever builds your site

Lista rzeczy do ustalenia przed podpisaniem: własność domeny, dostęp do kodu, możliwość samodzielnej edycji, kopie zapasowe i zasady poprawek. A checklist to settle before you sign: domain ownership, code access, whether you can edit it yourself, backups, and how revisions are handled.

Czytaj →Read →

Ile kosztuje strona internetowa i od czego to zależy What a website costs, and what drives the price

Pytanie „ile kosztuje strona" jest jak pytanie „ile kosztuje samochód". Odpowiedź zależy od tego, co ma robić. Problem w tym, że klient zwykle dostaje dwie oferty różniące się pięciokrotnie i nie ma jak ocenić, która jest uczciwa. Poniżej rozbijam cenę na składniki, żeby dało się je porównać. Asking "how much does a website cost" is like asking "how much does a car cost". It depends on what it has to do. The problem is that a client usually receives two quotes that differ fivefold, with no way to judge which is fair. Below I break the price into components so they can actually be compared.

Co realnie podbija cenęWhat genuinely pushes the price up

  • Liczba unikalnych układów, a nie liczba podstron. Dziesięć podstron w tym samym układzie to jedna praca projektowa. Trzy podstrony w trzech różnych układach to trzy.The number of unique layouts, not the number of pages. Ten pages sharing one layout is a single design job. Three pages in three different layouts is three.
  • Logika po stronie serwera. Formularz wysyłający maila jest tani. Kalkulator, który liczy wycenę, generuje PDF, zapisuje zgłoszenie w bazie i wystawia fakturę, jest osobnym projektem informatycznym.Server-side logic. A form that sends an email is cheap. A calculator that computes a quote, generates a PDF, stores the submission in a database and issues an invoice is a separate software project.
  • Integracje. Płatności, system fakturowy, kurierzy, kalendarz rezerwacji, KSeF. Każda z nich to cudza dokumentacja, cudze limity i cudze awarie, które trzeba obsłużyć.Integrations. Payments, invoicing, couriers, booking calendars, e-invoicing. Each one means someone else's documentation, someone else's rate limits, and someone else's outages to handle.
  • Treść. Jeśli teksty i zdjęcia trzeba napisać i przygotować od zera, to bywa jedna trzecia budżetu. Jeśli klient dostarcza gotowe, cena spada natychmiast.Content. If copy and photos have to be written and prepared from scratch, that can be a third of the budget. If the client supplies them, the price drops immediately.
  • Wersje językowe. Druga wersja to nie „przetłumaczenie" - to podwojenie treści, tytułów, opisów i testów.Language versions. A second version is not "just translation" - it doubles the copy, the titles, the meta descriptions and the testing.

Co obniża cenę, a co tylko wygląda na oszczędnośćWhat lowers the price, and what only looks like a saving

Realnie obniżają cenę: gotowa treść od klienta, jedna wersja językowa na start, prosty zakres na pierwszy etap i szybkie decyzje po stronie zamawiającego. Każdy tydzień zwłoki w akceptacji kosztuje obie strony. What genuinely lowers the price: content ready from the client, a single language version at launch, a modest scope for phase one, and fast decisions on the client's side. Every week of delay in sign-off costs both parties.

Pozorną oszczędnością jest za to najtańszy hosting, brak kopii zapasowych i brak jakiegokolwiek wsparcia po starcie. Strona nie jest produktem, który się kupuje raz - to coś, co działa dalej, a awaria formularza kontaktowego, której nikt nie zauważy przez trzy tygodnie, kosztuje więcej niż cały roczny hosting. False savings, on the other hand: the cheapest hosting, no backups, and no support after launch. A website is not a one-off purchase - it keeps running, and a broken contact form nobody notices for three weeks costs more than a whole year of hosting.

Praktyczna zasada: poproś o wycenę rozbitą na etapy z osobną ceną każdego z nich. Oferta, której nie da się rozbić, zwykle nie została policzona, tylko oszacowana „na oko". A practical rule: ask for a quote broken into stages with a separate price for each. A quote that cannot be broken down usually was not calculated at all, only eyeballed.

← Wróć do listy artykułów← Back to the article list

Pozycjonowanie małej strony firmowej: co realnie działa SEO for a small company site: what actually works

Mała firma nie wygra z portalem branżowym na ogólne hasło typu „remonty". Wygra za to na „wykończenia wnętrz Poznań Jeżyce" - i to jest cały sens pozycjonowania lokalnego. Kolejność działań poniżej jest ułożona według stosunku efektu do nakładu. A small business will not outrank an industry portal for a broad term like "renovations". It will win on "interior finishing Poznań Jeżyce" - and that is the entire point of local SEO. The order of work below is sorted by return on effort.

1. Fundament techniczny1. Technical foundation

Zanim cokolwiek innego: strona musi być indeksowalna. Sprawdź, czy nie ma przypadkowego noindex, czy istnieje sitemap.xml zgłoszony w Google Search Console, czy robots.txt niczego nie blokuje i czy każda podstrona ma tag canonical. To jednorazowa praca na kilka godzin, bez której reszta jest bezcelowa. Before anything else: the site must be indexable. Check there is no accidental noindex, that a sitemap.xml exists and is submitted in Google Search Console, that robots.txt blocks nothing important, and that every page has a canonical tag. This is a one-off job of a few hours, and without it the rest is pointless.

2. Tytuły i opisy, po jednym na podstronę2. Titles and descriptions, one per page

Najczęstszy błąd na stronach małych firm: wszystkie podstrony mają ten sam tytuł, zwykle nazwę firmy. Tytuł to najmocniejszy pojedynczy sygnał on-page. Każda podstrona powinna mieć własny, w schemacie „usługa + miasto + marka", w granicach mniej więcej 60 znaków. Opis meta nie wpływa na pozycję, ale wpływa na to, ile osób kliknie - a to już wpływa na wszystko inne. The most common mistake on small-business sites: every page carries the same title, usually the company name. The title is the single strongest on-page signal. Each page needs its own, following "service + city + brand", within roughly 60 characters. The meta description does not affect ranking, but it affects how many people click - and that affects everything else.

3. Jedna podstrona na jedną intencję3. One page per intent

Strona, która na jednej podstronie wymienia dziesięć usług, nie wypozycjonuje się na żadną z nich. Lepiej mieć pięć osobnych, konkretnych podstron niż jedną, która próbuje być wszystkim naraz. Każda z nich powinna mieć własny nagłówek h1, własny adres i kilkaset słów treści odpowiadającej na realne pytanie klienta. A site that lists ten services on one page will rank for none of them. Five separate, specific pages beat one page trying to be everything. Each needs its own h1, its own URL, and a few hundred words answering a question a real customer would ask.

4. Wizytówka Google4. Google Business Profile

Dla firmy działającej lokalnie Profil Firmy w Google potrafi dać więcej telefonów niż sama strona. Jest darmowy, a jego uzupełnienie to godzina pracy: kategoria, godziny, obszar działania, zdjęcia, i systematyczne zbieranie opinii. Adres strony w wizytówce i spójne dane teleadresowe na stronie wzmacniają się nawzajem. For a locally operating business, a Google Business Profile can generate more calls than the website itself. It is free, and filling it in takes an hour: category, hours, service area, photos, and steadily collecting reviews. The site's address in the profile and consistent contact details on the site reinforce each other.

5. Treść, która odpowiada na pytania5. Content that answers questions

Nie „artykuły pod SEO" naszpikowane frazami, tylko odpowiedzi na to, o co klienci pytają przez telefon. Ile to trwa, ile kosztuje, co jest w cenie, co trzeba przygotować. Te teksty pozycjonują się same, bo dokładnie tak brzmią zapytania wpisywane w wyszukiwarkę. Not "SEO articles" stuffed with phrases, but answers to what customers ask on the phone. How long it takes, what it costs, what is included, what they need to prepare. Such texts rank on their own, because that is exactly how search queries are phrased.

Czego unikać: kupowania linków w pakietach, tekstów generowanych hurtowo bez redakcji i każdej oferty gwarantującej konkretną pozycję w konkretnym terminie. Nikt nie ma dostępu do algorytmu Google, więc taka gwarancja jest albo blefem, albo zapowiedzią metod, po których strona wypadnie z indeksu. What to avoid: link packages, bulk-generated unedited copy, and any offer guaranteeing a specific position by a specific date. Nobody has access to Google's algorithm, so such a guarantee is either a bluff or a warning of methods that will get the site deindexed.

← Wróć do listy artykułów← Back to the article list

Dane strukturalne Schema.org: jak wyróżnić się w wynikach Schema.org structured data: how to stand out in results

Dwa wyniki obok siebie: jeden to sam tytuł i dwie linijki tekstu, drugi ma ścieżkę nawigacji, godziny otwarcia i rozwijane pytania. Różnica nie bierze się z pozycji, tylko z danych strukturalnych - fragmentu JSON-LD, w którym strona wprost mówi wyszukiwarce, czym jest. Two results side by side: one is just a title and two lines of text, the other shows a breadcrumb trail, opening hours and expandable questions. The difference does not come from ranking, but from structured data - a JSON-LD snippet in which the page tells the search engine plainly what it is.

Które typy mają sens dla małej firmyWhich types make sense for a small business

  • Organization lub konkretniejszy typ działalności - nazwa, logo, adres, telefon, profile w serwisach społecznościowych.Organization or a more specific business type - name, logo, address, phone, social profiles.
  • LocalBusinessPostalAddress, GeoCoordinates i godzinami otwarcia, jeśli klienci przychodzą pod adres.LocalBusiness with PostalAddress, GeoCoordinates and opening hours, if customers come to a physical address.
  • BreadcrumbList - zamienia surowy adres w czytelną ścieżkę pod tytułem wyniku.BreadcrumbList - turns a raw URL into a readable path under the result title.
  • FAQPage - najczęstsze pytania mogą pokazać się bezpośrednio w wynikach, zajmując więcej miejsca na ekranie.FAQPage - common questions can appear directly in results, taking up more screen space.
  • ArticlePerson - dla bloga i strony autora, z datą publikacji i autorstwem.Article and Person - for a blog and an author page, with publication date and authorship.

Trzy zasady, żeby to zadziałałoThree rules to make it work

Po pierwsze: dane strukturalne muszą opisywać to, co użytkownik naprawdę widzi na stronie. Oznaczenie opinii, których na stronie nie ma, to prosta droga do ręcznej kary. Po drugie: format JSON-LD w osobnym bloku <script>, a nie znaczniki wplecione w HTML - łatwiej to utrzymać i trudniej zepsuć przy zmianie szablonu. Po trzecie: każdą zmianę weryfikuj w teście wyników z elementami rozszerzonymi i w raporcie ulepszeń w Search Console. First: structured data must describe what the user genuinely sees on the page. Marking up reviews that do not exist on the page is a direct path to a manual penalty. Second: use JSON-LD in a separate <script> block rather than attributes woven through the HTML - it is easier to maintain and harder to break when the template changes. Third: verify every change in the Rich Results Test and in the Enhancements report in Search Console.

Ważne zastrzeżenie: dane strukturalne nie podnoszą pozycji same z siebie. Zwiększają za to powierzchnię wyniku i jego czytelność, a więc odsetek kliknięć. Przy tej samej pozycji to potrafi być różnica rzędu kilkudziesięciu procent ruchu. An important caveat: structured data does not raise rankings by itself. What it does is enlarge the result and make it more readable, which raises the click-through rate. At the same position, that can mean tens of percent more traffic.

← Wróć do listy artykułów← Back to the article list

Szybkość strony a konwersja: Core Web Vitals bez ściemy Page speed and conversion: Core Web Vitals, honestly

Google mierzy trzy rzeczy, które da się odczuć bez żadnego narzędzia: jak szybko pojawia się główna treść, jak szybko strona reaguje na kliknięcie i czy układ nie skacze pod palcem. To odpowiednio LCP, INP i CLS. Google measures three things you can feel without any tool: how fast the main content appears, how fast the page reacts to a tap, and whether the layout jumps under your finger. Those are LCP, INP and CLS respectively.

LCP

Czas do wyświetlenia największego elementu w widocznym obszarze, najczęściej zdjęcia w nagłówku. Próg dobrego wyniku to 2,5 sekundy. Na stronach małych firm psuje go prawie zawsze to samo: zdjęcie z aparatu wrzucone bez zmniejszenia. Plik 4 MB skalowany przez przeglądarkę do 800 px to najczęstszy pojedynczy problem wydajnościowy, jaki widuję. Zmniejszenie do właściwego rozmiaru i podanie width oraz height potrafi ściąć LCP o kilka sekund. Time to render the largest element in the viewport, usually a header image. The good threshold is 2.5 seconds. On small-business sites it is nearly always broken by the same thing: a camera photo uploaded without resizing. A 4 MB file scaled by the browser down to 800 px is the single most common performance problem I see. Resizing it properly and setting width and height can cut seconds off LCP.

INP

Opóźnienie między kliknięciem a reakcją strony. Próg to 200 milisekund. Winowajcą jest zwykle nadmiar skryptów zewnętrznych: kilka narzędzi analitycznych, czat, widget opinii, mapa i dwa banery. Każdy z osobna wygląda niewinnie, razem blokują wątek główny na sekundy. Warto policzyć, ile z nich ktokolwiek naprawdę używa. The delay between a click and the page responding. The threshold is 200 milliseconds. The culprit is usually an excess of third-party scripts: a couple of analytics tools, a chat, a review widget, a map and two banners. Individually each looks harmless; together they block the main thread for seconds. It is worth counting how many of them anyone actually uses.

CLS

Suma nieoczekiwanych przesunięć układu. Klasyczny scenariusz: użytkownik celuje w przycisk, w tym momencie doładowuje się obrazek bez zarezerwowanego miejsca, treść zjeżdża w dół i klik trafia w coś innego. Lekarstwo jest banalne: każdy obraz i każda ramka mają mieć podane wymiary, a baner zgód na cookies ma rezerwować swoje miejsce, zamiast wpychać się nad treść. The sum of unexpected layout shifts. The classic scenario: a user aims at a button, an image without reserved space finishes loading, the content shifts down and the tap lands on something else. The cure is trivial: every image and every frame gets explicit dimensions, and the cookie banner reserves its own space instead of pushing itself above the content.

Kolejność naprawThe order to fix things in

  • Przeskaluj i skompresuj zdjęcia, ustaw loading="lazy" na wszystkim poniżej pierwszego ekranu.Resize and compress the images, set loading="lazy" on everything below the fold.
  • Dodaj preload dla obrazu nagłówkowego i preconnect dla domen, z których ładują się fonty.Add preload for the hero image and preconnect for the domains fonts load from.
  • Usuń skrypty zewnętrzne, których nikt nie czyta, resztę ładuj z opóźnieniem.Remove third-party scripts nobody reads, and defer the rest.
  • Zmierz na urządzeniu mobilnym i na wolnym łączu, a nie na swoim komputerze przy światłowodzie.Measure on a phone over a slow connection, not on your own desktop over fibre.
← Wróć do listy artykułów← Back to the article list

Czego wymagać od wykonawcy strony What to require from whoever builds your site

Większość sporów o stronę internetową nie dotyczy tego, jak wygląda, tylko tego, czego nie ustalono na początku. Poniżej lista punktów, które warto mieć zapisane, zanim ruszą prace. Żaden z nich nie jest kontrowersyjny - uczciwy wykonawca zgodzi się na wszystkie bez mrugnięcia. Most disputes about a website are not about how it looks, but about what was never agreed at the start. Below is a list of points worth having in writing before work begins. None of them is controversial - an honest developer will agree to all of them without blinking.

Własność i dostępyOwnership and access

  • Domena zarejestrowana na Ciebie, nie na wykonawcę. To najczęstszy mechanizm uzależnienia klienta od jednej firmy.The domain registered in your name, not the developer's. This is the most common mechanism for locking a client to one supplier.
  • Konto hostingowe na Twoje dane, z hasłem przekazanym po odbiorze.The hosting account in your name, with the password handed over at sign-off.
  • Kod źródłowy przekazany w całości, wraz z prawem do dalszych modyfikacji przez kogokolwiek.The full source code handed over, with the right to have it modified further by anyone.

UtrzymanieMaintenance

  • Kto i jak często robi kopie zapasowe oraz jak wygląda odtworzenie strony po awarii.Who makes backups, how often, and what restoring the site after a failure looks like.
  • Co możesz zmienić samodzielnie (treść, zdjęcia, cennik), a co wymaga zlecenia.What you can change yourself (copy, photos, prices) and what requires a work order.
  • Ile poprawek jest w cenie i od którego momentu każda kolejna jest wyceniana osobno.How many revisions are included and at what point each further one is quoted separately.
  • Czy certyfikat SSL, przedłużenie domeny i hosting są w cenie, i na jak długo.Whether the SSL certificate, domain renewal and hosting are included, and for how long.

Zgodność z przepisamiLegal compliance

Jeśli strona zbiera jakiekolwiek dane - choćby przez formularz kontaktowy - potrzebuje polityki prywatności zgodnej z RODO, informacji o podstawie przetwarzania i jasnej zgody. Jeśli sprzedaje, potrzebuje też regulaminu i informacji o prawie odstąpienia. To nie jest opcja ani dodatek premium. If the site collects any data - even through a contact form - it needs a GDPR-compliant privacy policy, information on the legal basis for processing, and clear consent. If it sells, it also needs terms of service and information about the right of withdrawal. This is not optional, nor a premium extra.

Sygnał ostrzegawczy: wykonawca, który nie chce oddać dostępów „bo to skomplikowane" albo rejestruje domenę na siebie „żeby było wygodniej". Wygoda jest tu wyłącznie po jego stronie. A warning sign: a developer who will not hand over access "because it is complicated", or registers the domain in their own name "for convenience". The convenience here is entirely theirs.

← Wróć do listy artykułów← Back to the article list

Masz pytanie do któregoś z tematów?A question about any of these topics?

Chętnie odpowiem konkretnie na Twoim przypadku - bez zobowiązań i bez wciskania pakietów. I'm happy to answer specifically for your case - no obligation, no packages to push.

Napisz do mnieGet in touch
Telefon WhatsApp E-mail