Back to NichePressa
NichePressa

Docs · Agent setup

Let your coding agent set up NichePressa.

NichePressa reads your blog repo to match its frontmatter, categories, MDX components, and voice. To spell those out instead of leaving them to inference, have Claude Code, Cursor, or Codex write a nichepressa.config.json file at the root of the repo. When we scan, the file wins over our own guesses.

1. Paste this into your agent

Open your agent inside the blog repository and give it this prompt. NichePressa also has a “Set up with your AI” button that copies it with your repo name filled in.

Set up NichePressa for this blog.

1. Read the setup guide at https://nichepressa.com/docs/agent-setup and the JSON Schema at https://nichepressa.com/nichepressa.config.schema.json.
2. In this repository, find where the .mdx blog posts live, which frontmatter keys they use, which categories are in use, and which components are registered in the MDX components map (with their real prop names and types).
3. Read 3-5 recent posts and describe the writing voice: one concrete stance the blog holds, 5-15 signature phrases, and the closest persona.
4. Create nichepressa.config.json at the repository root that follows the schema. Only list components that exist in the MDX map. Don't invent categories.
5. Check the file against the schema, then commit and push it to the branch NichePressa publishes to.

When it's pushed, tell me so I can click Read repo in NichePressa setup (or Re-sync from repo in Settings).

2. Push, then read your repo in NichePressa

During setup, click Read my repo. Setup reads the whole file. When the file covers niche, audience, voice, cover style, and at least three article types, setup skips the AI guesswork entirely. Any field you leave out is filled from your posts, README, and homepage. If the file doesn't validate, we ignore it and the scan notes tell you why.

If the workspace already exists, use Settings → General → Re-sync from repo. Re-sync applies the file's frontmatter format, categories, and components only. It doesn't change niche, audience, voice, or domain terms. To change the voice, use Redo capture on the Voice page. Domain terms are in Settings → General.

Example

{
  "$schema": "https://nichepressa.com/nichepressa.config.schema.json",
  "version": 1,
  "siteName": "Acme Engineering",
  "siteUrl": "https://acme.dev",
  "contentDir": "content/blog",
  "niche": "Practical guides on running Postgres in production for small SaaS teams.",
  "audience": "Backend engineers at 5-50 person startups who own their own database.",
  "domainTerms": [
    "Postgres",
    "pgBouncer",
    "VACUUM",
    "Supabase"
  ],
  "voice": {
    "stance": "Most teams reach for a new database when a missing index and a pooler would have fixed it.",
    "vocabulary": [
      "boring infrastructure",
      "measure first",
      "the slow query log never lies"
    ],
    "persona": "expert"
  },
  "categories": [
    "Performance",
    "Operations",
    "Migrations"
  ],
  "articleTypes": [
    "How-to",
    "Deep dive",
    "Comparison",
    "Postmortem"
  ],
  "coverStyle": "minimal_illustration",
  "frontmatter": {
    "title": "title",
    "summary": "description",
    "publishedAt": "date",
    "category": "category",
    "tags": "tags",
    "heroImage": "coverUrl"
  },
  "components": [
    {
      "tag": "Callout",
      "description": "A highlighted note for warnings or key takeaways.",
      "usageGuidance": "At most two per article.",
      "props": [
        {
          "name": "type",
          "type": "enum",
          "required": true,
          "description": "Visual style.",
          "enumValues": [
            "info",
            "warning"
          ]
        }
      ]
    }
  ]
}

Fields

Every field is optional. The full JSON Schema is at https://nichepressa.com/nichepressa.config.schema.json.

contentDir
Folder with your .mdx posts, relative to the repo root. If you leave it out, we use the folder with the most posts.
siteName, siteUrl
Your blog's name and public URL.
niche, audience
What the blog covers and who reads it, in a sentence or two each.
domainTerms
Product names and terms the AI must spell exactly.
voice.stance
One concrete opinion the blog holds. Specific beats generic.
voice.vocabulary
Signature phrases your posts actually use.
voice.persona
expert, rebel, neighbor, enthusiast, professor, skeptic
categories
Category values exactly as they appear in your frontmatter.
articleTypes
Recurring formats such as How-to, Comparison, Deep dive (3 to 10).
coverStyle
editorial_photo, minimal_illustration, bold_graphic, cinematic_atmosphere, hand_drawn, 3d_render
items
Only if posts recommend things. kind is one of products, games, tools, places, services, features, other. source is where the items live, e.g. src/data/games.ts or content/products/*.json; NichePressa imports them and re-syncs daily. Leave it out and NichePressa looks for them itself.
frontmatter
Frontmatter key → meaning: title, description, date, category, tags, author, coverUrl, coverAlt, articleFormat.
components
MDX components the AI may use, with their real props. These start switched on.