Skategoryzowane rozszerzenia do programu Raycast

Korzystasz z Mac'a? To Raycast na pewno poprawiłby Twój workflow. 

Dlaczego Raycast jest super?

Raycast to zamiennik natywnej wyszukiwarki Spotlight, która jest dostępna podczas klikania `Cmd`+`Spacja`. Dzięki Raycastowi masz dostęp do wielu funkcji z pomocą klawiatury. Możesz na przykład:

  • Kontrolować układ otwartych okienek
  • Kontrolować Spotify, Apple Music lub inne odtwarzacze audio 
  • Mieć bezpośredni dostęp do OpenAi
  • Otwierać ostatnie projekty VS Code
  • Generować hasła 
  • i wiele, wiele innych

Obecnie znajduje się ponad 1700 rozszerzeń do Raycast, tylko ciężko do nich dotrzeć.

Dlaczego ciężko jest znaleźć rozszerzenia Raycast?

Strona "sklepu" z rozszerzeniami nie ma rozwiniętego systemu kategoryzacji. Do tego pojedyncza strona wyświetla tylko 10 rozszerzeń. To wszystko powoduje problem ze znalezieniem odpowiednich rozszerzeń do konkretnego przypadku.

Screenshot 2024 10 14 at 07.30.56

Skąd wziąłem potrzebne dane?

Gdybym nie miał żadnych manier to bym po prostu użył web scrapingu i odczytał dane bezpośrednio ze strony Raycast. Jednak dla mnie takie rozwiązanie nie wchodziło w grę. Wolałem mieć rozwiązanie na którym mogę polegać i nie będzie łamało żadnych zasad.

Repozytorium na Github

Po bardzo krótkim researchu znalazłem konkretne repozytorium w którym Raycast zbiera informacje o dostępnych rozszerzeniach.  Zrobiłem szybki fork i sklonowałem całe repozytorium na komputer. Potem przy pomocy prostego skryptu, zlepiłem pliki `package.json` z każdego rozszerzenia do jednej tablicy. W ten sposób miałem do dyspozycji wszystkie informacje o rozszerzeniach, których potrzebowałem. 

Proces kategoryzacji

Do kategoryzacji użyłem OpenAI API. Na początku korzystałem z modelu GPT-3.5-Turbo-0125, który zapewniał kontrolowany output w formacie JSON. Potem jednak ta opcja została dorzucona do nowych modeli i w momencie pisania tego tekstu, korzystam z GPT-4-turbo. 

Prompt

Miałem trudność w dobraniu odpowiedniego promptu, który będzie korzystał tylko z podanych przeze mnie kategorii i nie będzie tworzył Własnych. Na szczęście po kilku próbach udało się osiągnąć zamierzony efekt, choć czuję, że jeszcze jest szansa na poprawę. Muszę tylko zdobyć jeszcze trochę wiedzy.

Jak zautomatyzowałem skrypty?

Żeby ułatwić sobie życie, stworzyłem prosty workflow do mojej pracy i teraz całość robię prawie jednym skryptem (w wolnych chwilach dalej automatyzuję):

  1. Najpierw automatycznie synchronizuję fork repozytorium i robię `git pull origin`.
  2. W lokalnym repozytorium ze skryptami tworzę folder dla obecnej daty.
  3. Kopiuję do tego folderu złączone pliki `package.json` z zsynchronizowanego repozytorium .
  4. Porównuję plik z plikiem z poprzedniej daty i znajduję nowe rozszerzenia . 
  5. Odpalam skrypt do wygenerowania kategorii za pomocą OpenAI.
  6. Kiedy już mam pełną listę skategoryzowanych rozszerzeń to generuję plik Markdown do Readme.
  7. Kopiuję plik Readme do mojego repozytorium z kategoryzowanymi rozszerzeniami i publikuję zmiany.

Jak tylko będę miał więcej czasu to chętnie wrzucę całość na serwer i całkowicie zautomatyzuję proces.

Moje repozytorium

Tutaj znajdziesz moje repozytorium ze skategoryzowanymi rozszerzeniami Raycast.