Polaris CMS · v1 in preparation

A blog CMS your agents can publish to.

Polaris adds a /studio editor, a small JSON API and the SEO plumbing to an Astro or Next.js site. Posts, images and backups live in one PostgreSQL database. No separate CMS server, no storage bucket.

Open source under MIT. Public release on GitHub and npm in preparation. See the roadmap.

01 · Write

An editor that checks the SEO while you type.

Markdown with write, split and preview modes. The preview runs the same renderer as the live post. Beside it, 11 on-page checks turn into a score out of 100.

  • Tables, footnotes, figures with captions, highlighted code
  • ```chart blocks rendered as SVG charts with a data table
  • Raw HTML dropped, so agent-written text stays safe
  • Internal-link suggestions, a link manager and a cluster graph

The editor and the 11 checks

SEO 82/100 · good
  • Focus keyword in the SEO title (passes)
  • Focus keyword in the meta description (passes)
  • Focus keyword in the URL slug (passes)
  • Focus keyword in the first paragraph (passes)
  • Focus keyword in a subheading (H2/H3) (fails)
  • Keyword density 0.5% to 2.5% (passes)
  • At least 600 words (passes)
  • SEO title 60 characters or fewer (passes)
  • Meta description 50 to 160 characters (passes)
  • At least one internal link (fails)
  • At least one image with alt text (passes)
Illustration of the editor's SEO panel: a draft passing 9 of 11 checks.

02 · Publish

Scheduled posts go live on time. No cron job.

03 · Automate

Seven actions and an upload. That's the API.

Agents and scripts use Bearer keys created in the Studio. Keys are stored hashed and can't create or revoke other keys. A repeated create with the same slug is refused, so a retry never makes a duplicate.

list
live posts as internal-link targets
list-all
every post, drafts too, without the body
get
one full post
save
create, or replace when id is set
set-status
draft, scheduled or published
delete
with a backup taken first
recompute-scores
rerun the SEO checks

Using Polaris with AI agents

KEY=…   # Studio → API Keys
# 1. Upload an image: stored as WebP in Postgres
curl -s -X POST https://example.com/api/cms/upload \
  -H "Authorization: Bearer $KEY" \
  -F "file=@chart.png" -F "alt=Organic clicks per month"
# → {"url":"/media/<id>/chart.webp", …}

# 2. Save a post, scheduled for Friday morning
curl -s -X POST https://example.com/api/cms/posts \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"action":"save","post":{
    "title":"How we cut LCP to 0.8 s",
    "focusKeyword":"cut lcp",
    "content":"## The budget\n\n…",
    "featuredImage":"/media/<id>/chart.webp",
    "status":"scheduled",
    "publishedAt":"2026-11-20T08:00:00+01:00"}}'
# → {"ok":true,"id":12,"url":"/blog/how-we-cut-lcp-to-0-8-s/","seoScore":73, …}

04 · Get found

The SEO plumbing comes with it.

SEO features in detail

05 · Own it

Your site, your database, your server.

In production

Runs six sites.

Polaris started inside PolishPal, was ported to Astro and Next.js, and now publishes every newer site Scentro has built.

  1. 01 PolishPal Language-learning platform. Where Polaris started.
  2. 02 PlantAlong Garden planner.
  3. 03 Olfaria Perfume clone register.
  4. 04 Grzybolog Mushroom forecast and atlas.
  5. 05 Yolkday Backyard chicken planner.
  6. 06 scentro.pl The studio site itself, with its English and Polish blog.

Built by Scentro

Made by the studio that runs it.

Scentro builds content websites and web apps around real data, and publishes them with Polaris. Read the story of the CMS on scentro.pl/polaris, or see the rest of the work at scentro.pl.