# Projects

A **project** is a content workspace. It holds your brand context, default
language, publishing target, image settings, and API keys. Everything you
generate — articles, plans, images — belongs to a project, and each project
publishes independently.

## What is a project

Think of a project as one website or brand. If you run several sites, create one
project per site so each gets its own context, publishing destination, and API
keys. Generation quota, however, is shared across all of your projects (see
[Billing & quota](/docs/billing-quota)).

## Create a project

1. Go to **Projects → New project**.
2. A short wizard collects the essentials: a **name**, your **website URL**
   (used to fetch a favicon and verify the site), some **product context**, and
   an optional **image style**.
3. Finish the wizard — the project is ready to generate against.

You can change everything later in **project settings**.

## Project settings

Open a project to edit its **Details**:

- **Name** and **description** — for your own reference.
- **AI context** — markdown describing your product, brand, audience, and tone.
  This is fed to every agent in the pipeline, so the more specific it is, the
  more on-brand your articles will be.
- **Default content language** — new content and plans inherit it. You can still
  override the language per article or per plan.
- **Active** — inactive projects are hidden from the "new content" and "new plan"
  pickers without deleting anything.

Remember to **Save** after editing.

## Brand & entity

The **Brand & entity** card is what makes your published articles *citable* by AI
engines. Every post Terradium publishes carries a JSON-LD graph
(`Organization` + author `Person` + `Article`); these fields fill that graph so
AI answer engines (and Google) have a real, disambiguated brand entity to
attribute and quote — not an anonymous Article. Filling them is the single
cheapest GEO win (see [AI Visibility](/docs/ai-visibility)).

- **Organization name** — the brand to attribute content to. Defaults to the
  project name when blank.
- **Organization logo URL** — an absolute URL to a square logo (PNG or SVG),
  e.g. `https://example.com/logo.png`.
- **sameAs profile URLs** — one per line. These are *authoritative* profiles that
  identify your brand: Wikipedia, Crunchbase, LinkedIn company page, your verified
  social accounts. They're how engines connect "this site" to "this known
  entity," so this is the highest-leverage field here — add every official profile
  you have.
- **Default author** — the **name**, **profile URL**, and **job title** for the
  byline. This becomes a `Person` node linked from each Article; without it the
  Organization is used as the author.

> Newly published articles pick up these fields automatically. To apply changes
> to posts you've **already** published, re-publish them (or contact support to
> run a one-off backfill) — the public content API then serves the enriched graph
> within a few minutes.

### Blog URL pattern

If your site addresses posts somewhere other than `/blog/{slug}`, set the **Blog
URL pattern** (use `{slug}` as the placeholder, e.g. `/articles/{slug}`, or a
full URL like `https://blog.example.com/{slug}` to point at another host).

Everything that advertises where a post lives uses this pattern:

- the **canonical URL** and the `url` / `@id` fields in each post's JSON-LD graph,
- the `og:url` on the AI-readable HTML version,
- your project's **`sitemap.xml`**, **`llms.txt`** and **`llms-full.txt`**,
- **IndexNow** submissions to search engines,
- the [GEO readiness check](/docs/ai-visibility), which fetches a live post to
  confirm engines can actually read it.

Set it before you publish. If you change it later, the canonical URL stored on
already-published posts still points at the old path — contact support to run a
one-off backfill and re-derive them.

## Publishing target

The **Publishing** card controls what happens to finished articles:

- **After generation** — *Save as draft* (the default) keeps articles as drafts
  for you to review, or *Publish automatically* delivers them after a review
  window (see below).
- **Review window** — how long an automatically-published article waits before it
  goes out, giving you time to read it first. Defaults to **24 hours**; set it to
  **0** to never publish automatically, up to a maximum of **7 days**. Publishing
  an article yourself is always immediate — the window only applies to
  auto-publish.
- **Target** — the built-in **Terradium CMS** (served by the public content API)
  or your own signed **Webhook** URL.

See [Publishing](/docs/publishing) for how delivery works end to end.

## Scheduled generation

Turn on **Scheduled generation** to let plan items generate automatically. Pick a
**timezone** and a **daily time** — each day, items in an *active* plan that are
scheduled for that date generate at the time you chose. Without this, plan items
only generate when you click **Generate**. See
[Editorial plans](/docs/editorial-plans).

## AI featured images

Enable **AI featured images** to let Terradium generate a cover image for each
article in your brand style. Configure the **image style** once, and optionally
turn on **auto-generate** so an image is created as soon as an article finishes.
Details in [Featured images](/docs/featured-images).

## API access

The **API access** card is where you issue **API keys** to read your published
content from your own frontend, and where you find the integration snippets. See
the [API reference](/docs/api-reference) for endpoints and authentication.
