Ja bardzo lubię czytać. Dlatego wolę kursy tekstowe niż wideo, format jest mi obojętny -Word, PDF albo HTML- to akurat tak.
Jestem też bardzo zazdrosny o szkolenia, które kupuję. Lubię mieć je uporządkowane i w chmurze, żeby móc dostać się do nich jak i kiedy chcę. Dlatego kiedy kurs jest wyłącznie online, próbuję pobrać materiały i zapisać je na swoim komputerze.
Tak mam w Mega chmurę z 37GB szkoleń.
Bo gdybym tego nie robił, kiedy chcę obejrzeć kurs online kupiony kilka lat temu -może cię zdziwi, że nadal wracam do szkoleń kupionych ponad dziesięć lat temu, które wciąż są całkowicie aktualne- musiałbym pamiętać, od kogo go kupiłem, URL, użytkownika i hasło…
A do tego ufać, że kurs nadal jest przechowywany na tym serwerze i nie został usunięty ani przeniesiony na inną domenę.
Za dużo zmiennych, których nie kontroluję.
Krótko mówiąc, czuję się spokojniej, mając materiał na swoim komputerze.
Są więc różne sposoby, żeby go zapisać na swoim komputerze:
- Pobierając HTML strona po stronie.
- Kopiując treść lekcji i wklejając ją do Worda.
- Używając rozszerzeń, które przekształcają ją do formatu markdown.
I jeszcze kilka innych, które zaraz wyjaśnię.
Są przypadki prostsze i bardziej złożone. Dlatego opisuję kilka rozwiązań, a na końcu to ostateczne dla najtrudniejszego przypadku, gdy:
- Jest dużo URLs.
- Potrzebny jest login.
- Linki muszą wskazywać na pobraną treść, a nie na aktualny serwer.
Przy okazji, dotyczy to kursów, których główna treść to tekst i obrazy, z linkami. Końcowe rozwiązanie nie nadaje się do kursów wideo.
Jeszcze jedna uwaga: to rozwiązanie dotyczy nie tylko kursów.
Stosunkowo nowy przypadek użycia, w którym robię to samo, to sytuacja, gdy chcę przekazać dokumentację na dowolny temat AI takiej jak NotebookLM, żeby zadawać jej pytania bezpośrednio. To jest o wiele wygodniejsze niż samodzielne grzebanie w URLs w poszukiwaniu czegokolwiek.
Jeśli próbowałeś poruszać się po dokumentacji Google Analytics dla deweloperów albo po dokumentacji Google Cloud, wiesz, o czym mówię.
Índice de Contenidos del Artículo
- Główne problemy: wiele lekcji, login i linki
- Opcje zapisywania kursu na komputerze
- Krok po kroku, jak zapisać kurs online na komputerze
- Krok 1: zainstalować Tampermonkey
- Krok 2: stworzyć skrypt
- Krok 3: otworzyć stronę indeksu kursu online
- Krok 4: sprawdzić, czy pojawia się panel
- Krok 5: wyczyścić stan przed testem
- Krok 5: przetestować na 3 lekcjach
- Krok 6: uruchomić pełne przechwytywanie
- Krok 7 (opcjonalnie): przenieść treść do Worda
- Krok 7 (opcjonalnie): przenieść treść do PDF
- Ograniczenia tego rozwiązania
- Podsumowanie
- Najczęstsze pytania
- Do czego służy zapisanie kursu online na PC?
- Jakie formaty można uzyskać, zapisując kurs online?
- Czy to rozwiązanie działa dla każdego kursu online?
- Jaki jest problem z zapisywaniem kursu strona po stronie?
- Czy opcja “Zapisz jako” w przeglądarce działa?
- Czy SingleFile to dobra opcja do zapisywania kursów online?
- Jaka jest zaleta konwersji lekcji do Markdown?
- Czy da się to zrobić skryptem z konsoli przeglądarki?
- Dlaczego Tampermonkey jest najbardziej solidnym rozwiązaniem?
- Czy trzeba umieć programować, żeby używać Tampermonkey?
- Jaki kontener HTML trzeba przechwycić w lekcji?
- Co zrobić, jeśli panel Tampermonkey się nie pojawia?
- Dlaczego warto najpierw przetestować tylko trzy lekcje?
- Co dzieje się z obrazami w wygenerowanym HTML?
- Dlaczego przenieść HTML do Worda?
- Dlaczego potem przenieść Worda do PDF?
- Jaki jest najlepszy format końcowy do zachowania kursu?
- Czy mogę użyć tego systemu, żeby przekazać dokumentację do NotebookLM lub innej AI?
- Czy ta metoda pobiera filmy z kursu?
- Czy legalne jest zapisanie kursu online lokalnie?
- Jaką metodę wybrać w zależności od przypadku?
Główne problemy: wiele lekcji, login i linki
Kursy zwykle są zbudowane jako kolekcja lekcji online. Każda lekcja ma własny URL, mniej więcej o takiej strukturze:
https://www.ejemplo.com/view/courses/nombre-del-curso/seccion/leccion
Platforma zwykle pokazuje boczny indeks z lekcjami, który pozwala się między nimi poruszać.
Moim celem jest uzyskanie czegoś takiego lokalnie:
curso/
├ index.html
├ 01-introduccion.html
├ 02-que-es-la-herramienta.html
├ 03-casos-de-uso.html
└ ...
Albo jeszcze lepiej, jednego pliku HTML z całym kursem, w stylu curso-local.html.
Z wewnętrznym indeksem, linkami-kotwicami ułatwiającymi nawigację i całą treścią lekcji jedną po drugiej, jakby to był PDF.
Poniżej możliwe rozwiązania.
Opcje zapisywania kursu na komputerze
Mamy kilka możliwości, o różnym stopniu złożoności i dla różnych sytuacji (mniej lub więcej URLs, potrzeba loginu lub nie, zapisywanie obrazów albo utrzymanie linków do aktualnego serwera…).
Wyjaśnię je od najprostszej do najbardziej złożonej.
#1. “Zapisz jako” z przeglądarki
Pierwsza droga jest najbardziej oczywista:
Plik > Zapisz jako > Kompletna strona internetowa
To pobiera stronę HTML i folder z powiązanymi zasobami: CSS, obrazami, skryptami, fontami itd.
Problem polega na tym, że ta metoda działa w miarę dobrze dla prostych stron z niewieloma URLs, ale nie dla dużych kursów. Bo oprócz czasu poświęconego na pobranie 80 URL-i jeden po drugim, pojawiają się inne komplikacje:
- Linki wewnętrzne nadal wskazują na URL online.
- Każda strona tworzy własny folder zasobów.
- Naprawdę użyteczna treść jest bardzo mała w porównaniu z całkowitym rozmiarem HTML.
- Lokalna nawigacja między lekcjami nie jest rozwiązana (trzeba później sięgać po skrypty).
- Jest za dużo niepotrzebnej treści: nagłówek, menu, footer, skrypty, piksele, style, chat, zasoby zewnętrzne itd.
Czyli technicznie dało się zapisać “stronę”, ale nie tworzyło to użytecznej wersji kursu.
Ta droga lepiej służy do zapisywania prostych stron internetowych niż kursów.
#2. SingleFile
Możesz użyć rozszerzenia typu SingleFile, które zapisuje kompletną stronę internetową w jednym pliku HTML. Na pierwszy rzut oka wydaje się dobrym rozwiązaniem, bo unika klasycznego folderu zasobów tworzonego przez przeglądarkę.
Wynik zwykle wygląda lepiej, ale często też nie rozwiązuje problemu.
Po pierwsze dlatego, że wygenerowany plik może ważyć kilkaset megabajtów ponieważ wewnątrz HTML zapisywane są osadzone fonty, ogromne style i dużo kodu, który nie był częścią treści kursu.
Poza tym, gdy treść generuje się dynamicznie (strona zrobiona we frameworkach JS, takich jak Vue albo React) rozszerzenie nie jest w stanie jej zebrać.
A do tego nadal pozostają te same podstawowe problemy z poprzedniego rozwiązania:
- Linki nadal wskazywały na stronę online.
- Zapisywana była ciężka kopia strony.
- Nie powstawała lokalna struktura do nawigacji.
- Nie było praktyczne powtarzanie tego dla 70, 80 albo 90 lekcji.
Wtedy staje się jasne, że SingleFile nadaje się do zapisania pojedynczej strony, ale nie do przekształcenia całego kursu w czystą wersję lokalną.
#3. Użyć rozszerzenia Markdown
Kolejna opcja to użyć rozszerzenia typu MarkDownload, zaprojektowanego do konwertowania strony internetowej na Markdown.
To podejście ma sens, jeśli chcesz:
- Wyciągnąć sam tekst.
- Usunąć niepotrzebny design.
- Wygenerować lekkie pliki.
- Żeby później połączyć je w dokument albo w lokalny HTML.
Problem w tym, że na razie rozszerzenie nie jest dostępne w Chrome Web Store.
Są alternatywne rozszerzenia, ale to, którego używałem wcześniej, było właśnie tym, więc wyjaśniam ideę i zostawiam tobie poszukanie podobnych opcji.
#4. Skrypt w konsoli
Kolejna droga to stworzenie małego skryptu z konsoli przeglądarki.
Są dwie drogi; założenie pierwszej jest takie:
- Otworzyć stronę indeksu kursu.
- Odczytać wszystkie linki do lekcji.
- Wykonać fetch() dla każdego URL.
- Wyciągnąć treść.
- Wygenerować jeden lokalny HTML.
Jeśli nie programujesz, ChatGPT bez problemu wygeneruje ci skrypt.
Dobre jest to, że pozwala to zautomatyzować proces, gdy już się zalogujesz, ale prawdopodobnie polityka bezpieczeństwa strony tego zabroni.
Możesz spróbować innego podejścia, również z konsoli:
- Otworzyć nowe okno.
- Przechodzić do każdej lekcji tak, jak zrobiłby to użytkownik.
- Poczekać, aż się załaduje.
- Odczytać DOM tego okna.
- Wyciągnąć treść.
Problem który możesz tu napotkać na stronach dynamicznych polega na tym, że przeglądarka nie zawsze pozwala dobrze kontrolować to okno, czytać jego treść albo wykryć, kiedy rzeczywiście było załadowane.
Żadna z tych dwóch formuł nie jest solidnym rozwiązaniem, ale opisuję je, bo używałem ich w pewnych momentach i mogą ci się przydać. Chociaż powiedziałbym, że lepiej przejść do następnej.
#6. Tampermonkey
Na pierwszy rzut oka najbardziej złożone, bo wymaga:
- Zainstalowania rozszerzenia.
- Wygenerowania skryptu.
- Który uruchamia się wewnątrz każdego URL.
Ale Tampermonkey bardzo to ułatwia, bo pozwala automatycznie ładować własny skrypt, gdy odwiedzasz określone URLs.
Tutaj sama przeglądarka wchodzi w każdą lekcję, a skrypt uruchamia się wewnątrz załadowanej strony.
Przebieg jest taki:
- Strona indeksu.
- Tampermonkey zbiera linki.
- Przechodzi do lekcji 1.
- Przechwytuje widoczną treść.
- Zapisuje stan w localStorage.
- Przechodzi do lekcji 2.
- Przechwytuje treść.
- …
- Generuje końcowy HTML.
To ma dużo większe szanse, żeby działać zawsze.
Kluczem jest znalezienie rzeczywistego kontenera treści kursu, co osiąga się przez sprawdzenie URL lekcji, żeby zlokalizować który blok HTML zawierał użyteczną treść.
Zwykle jest to .main-content albo #lesson-content albo coś podobnego. Zależy od tego, jak złożona jest strona kursu.
Gdy już to wykryjesz, tworzysz skrypt, który robi następujące rzeczy:
- Uruchamia się tylko na URLs kursu.
- Dodaje mały pływający panel z przyciskami (opcjonalnie).
- Zbiera linki do lekcji z indeksu kursu.
- Zapisuje te linki w localStorage.
- Automatycznie przechodzi przez każdą lekcję.
- Czeka, aż istnieje #lesson-content.
- Klonuje ten blok.
- Czyści skrypty, style, przyciski, iframe’y i niepotrzebne atrybuty.
- Zamienia obrazy i linki na absolutne URLs.
- Zapisuje każdą przechwyconą lekcję w localStorage.
- Po zakończeniu generuje jeden pobieralny plik HTML.
Szukanym rezultatem był plik taki jak ten, o którym wspominaliśmy we wstępie curso-local.html.
Przy okazji, nie musisz umieć programować. Nawet HTML. Prosisz ChatGPT o skrypt i robi go za ciebie (tak zrobiłem ja).
Ważne jest, żebyś znał formułę i z grubsza rozumiał jej działanie, ale sam kod generuje ci AI.
Krok po kroku, jak zapisać kurs online na komputerze
To jest wyjaśnione krok po kroku.
Krok 1: zainstalować Tampermonkey
Najpierw trzeba zainstalować Tampermonkey.
W Chrome, ze względu na obecne ograniczenia, może być konieczne:
- Zainstalowanie rozszerzenia.
- Wejście na chrome://extensions/.
- Włączenie trybu dewelopera (przełącznik u góry po prawej).
- Zezwolenie na wykonywanie skryptów użytkownika.
- Nadanie rozszerzeniu pozwolenia na uruchamianie się na stronie kursu.
To ważne, bo jeśli Tampermonkey nie ma uprawnień, panel się nie pojawi, nawet jeśli skrypt jest poprawny.
Krok 2: stworzyć skrypt
W Tampermonkey:
Dashboard > Create a new script
Usuwasz początkową treść i tworzysz swój skrypt.
Tutaj zostawiam ci skrypt, który wygenerował dla mnie ChatGPT, gdybyś był deweloperem i chciał na niego zerknąć, dostosować go albo przetestować w swoim przypadku. Pamiętaj, żeby zmienić URL kursu:
Krok 3: otworzyć stronę indeksu kursu online
Trzeba wejść na stronę początkową kursu. Jeśli wymaga loginu, najpierw się zaloguj i wejdź na stronę główną.
Krok 4: sprawdzić, czy pojawia się panel
Jeśli używasz skryptu, który tu zostawiam, po załadowaniu strony kursu powinien pojawić się czarny panel w prawym górnym rogu z trzema przyciskami:
- Test 3
- Todo
- Borrar estado
Jeśli się nie pojawia, trzeba sprawdzić:
- Czy Tampermonkey jest aktywny.
- Czy skrypt jest włączony.
- Czy @match zgadza się z URL kursu.
- Czy rozszerzenie ma uprawnienia do tej strony.
Krok 5: wyczyścić stan przed testem
Przed każdym testem warto nacisnąć przycisk Borrar estado.
To czyści wcześniejsze przechwyty zapisane w localStorage.
To ważne, bo podczas testów mogą zostać stare stany, które wygenerują niekompletne albo zdublowane pliki.
Krok 5: przetestować na 3 lekcjach
Po wyczyszczeniu stanu naciśnij przycisk Test 3.
Nie warto uruchamiać scrapera od razu dla całego kursu.
Skrypt przejdzie przez trzy lekcje i pobierze plik HTML.
Otwórz go i sprawdź:
- Czy indeks ma trzy lekcje.
- Czy tytuły są poprawne.
- Czy treść zaczyna się od prawdziwego tekstu lekcji.
- Czy nie przechwytuje footera.
- Czy nie pojawiają się puste bloki.
Krok 6: uruchomić pełne przechwytywanie
Jeśli test działa, wszystko jest gotowe. Wystarczy:
- Ponownie otworzyć stronę indeksu online.
- Nacisnąć Borrar estado.
- Nacisnąć Todo.
- Pozwolić przeglądarce samej nawigować.
- Nie zamykać karty.
- Poczekać, aż pobierze końcowy HTML.
I już wygeneruje się świetny lokalny plik HTML, który kompresuje cały kurs do kilku kilobajtów.
No dobrze, ale to, że waży tak mało, ma haczyk. Obrazy są podlinkowane do oryginalnego serwera, nie zostały pobrane na twój PC. To oznacza, że w pewnym momencie ich URL może się zmienić albo mogą zostać usunięte, a konsekwencją dla ciebie będzie to, że nie będziesz mógł ich zobaczyć.
Mógłbyś pobierać je pojedynczo i zmieniać URL w HTML, ale moim zdaniem ma to niewiele sensu. Dlatego dla mnie istnieje kolejny (opcjonalny) krok.
Krok 7 (opcjonalnie): przenieść treść do Worda
Mówię o Wordzie, ale możesz zrobić to w Google Docs, jeśli wolisz. Kwestia przepływu pracy.
W każdym razie ten krok jest bardzo prosty, bo wystarczy:
- Otworzyć HTML w przeglądarce.
- Zaznaczyć całą treść (ctrl+a w Windows).
- Skopiować ją (ctrl+c).
- Wkleić ją (ctrl+v) do nowego pliku Windows. Możliwe, że zajmie to kilka sekund w zależności od rozmiaru kursu.
- Zapisać.
Teraz obrazy zostaną wklejone do pliku Word i już będą twoje.
Minusem jest to, że plik nie będzie już ważył kilku kilobajtów, tylko megabajty. I może dużo: w moim ostatnim kursie 181MB. Bo to 136 stron z wieloma zrzutami ekranu. Żarty się skończyły.
Ale jest na to rozwiązanie. Czytaj dalej.
Krok 7 (opcjonalnie): przenieść treść do PDF
Ten jest jeszcze prostszy niż poprzedni, ale ma trik. Musisz:
- Otworzyć plik w Wordzie.
- Kliknąć “Zapisz jako”.
- Wybrać PDF.
- W opcjach, które się pojawią, wybrać „Minimalny rozmiar (publikacja online)”:

Voila!
Z 181 schodzi do 2MB, naprawdę bardzo dobrze.
Tak, obrazy tracą trochę jakości, ale z naddatkiem spełniają cel szkolenia.
W ten sposób mamy PDF ważący bardzo mało, z całym kursem, obrazami i linkami na naszym PC albo w naszej chmurze szkoleniowej, jeśli wolimy (a powinniśmy woleć).
Ograniczenia tego rozwiązania
To rozwiązanie służy do kursów lub dokumentacji w HTML, których treść to głównie tekst, obrazy i linki.
Nie służy do:
- Pobierania chronionych filmów.
- Przechwytywania treści serwowanych przez DRM.
- Zapisywania osadzonych odtwarzaczy.
- Omijania płatności lub ograniczeń dostępu.
- Zachowania w 100% oryginalnego designu platformy.
- Pobierania załączników wymagających dodatkowych uprawnień.
Jeśli kurs zawiera filmy osadzone w Cloudflare Stream, Vimeo, Wistia lub innych chronionych odtwarzaczach, skrypt może zachować miejsce albo link, ale nie pobierze filmu. To różne rzeczy.
Podsumowanie
Jeśli chcesz albo potrzebujesz zapisać kurs lokalnie, żeby mieć go zawsze pod ręką, albo pełną dokumentację, żeby przekazać ją AI i zadawać pytania, masz kilka opcji.
Ale jeśli źródło wymaga loginu i ma kilkadziesiąt albo kilkaset URLs, system z Tampermonkey jest najlepszy.
Jeśli jest mniej niż dziesięć URLs i nie chcesz sobie komplikować życia, możesz spróbować innych rozwiązań, o których wspominam.
Próbowałem w życiu wielu systemów -automatycznych i ręcznych- i żaden nie jest tak szybki i automatyczny jak ten.
Przynajmniej dopóki agenci AI nie zrobią tego za ciebie. Za darmo, oczywiście.
Prosić zawsze można.
Najczęstsze pytania
Do czego służy zapisanie kursu online na PC?
Służy do zachowania lokalnej kopii kursu, do którego już masz dostęp, i możliwości sprawdzenia go później bez zależenia od strony, loginu, serwera albo tego, czy platforma nadal istnieje.
Jakie formaty można uzyskać, zapisując kurs online?
Możesz zapisać go w HTML, Wordzie albo PDF. HTML jest lekki i nawigowalny, Word pozwala edytować i zachować obrazy, a PDF jest wygodny do przechowywania i konsultowania.
Czy to rozwiązanie działa dla każdego kursu online?
Nie. Działa dobrze z kursami opartymi na tekście, obrazach i linkach, ale nie służy do pobierania chronionych filmów, DRM, osadzonych odtwarzaczy ani treści bez pozwolenia.
Jaki jest problem z zapisywaniem kursu strona po stronie?
To, że jest wolne, chaotyczne i mało praktyczne: linki nadal wskazują na stronę online, tworzą się foldery zasobów i nie ma czystej lokalnej nawigacji.
Czy opcja “Zapisz jako” w przeglądarce działa?
Działa dla prostych stron lub pojedynczych URLs, ale nie wystarcza przy dużych kursach z wieloma lekcjami, loginem, bocznym indeksem i linkami wewnętrznymi.
Czy SingleFile to dobra opcja do zapisywania kursów online?
SingleFile może zapisać pełną stronę w jednym HTML, ale zwykle nie rozwiązuje dobrze całych kursów, bo generuje ciężkie pliki i nie tworzy lokalnej struktury nawigacji.
Jaka jest zaleta konwersji lekcji do Markdown?
Markdown pozwala wyciągnąć czysty i lekki tekst, usuwając zbędny design, ale bardzo zależy od użytego rozszerzenia i od tego, jak zbudowana jest strona.
Czy da się to zrobić skryptem z konsoli przeglądarki?
Tak, ale nie zawsze działa. Wiele platform blokuje fetch, zewnętrzne okna lub odczyty między stronami ze względów bezpieczeństwa, zwłaszcza gdy jest login albo treść dynamiczna.
Dlaczego Tampermonkey jest najbardziej solidnym rozwiązaniem?
Bo skrypt uruchamia się wewnątrz każdej prawdziwej strony kursu, przechwytuje widoczną treść, zapisuje postęp i generuje końcowy HTML ze wszystkimi lekcjami.
Czy trzeba umieć programować, żeby używać Tampermonkey?
Niekoniecznie. Możesz poprosić ChatGPT o skrypt, ale musisz umieć go przetestować, dostosować URL kursu i znaleźć właściwy kontener treści.
Jaki kontener HTML trzeba przechwycić w lekcji?
To zależy od platformy, ale zwykle jest to coś takiego jak.main-content,#lesson-contentalbo blok, który rzeczywiście zawiera tekst i obrazy lekcji.
Co zrobić, jeśli panel Tampermonkey się nie pojawia?
Sprawdź, czy Tampermonkey jest aktywny, czy skrypt jest włączony, czy@matchzgadza się z URL i czy rozszerzenie ma uprawnienia na tej stronie.
Dlaczego warto najpierw przetestować tylko trzy lekcje?
Bo dzięki temu sprawdzasz, czy przechwytuje właściwą treść, czy tytuły wychodzą dobrze i czy nie wchodzą menu, footery albo puste bloki przed uruchomieniem całego kursu.
Co dzieje się z obrazami w wygenerowanym HTML?
Zwykle pozostają podlinkowane do oryginalnego serwera, dlatego plik waży mało, ale jeśli te obrazy się zmienią albo znikną, przestaną być widoczne w twojej kopii lokalnej.
Dlaczego przenieść HTML do Worda?
Bo gdy kopiujesz HTML i wklejasz go do Worda, obrazy mogą zostać wewnątrz dokumentu, co czyni plik cięższym, ale też bardziej niezależnym.
Dlaczego potem przenieść Worda do PDF?
Bo PDF pozwala mocno zmniejszyć końcowy rozmiar pliku, szczególnie jeśli wybierzesz opcję minimalnego rozmiaru do publikacji online.
Jaki jest najlepszy format końcowy do zachowania kursu?
Do edycji Word. Do lekkiej nawigacji HTML. Do przechowywania, konsultowania i wrzucenia do chmury szkoleniowej zwykle PDF.
Czy mogę użyć tego systemu, żeby przekazać dokumentację do NotebookLM lub innej AI?
Tak. Możesz przekształcić długą dokumentację do HTML, Worda lub PDF i przesłać ją do AI, żeby zadawać pytania bez przeglądania URL po URL.
Czy ta metoda pobiera filmy z kursu?
Nie. Może zachować linki albo miejsca po odtwarzaczach, ale nie pobiera filmów z platform takich jak Vimeo, Wistia, Cloudflare Stream ani podobnych.
Czy legalne jest zapisanie kursu online lokalnie?
To zależy od warunków kursu. Ma sens do użytku osobistego z treścią, do której już masz dostęp, nie do omijania płatności, łamania zabezpieczeń ani redystrybucji materiałów.
Jaką metodę wybrać w zależności od przypadku?
Dla kilku stron “Zapisz jako” albo SingleFile mogą wystarczyć; dla czystego tekstu Markdown; dla dużych kursów z loginem i wieloma lekcjami Tampermonkey.

Dodaj komentarz