Naprawa adresów URL ze statusem «Discovered / Crawled – Currently Not Indexed» za pomocą DeepSeek Harness

Uruchom pipeline indeksacji Search Console w DeepSeek Harness: jednorazowa partia przez dsh --profile headless lub interaktywne sesje w Web UI z cotygodniowym harmonogramem — obie ścieżki wysyłają listę przez Google Indexing API (200 URL dziennie).

DeepSeek Harness (dsh) uruchamia agentów, którzy wykonują realną pracę — a niewiele zadań SEO pasuje lepiej niż pipeline nieindeksowanych URL: odczytaj listę, sprawdź każdy URL, sklasyfikuj, poczekaj na zatwierdzenie, wyślij, zweryfikuj. Każdy etap to polecenie lub plik — dokładnie terytorium, na którym żyją agenci harnessu.

Dwa pytania determinują Twoją konfigurację. Potrzebujesz jednorazowej partii, którą można zeskryptować i wstawić do crona? Wybierz headless. Chcesz widzieć, jak wszystko działa, odpowiadać na pytania agenta i zatwierdzać partię po partii w czacie? Użyj Web UI. Ten przewodnik pokazuje obie ścieżki; leżący u podstaw pipeline jest identyczny. Głębokie wyjaśnienie dwóch statusów (w tym tego, dlaczego Google przeszukuje jedne strony, a inne nie) znajdziesz w wersji tego procesu dla agenta Hermes. Tutaj skupiamy się na wykonaniu przez dsh.

Wybór ścieżki

Jednorazowa partia headless

Web UI + harmonogram

Idealne do

Zeskryptowane partie, cron, uruchomienia w stylu CI, testy

Interaktywny triaż, pierwsza konfiguracja, poznawanie decyzji agenta

Start

dsh --profile headless "zadanie"

dsh web (otwiera 127.0.0.1:3080)

Zatwierdzanie

Lista wstępnie zatwierdzona w pliku; jeśli reguły wymagają człowieka, agent pyta swoim narzędziem pytań

Pyta na żywo w czacie, zatwierdzasz partia po partii

Harmonogram

cron (lub narzędzie harmonogramu dsh, jeśli Twój profil ładuje wtyczkę Schedule)

To samo, ale każde uruchomienie jest widoczne

Wynik

Pliki raportów w folderze projektu

Pliki raportów plus transkrypt czatu

Schemat decyzyjny porównujący ścieżkę jednorazowej partii headless z pętlą Web UI plus harmonogram

Partie — headless, pierwsza konfiguracja — Web UI. Pipeline poniżej jest identyczny.

Obie ścieżki dzielą jedną zasadę: etap zapisu (wysyłka do Google) pozostaje za bramą ludzkiego zatwierdzenia. W trybie headless oznacza to, że przeglądasz pliki utworzone przez agenta, zanim pozwolisz mu wykonać polecenia wysyłki. W trybie web zatwierdzasz w czacie.

Co otrzymujesz

Folder projektu indexing/ ze: spisem URL, sklasyfikowanymi listami (to-submit.txt, skip.txt, needs-fix.txt), zatwierdzoną kolejką wysyłki i dziennikami uruchomień. Przy każdym uruchomieniu dsh wydaje krótki raport: ile wysłano, ile pominięto i dlaczego, co się zmieniło od poprzedniego razu. Pierwsza konfiguracja 60–90 minut (głównie dane uwierzytelniające Google), cotygodniowe uruchomienie 15 minut.

Przed rozpoczęciem

  • dsh zainstalowany i skonfigurowany. Zaktualizuj przez npx @deepseek-ai/dsh@latest web, jeśli trzeba. Twój klucz API i ustawienia w ~/.dsh/ (profiles, sessions, settings.yaml); dsh web się uruchamia lub zadanie headless kończy się sukcesem = instalacja potwierdzona.
  • Właściwość GSC, której jesteś właścicielem, w formacie sc-domain:example.com.
  • Dane do odczytu: klient OAuth dla Search Console API (client ID + secret).
  • Dane do zapisu: projekt Google Cloud z włączonym Indexing API, klucz JSON konta usługi, a e-mail konta usługi dodany jako właściciel w GSC → Ustawienia → Użytkownicy i uprawnienia. 403 przy wysyłce = ten krok nieudany.
  • Dwa foldery skryptów GSC w workspace: skill odczytu (sitemap, Search Analytics, sprawdzanie URL) i skill indeksacji (index_submit.py). Python 3 i pip install google-auth google-api-python-client.
  • Folder projektu, np. ~/gsc-indexing-project z data/, scripts/, logs/.

Część Google jest identyczna dla każdego agenta; dokumentacja skilla gsc-indexing przeprowadzi Cię przez konsolę Cloud: włącz Indexing API, utwórz konto usługi, pobierz klucz, dodaj je jako właściciela.

Ścieżka A: partia headless

Tryb headless to dsh --profile headless "zadanie": jedno zadanie, jedna odpowiedź, koniec. Umieszczasz cały pipeline w jednym prompcie albo dzielisz na kilka uruchomień podczas debugowania.

Pierwsze uruchomienie (z folderu projektu):

bash
dsh --profile headless "Wykonaj etap 1 pipeline'u indeksacji GSC. Skryptem gsc_query.py wypisz sitemap dla sc-domain:example.com, pobierz wszystkie URL z lastmod, zdeduplikuj i zapisz do data/url-inventory.csv. Podaj podsumowanie."

Dobry wynik: prawdziwy CSV z podsumowaniem zgodnym z raportem sitemap w GSC i bez wymyślonych kolumn. Kontrola jakości: otwórz plik i sprawdź pięć losowych URL. Jeśli agent zgłasza błąd uwierzytelniania, powtórz przepływ OAuth GSC i spróbuj ponownie; skrypt odczytu potrzebuje świeżego tokena.

Etap 2:

bash
dsh --profile headless "Sprawdź URL z data/url-inventory.csv przez URL Inspection API i podziel na data/to-submit.txt, data/skip.txt (z powodem w każdym wierszu) i data/needs-fix.txt. Uwzględnij tylko URL z lastmod z ostatnich 90 dni."

Agent wykonuje skrypty sprawdzania partiami (API ma limity częstotliwości na właściwość; aktualny limit w Google Cloud Console). Sprawdź podział: w liście pominiętych powinny dominować noindex, odrzucenia canonical i duplikaty. Jeśli needs-fix jest pusty na stronie z tysiącami URL, rozszerz okno wejściowe.

Etap 3 — brama zatwierdzenia, nigdy bez nadzoru:

bash
dsh --profile headless "Przeczytaj data/needs-fix.txt i data/skip.txt. Przygotuj kolejkę poprawek i wysyłek w formie tabeli: URL, prawdopodobna przyczyna (brak linków wewnętrznych, duplikat, canonical, noindex, słaba treść, soft 404), dowód, proponowane działanie, poziom ryzyka. Nic nie wysyłaj."

Przejrzyj tabelę w raporcie, przytnij data/to-submit.txt do URL, które zatwierdzasz, i wykonaj etap 4:

bash
dsh --profile headless "Wyślij URL z data/approved-urls.txt skryptem indeksacji (index_submit.py submit --urls-file data/approved-urls.txt). Najpierw wykonaj check-auth. Zapisz każdy wynik w logs/submissions.log."

Oczekiwany wynik: wiersz wyniku powiadomienia dla każdego URL, bez 403. Odzyskiwanie: 403 oznacza, że konto usługi nie jest właścicielem właściwości; 429 — trafiłeś w limit 200/dzień lub 600/minutę — rozłóż listę na dni. Jeśli uruchomienie umarło w połowie, wznowij przez dsh --profile headless --resume <session>.

Ścieżka B: Web UI i cotygodniowy harmonogram

dsh web otwiera interfejs przeglądarkowy na 127.0.0.1:3080. Te same etapy, ale przez czat i interaktywnie: agent prosi o potwierdzenie list klasyfikacji i jeszcze raz przed każdym poleceniem wysyłki. Ten przepływ zatwierdzania na żywo to główny powód, by wybrać tę ścieżkę przy pierwszej konfiguracji: widzisz, co agent zamierza zrobić z Twoją właściwością Google, zanim to zrobi.

Gdy pipeline jest dopracowany, dodaj rytm. Wtyczka Schedule w dsh rejestruje schedule_create i powtarza zadania według timera w żywej sesji:

schedule_create: every 7 days, run "Inspect data/url-inventory.csv, classify new and changed URLs, and draft the submission queue. Do not submit."

Jeśli Twój profil nie ładuje wtyczki Schedule, wiersz crona wokół polecenia headless daje ten sam efekt:

bash
0 9 * * 1 cd ~/gsc-indexing-project && dsh --profile headless "Wykonaj cotygodniowy przegląd indeksacji GSC i przygotuj kolejkę wysyłki." >> logs/weekly.log 2>&1
Pętla cotygodniowego harmonogramu pipeline'u indeksacji dsh z zatrzymaniem na ludzkie zatwierdzenie

Harmonogram puszcza pierwsze trzy stacje; wysyłka pozostaje za ludzką bramą.

Nie umieszczaj etapu wysyłki w harmonogramie. Cotygodniowy przegląd, klasyfikacja i przygotowanie kolejki mogą działać bez nadzoru; wysyłka czeka na człowieka.

Zasady triażu, których używa agent

Klasyfikacja i kolejka opierają się na małej tabeli. Umieść ją w folderze projektu, aby każde uruchomienie używało tych samych reguł:

Przyczyna

Naprawa

Wysyłać po naprawie?

Brak linków wewnętrznych

Dodać kontekstowe linki ze zindeksowanych stron

Tak

Całkiem nowa strona

Nie ma czego naprawiać; wysłać raz i czekać 1–2 tygodnie

Tak, raz

Blokada w robots.txt

Usunąć blokadę ścieżki

Tak

Zduplikowana lub słaba treść

Przepisać, połączyć lub usunąć

Tylko po realnej zmianie

canonical wskazuje gdzie indziej

Poprawić, jeśli błąd; celowo — zostawić URL

Tylko po naprawie

noindex w momencie crawl'u

Usunąć noindex

Tak, po usunięciu

Soft 404, archiwa, bezużyteczne facety

Naprawić lub usunąć; stałe pominięcie

Nie

Głębsze czytanie dwóch statusów (w tym tego, dlaczego Google przeszukuje jedne strony, a inne nie) znajdziesz w przewodniku agenta Hermes. Przyczyny są takie same niezależnie od tego, który harness wykonuje pipeline.

Weryfikacja, potem cierpliwość

Po każdej partii sprawdź powiadomienie przez status: dowodzi to jedynie, że Google ma metadane URL, a nie że strona jest zindeksowana. Ponownie sprawdź wysłane URL po 3–7 dniach i porównaj statusy. Zdrowy wzorzec to discovered → crawled → indexed w ciągu 1–2 tygodni. Dane GSC przychodzą z kilkudniowym opóźnieniem, a Google ponownie przeszukuje według własnego harmonogramu — URL pozostający w „Crawled – currently not indexed" przez 10–14 dni po realnych poprawkach to werdykt o jakości treści, a nie problem z wysyłką. Plik dziennika czyni to widocznym: data, URL, typ powiadomienia, status sprawdzenia przy następnym uruchomieniu. Oto metryka: kurcząca się lista nieindeksowanych, a nie liczba powiadomień.

Uczciwe ograniczenia

  • Indexing API jest oficjalnie dokumentowane dla stron JobPosting i BroadcastEvent. Wysyłka zwykłych stron to powszechna praktyka, ale Google nie daje gwarancji i nie obiecuje wsparcia dla żadnego typu stron.
  • Przycisk „Poproś o zindeksowanie" w Search Console nie ma publicznego API. Indexing API to najbliższy skryptowalny kanał, ale nie klon przycisku.
  • Automatyzacja nie tworzy priorytetu. Jeśli strona nadal nie jest indeksowana po naprawie i wysyłce, następny krok to praca nad treścią, a nie kolejne zaplanowane uruchomienie.

Często zadawane pytania

Czy mogę pracować tylko w headless, bez Web UI? Tak. dsh --profile headless "zadanie" wykonuje zadanie i kończy. Dane uwierzytelniające pozostają w ~/.dsh/, a skrypty odczytu działają tak samo. Przejdź pipeline od początku do końca raz w Web UI, zanim zaczniesz skryptować.

Jeśli uruchomienie umarło, tracę pracę? Nie. Wznów przez dsh --profile headless --resume <session> i ponownie uruchom skrypt wysyłki; deduplikuje on URL, więc ponowne wysłanie już zawiadomionych URL z tej samej partii jest bezpieczne.

Zarządzam wieloma właściwościami GSC. Czy muszę wszystko przerabiać dla każdej strony? Skrypty przyjmują argument --site sc-domain:..., więc jeden workspace może zawierać spisy i dzienniki wielu właściwości. Trzymaj plik zatwierdzonej kolejki i polecenie wysyłki dla każdej właściwości; błąd limitu na jednej stronie nie blokuje pozostałych.

Autorka: Camille Rhodes, architektka ponad 300 przepływów pracy z AI w Auspia. Pisze o automatyzacji treści, systemach publikacji i procesach, które zamieniają agentów AI w niezawodne operacje wzrostu.

Poznaj ten temat

Kontynuuj tę samą ścieżkę wzrostu