The Workspace
Ten minutes of setup that decides what the next thirteen chapters can do. The important decision is not the install; it is telling the project where your source code lives, and understanding which capabilities cost money and which do not.
The problem
Most SEO tools are web services. You paste a URL, their servers fetch your page, and the results live in their account. That arrangement has three consequences people rarely think about: your unreleased staging site must be publicly reachable to be analysed, your data is on someone else's disk, and the tool can never touch the files that produced the page — it can only describe them.
Sjá is a desktop app. The analysis runs on your machine, the results are stored in a local SQLite database, and — because it is local — it can be pointed at the actual repository behind the site. That last part is what turns “your title is too long” into “here is the edited file, approve it”.
Install and licence
Download from elyracode.com/sja, drag to Applications, open. The build is signed and notarised by Apple and the notarisation ticket is stapled into the app, so it opens on a machine that has never been online.
There is a 14-day trial with everything unlocked. The licence, when you buy one, is checked once and then cached; the app does not phone home on every launch.
The project: a URL and a path
A project is the unit everything hangs off: history, monitors, trends, alerts. Create one with the + button and give it two things.
-
The site URL —
https://freddy.app. This is what crawls seed from and what matches your Search Console property later. -
The local code path —
~/code/freddy-site. Optional, and the single most valuable optional field in the app.
Why the code path matters: without it, every fix in chapter 5 is advice you must carry across to your editor by hand. With it, Sjá's agent can open the Blade or Svelte or Markdown file that produced the page and edit it, in place, with your approval on each write.
../ cannot
walk out of it. Writes are atomic — a crash mid-write
cannot leave a half-written page — and approval is
on by default. You will be asked before anything is
written, every time, until you decide otherwise.
Which keys buy what
Sjá works with no keys at all: fetching, parsing, scoring,
crawling, structured data and llms.txt are all
local and free. Four optional keys each unlock one specific
thing, and it is worth knowing which chapter needs which
so you do not pay for a capability you will not use.
| Key | Buys you | Needed in |
|---|---|---|
| PageSpeed API (free from Google) | Core Web Vitals — a seventh scoring category from real field data | ch. 3 |
| An AI provider (OpenAI, Anthropic, Gemini, …) | The agent that edits your files; fix prompts are free without it | ch. 5 |
| Engine keys (ChatGPT, Claude, Perplexity, Gemini) | The citation probe — asking each engine whether it cites you | ch. 10 |
| TypeSafe (Jev) | Why you were not cited, whether a citation is accurate, and the internal link plan | ch. 9–10 |
Every key is stored in the macOS Keychain, never in the database and never in a config file. Each is billed to your own account, so the cost is visible to you rather than marked up by us.
The one setting to decide now
Under Options there is a choice between analysing the page as served and as rendered. As served means the HTML your server sends. As rendered means the DOM after JavaScript has run.
Analyse as served first, always. That is what a crawler receives before it decides whether you are worth the expense of rendering, and it is what several answer-engine crawlers see only. If your score is excellent as rendered and dismal as served, you have just discovered the most important fact about your site — and chapter 6 is about exactly that.
What you learned
- Local by design. The analysis runs on your machine and the results stay in a local database — which is also what lets it touch your files.
- Give the project a code path. It is the difference between advice and an edit you approve.
- The sandbox is enforced on where a path resolves, not how it is spelled; writes are atomic and approval is on by default.
- Keys are optional and specific. Nothing core needs one; each buys exactly one capability, billed to you.
- Measure as served before as rendered. The gap between them is a finding in itself.