PS PrestaShop Średnio zaawansowany

Thin Content Detector: dokumentacja

Automatyczne wykrywanie ubogiej treści, duplikatów i boilerplate'u w katalogu PrestaShop z sugestiami wzbogacenia przez AI. Instalacja, konfiguracja progów, dostawcy AI, skan cron i rozwiązywanie problemów.

Zaktualizowano Wersja modułu 1.0.0

DataFirefly Thin Content Detector automatycznie skanuje produkty, kategorie i strony CMS we wszystkich aktywnych językach sklepu. Wykrywa trzy toksyczne dla SEO wzorce (zbyt uboga treść, zduplikowane opisy i strony zdominowane przez boilerplate) i generuje sugestie wzbogacenia przez AI gotowe do wklejenia. Ten przewodnik obejmuje instalację, konfigurację, codzienne użytkowanie, planowanie cron i rozwiązywanie problemów.

Przegląd

Od Helpful Content Update Google aktywnie obniża strony, których treść jest zbyt krótka, zbyt podobna do innych stron lub zbyt zdominowana przez powtarzalne elementy. W sklepie e-commerce to typowo karty przejęte od dostawcy, kategorie z dwoma generycznymi zdaniami lub warianty dzielące 95 % opisu. Niewidoczne gołym okiem na 500 produktach, ale skumulowane, to właśnie one blokują ranking Twojej witryny.

Trzy typy wykrywania

  • Thin content: strony poniżej konfigurowalnego progu słów. Trzy poziomy powagi według odchylenia od progu (krytyczny poniżej 25 %, ostrzeżenie 25-75 %, notatka 75-100 %).
  • Duplikaty: wykrywanie w dwóch przebiegach: hash SHA1 dla duplikatów dokładnych (powaga 3), następnie podobieństwo Jaccarda powyżej konfigurowalnego progu dla quasi-duplikatów (powaga 2).
  • Stosunek template / treść: identyfikuje tokeny współdzielone ze stronami siostrzanymi (ta sama kategoria nadrzędna) i oblicza procent tokenów unikalnych per strona. Strona z 200 słowami, ale 90 % boilerplate’u jest równie toksyczna jak strona z 30 słowami.

Instalacja

  1. Wgraj ZIP modułu przez Moduły > Menedżer modułów > Wgraj moduł.
  2. Kliknij Zainstaluj. Moduł tworzy dwie tabele (ps_dfthincontent_issue i ps_dfthincontent_scan) oraz zakładkę administracyjną w menu Katalog.
  3. Wejdź do modułu przez Katalog > Thin Content (DataFirefly).
Zgodność. PrestaShop 8.0 do 9.x, PHP 7.4 do 8.3, MySQL 5.6+ / MariaDB 10.3+. Multisklep obsługiwany natywnie (unikalny klucz problemów zawiera id_shop). Żadna zależność Composer nie jest wymagana.

Konfiguracja

Kliknij przycisk Konfiguracja na pasku modułu. Dostępne są trzy panele.

Progi wykrywania

  • Minimum słów produkt: domyślnie 150. Każdy produkt, którego długi i krótki opis łącznie zawierają mniej niż 150 słów, zostanie zgłoszony.
  • Minimum słów kategoria: domyślnie 100.
  • Minimum słów strona CMS: domyślnie 250.
  • Próg podobieństwa Jaccarda: domyślnie 85 %. Powyżej dwie strony są uznawane za quasi-duplikaty.
  • Minimalny stosunek template: domyślnie 30 %. Poniżej strona jest uznawana za zbyt zdominowaną przez boilerplate.
Jaki próg wybrać? 150 słów na produkt to dobry punkt wyjścia dla większości sklepów. Przy tekstyliach lub materiałach eksploatacyjnych możesz zejść do 100. Przy elektronice technicznej lub artykułach domowych podnieś do 250. Dla podobieństwa Jaccarda 85 % łapie prawdziwe duplikaty bez zgłaszania każdego uzasadnionego wariantu; zejdź do 75 %, jeśli masz wiele bardzo zbliżonych wariantów do zróżnicowania.

Cele skanowania

  • Skanuj produkty (domyślnie ON).
  • Skanuj kategorie (domyślnie ON).
  • Skanuj strony CMS (domyślnie ON).
  • Automatyczny rescan przy zapisie (domyślnie OFF). Gdy jest włączony, każdy zapis produktu, kategorii lub strony CMS wyzwala celowany retest wyłącznie tego obiektu. W czasie rzeczywistym widzisz, czy Twoje przepisanie wystarcza do przekroczenia progów.

Konfiguracja AI

Sugestie wzbogacenia używają endpointu zgodnego z OpenAI (chat completions). Obejmuje to szeroki wachlarz dostawców:

  • OpenAI: endpoint https://api.openai.com/v1/chat/completions, zalecany model gpt-4o-mini (około 0,001 euro za sugestię).
  • Mistral AI: endpoint https://api.mistral.ai/v1/chat/completions, model mistral-small-latest.
  • Groq: endpoint https://api.groq.com/openai/v1/chat/completions, model llama-3.3-70b-versatile. Bardzo szybki.
  • Ollama lokalnie: endpoint http://localhost:11434/v1/chat/completions, dowolny pobrany model. Koszt zerowy.
  • Anthropic przez proxy zgodne z OpenAI.

Parametry do wprowadzenia:

  • Endpoint: pełny adres do /v1/chat/completions.
  • Model: identyfikator modelu u dostawcy.
  • Klucz API: Bearer token. Przechowywany w postaci zaszyfrowanej przez system konfiguracji PrestaShop.
  • Max tokens: domyślnie 600. Wystarczające dla standardowej sugestii wzbogacenia.
Klucz API nie jest obowiązkowy. Wykrywanie i śledzenie problemów działa bez AI. Tylko sugestie wzbogacenia wymagają skonfigurowanego endpointu. Możesz spokojnie używać modułu w czystym trybie audytu.

Użytkowanie: pulpit

Pulpit to strona główna modułu. Wyświetla:

  • Trzy główne liczniki: łączna liczba problemów otwartych, poprawionych, zignorowanych.
  • Podział według typu problemu: thin / duplicate / template.
  • Podział według typu obiektu: produkt / kategoria / strona CMS.
  • Bieżące progi: przypomnienie skonfigurowanych wartości.
  • 5 ostatnich skanów: data, czas trwania, liczba przeanalizowanych obiektów.
  • Przycisk „Uruchom pełny skan”: wyzwala skan synchroniczny przez AJAX. Modal wyświetla postęp i podsumowanie na koniec skanu.

Uruchamianie skanu

Kliknij Uruchom pełny skan. Skan przechodzi przez wszystkie aktywne języki, stosuje trzy analizatory na włączonych celach, zapisuje wykryte problemy w ps_dfthincontent_issue i oznacza jako fixed problemy, które nie są już wykrywane (na przykład jeśli wzbogaciłeś kartę od ostatniego skanu).

Na dużym katalogu (powyżej 5000 produktów) postaw na skan przez cron (zobacz niżej). Skan synchroniczny pozostaje użyteczny, ale może przekroczyć domyślny limit czasu PHP. Skan przez cron automatycznie zdejmuje ograniczenia przez set_time_limit(0) i memory_limit 512M.

Użytkowanie: lista problemów

Dostępna przez Zobacz problemy na pasku. Wyświetlanie stronicowane (50 na stronę) z zaawansowanymi filtrami:

  • Status: otwarty / poprawiony / zignorowany.
  • Typ problemu: thin / duplicate / template.
  • Typ obiektu: produkt / kategoria / CMS.
  • Język: filtr na jednym z aktywnych języków.
  • Wolne wyszukiwanie: po nazwie obiektu.

Każdy wiersz pokazuje powagę (czerwony / pomarańczowy / niebieski znacznik), typ problemu, typ obiektu z ikoną, nazwę, język, liczbę słów, właściwą metrykę (% podobieństwa lub % unikalności) i trzy przyciski akcji:

  • Sugestia AI: otwiera modal z sugestią wzbogacenia w HTML wygenerowaną na żądanie (zobacz następną sekcję).
  • Oznacz jako poprawiony: przenosi problem do statusu fixed. Pozostanie w historii, ale nie będzie już zaśmiecał liczników.
  • Ignoruj: przenosi problem do statusu ignored. Przydatne dla stron celowo krótkich (na przykład strona CMS „Kontakt”, krótka, ale uzasadniona).

Eksport CSV

Przycisk Eksportuj CSV pobiera całość problemów z bieżącego filtra. Eksport jest strumieniowany na wyjściu (porcje po 500 wierszy), aby obsłużyć duże katalogi bez nasycenia pamięci. Kodowanie UTF-8 z BOM do bezpośredniego otwarcia w Excelu. Separator: średnik.

Sugestie AI

Kliknij przycisk AI w dowolnym wierszu. Moduł wysyła żądanie do skonfigurowanego endpointu z promptem budowanym dynamicznie na podstawie typu problemu i typu obiektu:

  • Thin produkt: wzbogacić o USP, materiały, zastosowanie, pochodzenie, gwarancje.
  • Thin kategoria: wzbogacić o USP gamy, porady zakupowe, porównanie podkategorii.
  • Thin CMS: rozwinięcie redakcyjne, osadzenie w kontekście, przykłady.
  • Duplikat: zróżnicować kartę, skupiając się na tym, co czyni ją unikalną względem jej duplikatów.
  • Template: usunąć boilerplate, dodać elementy unikalne dla tej konkretnej strony.

Wiadomość systemowa wymusza zwrotkę w czystym HTML: wyłącznie znaczniki p, ul, li, h3. Bez markdownu, bez znaczników głównych. Wynik możesz wkleić bezpośrednio w pole opisu TinyMCE bez czyszczenia.

Sugestia jest przechowywana w bazie danych. Jeśli otworzysz modal później, wyświetli się natychmiast bez nowego wywołania API.

Zalecany workflow. Przefiltruj po powadze krytycznej, generuj sugestie jedna po drugiej, kopiuj każdą sugestię do odpowiedniej karty, zapisz. Jeśli automatyczny rescan jest włączony, problem przechodzi w stan fixed automatycznie, gdy tylko zapis pozwoli przekroczyć progi.

Cron: zaplanowane skany

Moduł udostępnia endpoint cron zabezpieczony tokenem, idealny do nocnych skanów:

https://twoj-sklep.pl/modules/dfthincontent/cron.php?token=TWOJ_TOKEN

Token jest generowany losowo przy instalacji i wyświetlany w panelu konfiguracji. Zachowaj go w poufności: daje dostęp do wyzwolenia pełnego skanu.

Przykład crontab (dzienny skan o 4:00)

0 4 * * * curl -s "https://twoj-sklep.pl/modules/dfthincontent/cron.php?token=TWOJ_TOKEN" > /dev/null 2>&1

Charakterystyka skanu cron

  • set_time_limit(0): brak limitu czasu PHP.
  • memory_limit 512M: ustawiany automatycznie.
  • Zwrotka JSON zawierająca liczbę przeanalizowanych obiektów, liczbę wykrytych problemów i całkowity czas trwania.
  • Walidacja przez hash_equals dla odporności na ataki czasowe.
Regeneracja tokenu. Jeśli podejrzewasz wyciek tokenu, odinstaluj i zainstaluj moduł ponownie: zostanie wygenerowany nowy token. Możesz też bezpośrednio zmodyfikować wartość DFTHIN_CRON_TOKEN w tabeli ps_configuration.

Architektura techniczna

Struktura tabel

  • ps_dfthincontent_issue: jeden rekord na wykryty problem. Klucz unikalny: (id_object, object_type, id_lang, id_shop, issue_type). Istotne pola: severity (1-3), word_count, content_hash (SHA1), metric_value (% podobieństwa lub unikalności), metric_data (JSON ze szczegółami), ai_suggestion, status, object_name, object_url.
  • ps_dfthincontent_scan: historia skanów. Data początku i końca, czas trwania, liczba elementów przeanalizowanych per typ, status.

Używane hooki

  • actionAdminControllerSetMedia: ładowanie CSS/JS i udostępnianie adresu AJAX przez Media::addJsDef.
  • actionProductUpdate: rescan zmodyfikowanego produktu, jeśli auto-rescan jest włączony.
  • actionObjectCategoryUpdateAfter: analogicznie dla kategorii.
  • actionObjectCmsUpdateAfter: analogicznie dla stron CMS.

Ograniczenia wydajnościowe

Wykrywanie duplikatów jest z natury O(n²): każda strona jest porównywana ze wszystkimi innymi stronami tego samego typu / języka / sklepu. Aby uniknąć eksplozji na bardzo dużych katalogach, moduł stosuje dwie ochrony:

  • Limit bezpieczeństwa na 1500 elementów per grupa (typ + język + sklep). Powyżej wykrywanie duplikatów jest wyłączane dla tej grupy, a ostrzeżenie trafia do dziennika.
  • Pre-filtrowanie po liczbie słów: podobieństwo Jaccarda jest obliczane wyłącznie między elementami, których liczba słów mieści się w oknie ±50 %. Eliminuje to zdecydowaną większość zbędnych porównań.

Rozwiązywanie problemów

Skan się nie uruchamia

  1. Otwórz konsolę sieci przeglądarki, kliknij Uruchom pełny skan, przyjrzyj się żądaniu AJAX do action=scanFull.
  2. Jeśli odpowiedź jest w HTML zamiast w JSON, to fatal PHP po stronie serwera: sprawdź logi PrestaShop (var/logs/) i PHP.
  3. Jeśli odpowiedź to 404, sprawdź, czy kontroler AdminDfThinContent jest zarejestrowany (tabela ps_tab).
  4. Jeśli odpowiedź to 403, token CSRF wygasł: odśwież stronę i spróbuj ponownie.

Sugestie AI zwracają błąd

  • Sprawdź, czy klucz API jest poprawny i aktywny u Twojego dostawcy.
  • Sprawdź, czy serwer może osiągnąć adres endpointu (firewall wychodzący, DNS).
  • Jeśli używasz lokalnego Ollama, sprawdź, czy usługa działa (ollama serve) i czy model jest pobrany (ollama pull llama3.3).
  • Sprawdź logi PrestaShop: moduł zapisuje tam błędy cURL i kody HTTP inne niż 200.

Cron zwraca 401 lub 403

Przekazany token się nie zgadza. Pobierz właściwy token z panelu konfiguracji i zastąp go w crontabie. Bez spacji, bez znaku nowej linii w wartości.

Zgłaszane są uzasadnione duplikaty

To typowy przypadek bardzo zbliżonych wariantów (rozmiary tego samego modelu, kolory). Trzy opcje:

  • Oznacz problemy jako zignorowane jeden po drugim.
  • Zwiększ próg podobieństwa Jaccarda do 95 % lub więcej.
  • Wyłącz skanowanie produktów i zostaw wyłącznie kategorie i CMS, jeśli Twój przypadek użycia nie wymaga skanu produktów.

Deinstalacja

Odinstaluj przez Moduły > Menedżer modułów > Odinstaluj. Moduł czysto usuwa dwie tabele bazy, zakładkę administracyjną i wszystkie klucze konfiguracji. Żadnych pozostałości.

Zapisz eksport CSV przed deinstalacją, jeśli chcesz zachować historię wygenerowanych sugestii AI. Po usunięciu tabel sugestie są bezpowrotnie tracone.

Zasoby

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia