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.
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
- Wgraj ZIP modułu przez Moduły > Menedżer modułów > Wgraj moduł.
- Kliknij Zainstaluj. Moduł tworzy dwie tabele (
ps_dfthincontent_issueips_dfthincontent_scan) oraz zakładkę administracyjną w menu Katalog. - Wejdź do modułu przez Katalog > Thin Content (DataFirefly).
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.
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 modelgpt-4o-mini(około 0,001 euro za sugestię). - Mistral AI: endpoint
https://api.mistral.ai/v1/chat/completions, modelmistral-small-latest. - Groq: endpoint
https://api.groq.com/openai/v1/chat/completions, modelllama-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.
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).
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.
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_equalsdla odporności na ataki czasowe.
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 przezMedia::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
- Otwórz konsolę sieci przeglądarki, kliknij Uruchom pełny skan, przyjrzyj się żądaniu AJAX do
action=scanFull. - Jeśli odpowiedź jest w HTML zamiast w JSON, to fatal PHP po stronie serwera: sprawdź logi PrestaShop (
var/logs/) i PHP. - Jeśli odpowiedź to 404, sprawdź, czy kontroler
AdminDfThinContentjest zarejestrowany (tabelaps_tab). - 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.
Zasoby
- Strona produktu: datafirefly.com/pl/product/dfthincontent/
- Wsparcie: support@datafirefly.com