Czy specjalista SEO powinien znać HTML, CSS i JS? Praktyczny zakres kompetencji

Publikacja
Aktualizacja
Czy specjalista SEO powinien znać HTML, CSS i JS? Praktyczny zakres kompetencji
3 min czytania

Wtyczka pokazuje zielone kontrolki, CMS zapisał zmiany, a Google nadal nie indeksuje strony albo nie widzi jej linków. Wtedy pytanie, czy specjalista SEO powinien znać HTML, CSS i JS, przestaje być teorią zawodową, a staje się problemem wpływającym na widoczność serwisu. Nie trzeba tworzyć aplikacji od zera, lecz trzeba odróżniać kod źródłowy od DOM, rozpoznawać ryzykowne dyrektywy i umieć sprawdzić efekt wdrożenia. W praktyce najwięcej daje techniczna samodzielność diagnostyczna, nie próba zastąpienia frontend developera. Pokażę Ci wymagany zakres dla poszczególnych ról SEO, przykłady błędów oraz granicę między własną poprawką a delegowaniem. Dostaniesz też macierz kompetencji i plan nauki oparty na realnych zadaniach. Zacznijmy od jednoznacznego werdyktu.

Spis treści

    Czy specjalista SEO musi umieć programować? Krótki werdykt

    Nie. Specjalista SEO nie musi programować aplikacji, ale powinien umieć czytać kod i diagnozować jego wpływ na crawling, renderowanie oraz indeksowanie.

    Najbardziej praktyczny standard wygląda tak:

    • HTML — tak: odczyt struktury, linków, metadanych i prostych dyrektyw oraz bezpieczna edycja podstawowych elementów.
    • CSS — diagnostycznie: ustalenie, dlaczego treść jest niewidoczna, źle prezentuje się mobilnie albo powoduje przesunięcia układu.
    • JavaScript — funkcjonalnie: rozumienie zmian w DOM, zdarzeń, żądań sieciowych i treści zależnej od wykonania skryptu.

    Czytanie składni, znalezienie przyczyny, poprawienie pojedynczego elementu i samodzielne zaprogramowanie komponentu to cztery różne kompetencje. Większość osób zajmujących się SEO potrzebuje dwóch pierwszych, czasem trzeciej. Pełna implementacja jest istotniejsza w Technical SEO, e-commerce oraz przy pracy z aplikacjami JavaScript.

    Brak umiejętności stworzenia strony od zera nie dyskwalifikuje więc juniora. Problem zaczyna się wtedy, gdy specjalista bezkrytycznie ufa CMS-owi, wtyczce lub automatycznemu audytowi i nie potrafi sprawdzić końcowego rezultatu.

    HTML i CSS w codziennej pracy SEO — co trzeba umieć sprawdzić?

    HTML: struktura, linki, metadane i dyrektywy

    HTML jest dla SEO mapą dokumentu. Specjalista powinien odnaleźć i ocenić między innymi title, meta robots, canonical, hreflang, nagłówki, obrazy, odnośniki oraz dane strukturalne zapisane w JSON-LD. Dotyczy to także stron obsługiwanych przez CMS, ponieważ formularz administracyjny nie zawsze pokazuje kod, który ostatecznie trafia do przeglądarki.

    Semantyczny HTML: ta sama strona, inna czytelność struktury

    Wariant oparty niemal wyłącznie na elementach div może być wizualnie poprawny:

    DIV
    <div class="menu">
      <div onclick="location.href='/buty'">Buty</div>
    </div>
    
    <div class="content">
      <div class="title">Jak dobrać buty trekkingowe?</div>
      <div class="text">Poradnik doboru obuwia...</div>
      <div class="items">Membrana, podeszwa, rozmiar</div>
      <div class="image"><img src="buty.jpg" alt="Buty trekkingowe"></div>
      <div class="spec">Waga: 900 g | Materiał: skóra</div>
    </div>

    Wersja semantyczna dokładniej opisuje funkcje elementów:

    Opis funkcji z elementami
    <nav aria-label="Kategorie">
      <a href="/buty">Buty</a>
    </nav>
    
    <main>
      <article>
        <h1>Jak dobrać buty trekkingowe?</h1>
    
        <section>
          <h2>Najważniejsze kryteria</h2>
          <p>Poradnik doboru obuwia...</p>
          <ul>
            <li>Membrana</li>
            <li>Podeszwa</li>
            <li>Rozmiar</li>
          </ul>
        </section>
    
        <figure>
          <img src="buty.jpg" alt="Buty trekkingowe">
          <figcaption>Model przeznaczony na dłuższe trasy</figcaption>
        </figure>
    
        <table>
          <caption>Specyfikacja</caption>
          <tr><th>Waga</th><td>900 g</td></tr>
          <tr><th>Materiał</th><td>Skóra</td></tr>
        </table>
      </article>
    </main>

    main wyznacza główną treść, nav nawigację, a article materiał mogący funkcjonować samodzielnie. section grupuje logiczny fragment, natomiast lista, tabela i figure opisują rodzaj prezentowanej informacji.

    Podczas audytu sprawdź, czy główna treść jest odróżnialna od menu i elementów pomocniczych, nagłówki opisują sekcje, a nawigacja korzysta z prawdziwych odnośników. Semantyczny HTML wspiera dostępność i przetwarzanie dokumentu przez przeglądarki, roboty oraz technologie wspomagające. Nie jest jednak magicznym czynnikiem rankingowym ani gwarancją wyższych pozycji.

    Pułapka sekcji head: poprawna i ryzykowna implementacja

    Poprawny wariant utrzymuje metadane oraz dozwolone skrypty wewnątrz head:

    Poprawna struktura sekcji <head>
    &lt;head&gt;
      &lt;title&gt;Buty trekkingowe – sklep&lt;/title&gt;
      &lt;meta name="robots" content="index,follow"&gt;
      &lt;link rel="canonical" href="https://example.pl/buty"&gt;
      &lt;link rel="alternate" hreflang="pl" href="https://example.pl/buty"&gt;
      &lt;script type="application/ld+json"&gt;{ ... }&lt;/script&gt;
    &lt;/head&gt;

    Wariant ryzykowny zawiera niedozwolony w tym miejscu element:

    Błędna struktura sekcji <head>
    &lt;head&gt;
      &lt;title&gt;Buty trekkingowe – sklep&lt;/title&gt;
      &lt;img src="/tracking-pixel.png" alt=""&gt;
      &lt;meta name="robots" content="noindex"&gt;
      &lt;link rel="canonical" href="https://example.pl/buty"&gt;
      &lt;link rel="alternate" hreflang="pl" href="https://example.pl/buty"&gt;
      &lt;script type="application/ld+json"&gt;{ ... }&lt;/script&gt;
    &lt;/head&gt;

    Zgodnie z dokumentacją Google dotyczącą poprawnych metadanych parser może potraktować element taki jak img lub iframe jako zakończenie sekcji head. Metadane znajdujące się później mogą nie zostać odczytane zgodnie z oczekiwaniem. W tym przykładzie title występuje wcześniej, ale meta robots, canonical, hreflang i skrypt są już narażone na błędne przetworzenie.

    Nie każdy błąd składniowy wywołuje identyczny rezultat. Kontrola powinna obejmować kod źródłowy odpowiedzi, drzewo DOM w Chrome DevTools oraz informacje widoczne po inspekcji adresu w Google Search Console (inspecja URL).

    Mini-laboratorium: co naprawdę jest linkiem dla crawlera?

    KontrolkaSemantyczny link?URL bezpośrednio w HTML?Niezawodność odkrywaniaRekomendowana poprawka
    &lt;a href="/oferta"&gt;Oferta&lt;/a&gt; Tak Tak Wysoka Zachować prawidłowy href
    &lt;a onclick="openPage()"&gt;Oferta&lt;/a&gt; Niepełny Nie Niska Dodać href="/oferta"
    &lt;span onclick="location.href='/oferta'"&gt;Oferta&lt;/span&gt; Nie Czasem tylko w skrypcie Niska Zastąpić przez &lt;a href="/oferta"&gt;
    Komponent z routerLink="/oferta" Zależy od wyniku renderowania Zależy Wymaga testu Sprawdzić, czy generuje &lt;a href&gt;
    &lt;button onclick="openPage()"&gt;Oferta&lt;/button&gt; Nie Zwykle nie Niska Link stosować do nawigacji, przycisk do akcji

    Możliwość kliknięcia nie oznacza jeszcze, że robot niezawodnie odkryje URL. W menu, paginacji, filtrach i nawigacji sklepu najbezpieczniejszym wzorcem pozostaje a z prawidłowym href. Komponenty routera trzeba jednak oceniać po wygenerowanym HTML, a nie po nazwie biblioteki lub atrybutu w kodzie źródłowym aplikacji.

    CSS: widoczność, responsywność i stabilność układu

    SEO nie musi pisać rozbudowanych arkuszy stylów. Powinien natomiast sprawdzić, czy treść nie została ukryta przez display: none, visibility: hidden, pozycjonowanie poza ekranem albo regułę działającą wyłącznie na urządzeniach mobilnych.

    CSS pomaga także diagnozować różnice między kolejnością wizualną a kolejnością elementów w DOM. Ma to znaczenie dla dostępności i sposobu korzystania ze strony, nawet jeśli układ na ekranie wygląda poprawnie.

    Style mogą wpływać na Core Web Vitals. Blokujący renderowanie CSS może opóźniać LCP, a brak zarezerwowanego miejsca na obraz lub dynamiczny element może pogarszać CLS. Nie każdy problem z wydajnością da się jednak naprawić jedną regułą. Przyczyna może leżeć w obrazach, fontach, skryptach, kolejności ładowania zasobów albo architekturze komponentu.

    JavaScript w SEO: trzeba rozumieć skutki, niekoniecznie pisać aplikacje

    Od kodu źródłowego przez JavaScript do DOM

    Kod źródłowy to odpowiedź HTML otrzymana z serwera. DOM jest aktualną strukturą dokumentu, którą JavaScript może zmienić po załadowaniu strony. Trzecia warstwa to sama prezentacja wizualna.

    Załóżmy, że kluczową informacją jest komunikat „Dostawa w 24 godziny”.

    W początkowym HTML może wyglądać tak:

    Początkowy HTML
    &lt;p class="delivery"&gt;Dostawa w 24 godziny&lt;/p&gt;

    Może też zostać dodana do DOM przez JavaScript:

    Treść dodana do DOM przez JavaScript
    &lt;div id="delivery"&gt;&lt;/div&gt;
    &lt;script&gt;
      document.querySelector('#delivery').textContent = 'Dostawa w 24 godziny';
    &lt;/script&gt;

    W trzecim wariancie tekst jest tylko wizualnym dodatkiem CSS:

    HTML z pustym elementem
    &lt;span class="delivery"&gt;&lt;/span&gt;
    Tekst generowany przez CSS
    .delivery::before {
      content: "Dostawa w 24 godziny";
    }

    Pierwsza wersja jest dostępna w początkowym HTML i DOM. Druga pojawia się w DOM dopiero po wykonaniu skryptu. Trzecia może być widoczna na ekranie, ale tekst z właściwości content nie staje się częścią DOM i nie powinien przekazywać informacji ważnej dla indeksowania.

    Procedura diagnostyczna jest prosta: sprawdź kod źródłowy, następnie wyrenderowany DOM w Chrome DevTools, a na końcu użyj testu adresu URL w Google Search Console (Inspekcja URL). Pozwala to rozstrzygnąć, czy problem dotyczy dostarczenia treści, renderowania, czy wyłącznie prezentacji.

    Crawling, renderowanie i indeksowanie treści dynamicznej

    Google potrafi wykonywać JavaScript, lecz nie oznacza to, że każda treść dynamiczna zostanie przetworzona prawidłowo. Skrypt może zakończyć się błędem, żądanie API może nie zwrócić danych, a treść może pojawiać się dopiero po kliknięciu, którego robot nie wykona.

    Minimalna znajomość JavaScript w technicznym SEO obejmuje rozpoznawanie zdarzeń, zmian w DOM, błędów w konsoli i żądań w panelu Network. Specjalista powinien też ustalić, czy linki, metadane i główna treść istnieją bez interakcji użytkownika.

    Sama obecność JavaScript nie jest problemem rankingowym. Problemem może być dopiero sposób dostarczania treści, odkrywania adresów lub obsługi błędów.

    CSR, SSR i wpływ skryptów na INP

    W modelu CSR istotna część strony powstaje po stronie przeglądarki. SSR dostarcza wyrenderowaną treść z serwera, dzięki czemu podstawowy dokument może być dostępny przed wykonaniem skryptów. Żadna z tych etykiet nie przesądza jednak o jakości SEO — liczy się efekt konkretnego wdrożenia, ale osobiście preferuję SSR, bo odrazu dostarczamy robotom Google HTML.

    JavaScript wpływa również na wydajność. Długie zadania zajmujące główny wątek mogą opóźniać reakcję strony na działanie użytkownika, co znajduje odzwierciedlenie w INP. Chrome DevTools, Lighthouse i PageSpeed Insights pomagają znaleźć podejrzane zasoby, ale wynik narzędzia SEO nie jest jeszcze diagnozą przyczyny.

    Jakiego poziomu kodu potrzebują różne role i stanowiska SEO

    Przyjmijmy skalę: 0 — świadomość, 1 — odczyt i diagnoza, 2 — bezpieczna edycja, 3 — samodzielna implementacja. Oczekiwany poziom zależy bardziej od odpowiedzialności i technologii serwisu niż od etykiety „junior”, „mid” lub „senior”.

    RolaHTMLCSSJavaScriptZadanie potwierdzające poziom
    Junior SEO10–10–1 Znajduje noindex, canonical, nagłówki i linki oraz sprawdza rezultat zmiany w CMS
    Content SEO1–210–1 Publikuje poprawnie zbudowany artykuł, kontroluje odnośniki, obrazy i metadane
    SEO generalist21–21 Diagnozuje problem szablonu, różnice mobilne i treść zależną od renderowania
    Specjalista e-commerce21–21–2 Analizuje filtry, paginację, linkowanie kategorii i dynamiczne warianty produktów
    Technical SEO2–322–3 Bada DOM, routing, żądania sieciowe i wydajność oraz przygotowuje rozwiązanie techniczne
    Freelancer SEO2–32–32–3 Samodzielnie diagnozuje problemy w kodzie i DOM, wykonuje bezpieczne zmiany HTML i CSS, analizuje JavaScript, renderowanie oraz potrafi wdrożyć poprawkę lub przygotować precyzyjny brief dla developera
    SEO manager1–211–2 Ocenia ryzyko, priorytet i kryteria odbioru rekomendacji
    Konsultant SEO21–21–2 Łączy dowody z kodu z testowalnym briefem technicznym dla zespołu

    Senior SEO nie zawsze potrzebuje poziomu 3. Manager może mieć większą odpowiedzialność biznesową niż Technical SEO, mimo że nie wdraża kodu produkcyjnego. Z kolei specjalista e-commerce pracujący z rozbudowanym filtrowaniem może potrzebować głębszej diagnostyki JavaScript niż generalista obsługujący prostą stronę usługową.

    Macierz nie służy do porównywania specjalisty SEO z frontend developerem. Ma wskazać, czy potrafisz samodzielnie rozpoznać problem, zebrać dowody i kontrolować rezultat na poziomie wymaganym przez Twoją rolę.

    Jak badać kod i zdecydować: naprawić samemu czy przekazać developerowi?

    Narzędzia do diagnostyki bez zaawansowanego programowania

    Chrome DevTools pozwala analizować DOM, style, błędy konsoli, żądania sieciowe i wydajność. Google Search Console pokazuje informacje związane z dostępnością oraz indeksowaniem konkretnego adresu. Crawler renderujący JavaScript pomaga badać większe zbiory stron, ale nie zastępuje ręcznego sprawdzenia reprezentatywnych szablonów.

    Lighthouse dostarcza dane laboratoryjne, natomiast PageSpeed Insights może również prezentować dostępne dane terenowe. Te źródła odpowiadają na inne pytania i nie powinny być traktowane zamiennie. Jeśli potrzebna jest analiza wielu szablonów, dyrektyw i zależności między renderowaniem a indeksowaniem, przydatny będzie pełny audyt SEO strony WWW, a nie kontrola pojedynczego wyniku narzędzia.

    Model „rozpoznaj, napraw albo deleguj”

    SytuacjaCo SEO sprawdza samKiedy może zmienić samKiedy angażuje developeraKryterium akceptacji
    meta robots zawiera noindex Źródło dyrektywy, ustawienia CMS, nagłówki HTTP Gdy to odwracalna opcja w kontrolowanym CMS Gdy dyrektywa pochodzi z szablonu lub logiki aplikacji Docelowy URL zwraca właściwą dyrektywę w HTML i nagłówkach
    Canonical wskazuje zły URL Kod źródłowy, DOM, reguły wariantów Przy pojedynczej, ręcznej konfiguracji Gdy błąd dotyczy całego szablonu Każdy wskazany typ strony generuje oczekiwany canonical
    Element wygląda jak link, ale nie ma href Wygenerowany HTML i działanie bez obsługi kliknięcia Przy prostej edycji treści lub komponentu CMS Gdy kontrolkę tworzy aplikacja lub router URL jest obecny w prawidłowym a href
    Treść pojawia się dopiero po interakcji Źródło, DOM, konsolę, żądania API Zwykle nie zmienia samodzielnie Gdy trzeba zmienić logikę pobierania lub renderowania Kluczowa treść jest dostępna po renderowaniu bez wymagania kliknięcia
    Dynamiczny komponent przesuwa układ Element powodujący zmianę i moment załadowania Przy prostej korekcie wymiarów w bezpiecznym środowisku Gdy problem wynika z logiki komponentu lub kolejności zasobów Komponent ma zarezerwowane miejsce i nie powoduje nieoczekiwanego przesunięcia

    Jak badać kod i zdecydować: naprawić samemu czy przekazać developerowi?

    Brief techniczny i weryfikacja zmiany po wdrożeniu

    Dobry brief zawiera opis problemu, przykładowe adresy, dowody, oczekiwany rezultat, ograniczenia oraz sposób testowania. „Proszę poprawić linki” nie jest wymaganiem, które da się jednoznacznie odebrać.

    Poniżej scenariusz demonstracyjny pokazujący pełny przebieg zmiany.

    Kod przed poprawką
    &lt;div class="category-link" onclick="goTo('/buty-trekkingowe')"&gt;
      Buty trekkingowe
    &lt;/div&gt;

    Diagnoza SEO: element umożliwia przejście użytkownikowi, lecz nie jest semantycznym odnośnikiem. Adres zależy od obsługi zdarzenia JavaScript, co zmniejsza niezawodność jego odkrywania.

    Kod po poprawce
    &lt;a class="category-link" href="/buty-trekkingowe"&gt;
      Buty trekkingowe
    &lt;/a&gt;

    Test: sprawdzenie wygenerowanego HTML, przejście przy wyłączonej obsłudze JavaScript i kontrola zachowania wizualnego oraz obsługi klawiaturą.

    Kryterium akceptacji: docelowy URL występuje w href w wyrenderowanym HTML, przejście nie zależy wyłącznie od zdarzenia onclick, a komponent zachowuje dotychczasową funkcję dla użytkownika.

    Przekazanie briefu nie kończy odpowiedzialności SEO. Po wdrożeniu trzeba ponownie zbadać kod, DOM i zachowanie strony, a przy problemach z indeksowaniem także dane w Google Search Console.

    Ścieżka nauki HTML, CSS i JavaScript oparta na zadaniach SEO

    Kolejność nauki: HTML, DevTools i CSS, potem JavaScript

    Najpierw naucz się HTML:

    1. struktury dokumentu,
    2. adresów URL, 
    3. head,
    4. odnośników,
    5. obrazów,
    6. danych strukturalnych,
    7. dyrektyw wpływających na indeksowanie.

    To obszar, który najszybciej przydaje się w publikacji treści, audytach i obsłudze CMS.

    Następnie przejdź do Chrome DevTools oraz podstaw CSS. Ćwicz sprawdzanie stylów elementu, reguł responsywnych, ukrytej treści i przyczyn niestabilnego układu.

    JavaScript poznawaj przez zadania diagnostyczne:

    1. porównuj źródło z DOM,
    2. śledź żądania w panelu Network,
    3. czytaj błędy konsoli
    4. sprawdzaj działanie strony bez skryptów.

    Nie musisz zaczynać od budowy aplikacji. Python, SQL i API mogą później wspierać automatyzację SEO, lecz nie zastąpią rozumienia tego, co faktycznie trafia do przeglądarki.

    Ćwiczenia wykonuj na lokalnym pliku, stronie testowej albo środowisku stagingowym. Produkcyjny sklep nie jest dobrym miejscem do nauki metodą prób i błędów.

    Praktyczny test gotowości technicznej

    Możesz uznać, że masz użyteczne podstawy, jeśli potrafisz:

    • znaleźć titlemeta robots, canonical, hreflang i JSON-LD;
    • odróżnić prawidłowy link od elementu obsługiwanego wyłącznie przez JavaScript;
    • porównać kod źródłowy z DOM;
    • ustalić, dlaczego element jest niewidoczny albo przesuwa układ;
    • rozpoznać treść zależną od interakcji lub żądania API;
    • przygotować brief z dowodami, rezultatem i kryterium akceptacji;
    • sprawdzić efekt po wdrożeniu.

    Na rozmowie rekrutacyjnej bardziej przekonujący będzie niewielki audyt strony testowej z poprawnie udokumentowanym procesem niż deklaracja znajomości trzech języków. Liczy się sposób rozumowania: obserwacja, hipoteza, test, rekomendacja i kontrola rezultatu.

    Granice technicznej wiedzy SEO i ryzyka nadmiernego upraszczania

    Framework, JavaScript lub model CSR nie są automatycznie wadą SEO. Dobry wynik Lighthouse również nie dowodzi, że treść jest poprawnie indeksowana, linki dostępne dla crawlera, a strona odpowiada na intencję użytkownika.

    Podobnie poprawa Core Web Vitals nie gwarantuje wzrostu pozycji. LCP, INP i CLS opisują istotne aspekty doświadczenia użytkownika, ale nie są kompletną oceną jakości serwisu. Nie należy też przedstawiać kliknięć, subskrypcji czy pojedynczego wskaźnika zaangażowania jako potwierdzonych, bezpośrednich czynników rankingowych bez odpowiednich dowodów.

    Zaawansowana znajomość kodu nie uprawnia specjalisty do pomijania kopii bezpieczeństwa, kontroli wersji, testów i procesu developerskiego. Najbardziej rozsądny standard pozostaje czytelny: HTML znać praktycznie, CSS diagnostycznie, a JavaScript co najmniej na poziomie jego wpływu na DOM, renderowanie i indeksowanie. Pamiętaj o tym, że możesz swoje SEO wspierać przez AI - gdzie teraz zaawansowane modele LLM są już dla mnie poteżnymi asystentami do zaawansowanych diagnostycznych celów.

    FAQ

    Czy trzeba znać React, Vue lub Angular, aby analizować strony oparte na JavaScript?

    Nie trzeba biegle znać konkretnego frameworka. Ważniejsze jest sprawdzenie końcowego DOM, generowanych odnośników, żądań sieciowych i dostępności treści po renderowaniu.

    Co zrobić, jeśli developer twierdzi, że Google na pewno wyrenderuje całą treść?

    Poproś o weryfikację konkretnego szablonu i adresu URL. Dowodem powinien być wyrenderowany HTML oraz wynik inspekcji w Google Search Console, a nie ogólne założenie o możliwościach Google.

    Jak ćwiczyć edycję kodu bez ryzyka uszkodzenia firmowej strony?

    Użyj lokalnego pliku HTML, własnej strony testowej albo środowiska stagingowego. W CMS pracuj na kopii i upewnij się, że zmianę można łatwo wycofać.

    Co poprawić najpierw, jeśli sklep nie pokazuje robotom treści filtrów i kategorii?

    Najpierw ustal, czy problem dotyczy braku odnośników, renderowania, routingu, blokady indeksowania czy strategii adresów URL. Dopiero diagnoza pokaże, czy potrzebna jest korekta HTML, JavaScript, czy zasad indeksacji filtrów.

    Czy Python i SQL mogą być ważniejsze dla SEO niż nauka pisania JavaScript?

    Tak, szczególnie w rolach związanych z analizą danych i automatyzacją. Nie zwalnia to jednak z rozumienia wpływu JavaScript na frontend serwisu.

    Jak pokazać techniczne umiejętności podczas rekrutacji bez komercyjnego doświadczenia?

    Przygotuj krótki audyt strony testowej z dowodami z Chrome DevTools, priorytetami i testowalnym briefem technicznym. Nie przedstawiaj scenariusza demonstracyjnego jako projektu klienta.

    Zdjęcie autora Bartosza Politowskiego

    Bartosz Politowski

    Specjalista SEO & Web Developer

    Pomagam firmom rosnąć dzięki SEO, analityce i mądremu contentowi. Tworzę i modernizuję strony / sklepy, układam roadmapy i plany contentowe, a kampanie oceniam językiem biznesu.