Skip to content

Categorized extensions for Raycast

TL;DR

Diagnosis

Raycast’s extension store has over 1,700 entries and no real way to browse them: no categories, 10 results per page. I could have worked around that with web scraping, but I didn’t want to break the terms of service or depend on something that would break the moment the page layout changed. Instead I found the official GitHub repository where Raycast keeps the data for every extension, forked it, and built a script around it: pull the data, categorize it through GPT, publish a ready catalog as a README.

flowchart TD
    subgraph Before["Before"]
        A1["Look for an extension<br/>in the Raycast store"] --> A2["No categories,<br/>10 results per page"]
        A2 --> A3["Scroll through pages<br/>or guess the exact name"]
    end
    subgraph After["After"]
        B1["Fork raycast/extensions<br/>+ script that merges the data"] --> B2["Categorization<br/>via OpenAI API"]
        B2 --> B3["Catalog on GitHub,<br/>18 categories"]
    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 Before fill:transparent,stroke:#a1a1aa,stroke-width:1px,rx:14,ry:14
    style After fill:transparent,stroke:#a1a1aa,stroke-width:1px,rx:14,ry:14
    linkStyle default stroke:#a8a8b3,stroke-width:1.5px

What I did

Results

MetricValue
Extensions categorized1,716
Categories18
GitHub stars600
Forks12
Active maintenance~5 months (May–September 2024)

The problem

Why is the Raycast extension store hard to browse?

The store page has no developed category system, and a single view shows only 10 extensions at a time. With over 1,700 entries, that means scrolling through dozens of pages or hitting the exact name in search. If you don’t know exactly what you’re looking for, which is often the case when you’re still discovering what Raycast can do, there’s no way to browse it meaningfully.

Why not just scrape the site?

Because that’s a fragile solution sitting right on the edge of the terms of service. The page can change at any point and break the scraper; on top of that, reading data straight from someone else’s frontend, instead of the data that company actually publishes, wasn’t something I was willing to do. The official GitHub repository, where Raycast keeps the package.json for every extension, gave me the same data in a way I could rely on.

My role / scope

Process

Key decisions & trade-offs

ApproachRiskDecision
Scraping the Raycast store pagebreaks terms of service, fragile against layout changesrejected
Fork of the official GitHub repodepends on the package.json structure in the repochosen

How it turned out

The repo has 600 stars and 12 forks, but the last commit is from September 2024, and it’s archived today. Raycast’s official store still has no real way to browse by category, only search and a handful of footer links, so the problem I set out to solve still exists. I didn’t keep going because maintaining the categorization alongside a full-time job stopped being worth it. That was a deliberate stop, not a failed project.

What I took away