Przejdź do treści

Skategoryzowane rozszerzenia do programu Raycast

TL;DR

Diagnoza

Sklep rozszerzeń Raycasta ma ponad 1700 pozycji i żadnego sensownego sposobu, żeby je przeszukać: bez kategorii, po 10 wyników na stronę. Mogłem to obejść web scrapingiem strony, ale nie chciałem łamać regulaminu ani opierać się na czymś, co się posypie przy najbliższej zmianie layoutu. Zamiast tego znalazłem oficjalne repozytorium GitHub, w którym Raycast trzyma dane wszystkich rozszerzeń, zrobiłem forka i zbudowałem wokół niego skrypt: pobierz dane, skategoryzuj przez GPT, opublikuj gotowy katalog jako README.

flowchart TD
    subgraph Przed["Przed"]
        A1["Szukasz rozszerzenia<br/>w sklepie Raycast"] --> A2["Brak kategorii,<br/>10 wyników na stronę"]
        A2 --> A3["Przewijasz strony<br/>albo zgadujesz nazwę"]
    end
    subgraph Po["Po"]
        B1["Fork repo raycast/extensions<br/>+ skrypt scalający dane"] --> B2["Kategoryzacja<br/>przez OpenAI API"]
        B2 --> B3["Katalog na GitHubie,<br/>18 kategorii"]
    end

    classDef good    fill:#e6f2ea,stroke:none,color:#1f4d33,rx:14,ry:14
    classDef bad     fill:#faeaea,stroke:none,color:#5f2626,rx:14,ry:14
    classDef accent  fill:#27272a,stroke:#3f3f46,stroke-width:1px,color:#fafafa,rx:14,ry:14
    class A1,A2,A3 bad
    class B1,B2 good
    class B3 accent
    style Przed fill:transparent,stroke:#a1a1aa,stroke-width:1px,rx:14,ry:14
    style Po fill:transparent,stroke:#a1a1aa,stroke-width:1px,rx:14,ry:14
    linkStyle default stroke:#a8a8b3,stroke-width:1.5px

Co zrobiłem

Wyniki

MetrykaWartość
Rozszerzenia skategoryzowane1716
Kategorie18
Gwiazdki na GitHubie600
Forki12
Aktywne utrzymanie~5 miesięcy (maj–wrzesień 2024)

Problem

Dlaczego katalog rozszerzeń Raycast jest trudny do przeszukania?

Strona sklepu nie ma rozwiniętego systemu kategorii, a pojedynczy widok pokazuje tylko 10 rozszerzeń naraz. Przy ponad 1700 pozycjach to oznacza przewijanie dziesiątek stron albo trafienie w dokładną nazwę w wyszukiwarce. Jeśli nie wiesz dokładnie, czego szukasz (a często tak właśnie jest, bo dopiero odkrywasz, co Raycast potrafi), nie masz jak przeglądać sensownie.

Dlaczego nie web scraping?

Bo to rozwiązanie kruche i na granicy regulaminu. Strona może się zmienić w dowolnym momencie i scraper się wysypie; do tego czytanie danych bezpośrednio z frontendu cudzej strony, zamiast z danych, które ta firma sama publikuje, nie było dla mnie opcją. Oficjalne repozytorium GitHub, w którym Raycast trzyma package.json każdego rozszerzenia, dawało to samo, w sposób, na którym mogłem polegać.

Moja rola / zakres

Proces

Kluczowe decyzje i trade-offy

PodejścieRyzykoDecyzja
Web scraping strony Raycastłamanie regulaminu, kruche przy zmianie layoutuodrzucone
Fork oficjalnego repo GitHubzależne od struktury package.json w repowybrane

Jak to się skończyło

Repo ma 600 gwiazdek i 12 forków, ale ostatni commit to wrzesień 2024. Dziś jest zarchiwizowane. Oficjalny sklep Raycasta wciąż nie ma realnego przeglądania po kategoriach, tylko wyszukiwarkę i kilka linków w stopce, więc problem, który rozwiązywałem, nadal istnieje. Nie kontynuowałem, bo utrzymanie kategoryzacji obok pełnoetatowej pracy przestało się opłacać. To był świadomy koniec, nie porażka projektu.

Co z tego wyniosłem