> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fetchski-attract.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Blog posts, categories and authors

> Write blog posts with text, photos and sections, sort them into categories, credit authors and set up your blog page.

Write posts for your blog with text, photos, video and full sections. Sort them into categories, credit an author, and choose how your Blog page lists them.

&#x20;**Who can do this:** Contributors, Editors, Admins and Owners can write and change posts. Publishing needs an Editor, an Admin or an Owner. **Generate with AI** and AI images are for Editors, Admins and Owners.

## Before you start

* Your site comes with a **Blog** page that lists your posts. You don't need to create it.
* Set up your categories and authors first, so you can pick them as you write. See [Categories](#categories) and [Authors](#authors) below.
* Want FetchskiAI to write a first draft for you? See [Generate a blog post](https://docs.fetchski-attract.com/fetchskiai/blog-posts.md).

## Write a post

**1. Open your posts**

Press ⌘K (Ctrl+K on Windows) and choose **Blog Posts** under **Manage**.

![The Blog Posts manager with 6 posts, and along the top Import Markdown, Generate with AI and New Blog Post, numbered 1 to 3, with the ⋮ menu beside them.](https://mintcdn.com/fetchski-attract-api/eK8pBpUam_xD3uEM/images/cms/guides/content/blog/guides-content-blog-manager-light.png?fit=max\&auto=format\&n=eK8pBpUam_xD3uEM\&q=85\&s=dcb9007bdfc6735a07a3d967a51182dd)

The Blog Posts manager, with ways to write, import or generate a post.

**2. Start a new post**

Choose **New Blog Post**. The editor opens on the **Basics** tab.

**3. Fill in the basics**

* **Title**: the post's headline, shown as its biggest heading. In the post, use **Heading 2** for your main sections and **Heading 3** inside them.
* **Author**: who wrote it. Pick from your **Authors** list.
* **Category**: one category for the post. Its badge shows on the post's card.
* **Publication Date**: the date shown on the post. Your blog lists posts newest first by this date. A future date hides the post from visitors until that day. To put a post live at a set time instead, schedule it (see step 6).

![The post editor on the Basics tab: Title "5 games to play with your new puppy", Author Sam Whitfield and Category Puppy Tips chosen (each picker reads "Chosen. Remove it to pick another."), and a Publication Date; the tabs Basics, Content, After Content, Fonts and SEO.](https://mintcdn.com/fetchski-attract-api/eK8pBpUam_xD3uEM/images/cms/guides/content/blog/guides-content-blog-basics-light.png?fit=max\&auto=format\&n=eK8pBpUam_xD3uEM\&q=85\&s=ded145fb200a5cbb6e236fac3caa57d0)

The Basics tab: title, author, category and date.

**4. Write the teaser and pick a photo**

Open the **Content** tab.

* **Excerpt**: 1 or 2 sentences that sell the post. They show on your post cards, on the Blog page and in **Blog Preview** sections.
* **Featured image**: the post's main photo, shown on its card and at the top of the post. To have FetchskiAI make one, choose **AI Image Generation** on the right of the **Featured image** label. See [Image generation](https://docs.fetchski-attract.com/fetchskiai/image-generation.md).

![The Content tab with a 2-sentence Excerpt, a featured photo of a puppy chasing a ball, the AI Image Generation button ringed on the Featured image label row.](https://mintcdn.com/fetchski-attract-api/tIdeo2aKESm5opj4/images/cms/guides/content/blog/guides-content-blog-content-tab-light.png?fit=max\&auto=format\&n=tIdeo2aKESm5opj4\&q=85\&s=0e92393c8f509336e7f8953caa7b8c55)

Write a short teaser and choose the photo for your post's card.

**5. Write the post**

The **Body** starts with one text block, ready to type in. Add more text, photos, video or sections as you go. See [What you can put in a post](#what-you-can-put-in-a-post).

**6. Save it as a draft**

Open **More save options** (the arrow next to the main button) and choose **Save Draft**. Visitors don't see it yet, and you can come back to finish it later.

**7. Publish it when it's ready**

Read it through, then choose **Publish** to put it live. Contributors choose **Submit** instead, and an Editor publishes it. You can also schedule a post for later. See [Drafts, publishing and scheduling](https://docs.fetchski-attract.com/guides/build-pages/publish-and-schedule.md).

The **SEO** tab sets how the post looks in search results and when shared. See [Page SEO](https://docs.fetchski-attract.com/guides/build-pages/page-seo.md).

## Edit a post on the page

You can write a post right on your site, as you would a page. First open the post's own page on your site:

* **From your Blog page:** open it on your site while you're signed in, and choose the post. Draft posts show there too while you're signed in.
* **From Blog Posts:** open the post, then open **More save options** and choose **Save Draft and Preview**. Your site opens on the post.

Then choose **Edit** in the edit bar. Type into the **Body**, and add sections in it and below it.

![A blog post open on the site in Edit mode: the title band, a text block selected with its toolbar, and the round + (Add Content) button between two text blocks ringed.](https://mintcdn.com/fetchski-attract-api/eK8pBpUam_xD3uEM/images/cms/guides/content/blog/guides-content-blog-on-page-light.png?fit=max\&auto=format\&n=eK8pBpUam_xD3uEM\&q=85\&s=3608fcd30a1d60a7fe8a2d87d5d18bb2)

Write and add sections right on the post.

## What you can put in a post

A post has 2 places for content.

**The Body** is the article itself, at a comfortable reading width. Its **Add Content** menu has 3 groups:

* **Write**: **Rich Text**, a photo or a video.
* **Layout**: columns inside the article, such as text beside a photo. See [Side-by-side layouts](https://docs.fetchski-attract.com/guides/build-pages/side-by-side-layouts.md).
* **Sections**: **Intro / Trust**, **Feature Cards**, **Stats / By the numbers**, **How it works / Steps**, **Pricing / Packages**, **Media + Text block**, **Device mocks** and **FAQ**.

When the **Body** holds a section, the post widens so the section has room.

**After content** sits below the article and spans the full page width. Use it for what comes after a post: a **Blog Preview** of related posts, a **Newsletter Subscription** sign-up or a **Final CTA**. Its **Add Content** menu has the **Layout**, **Content** and **Conversion** groups. You can also fill it from the editor's **After Content** tab.

![A whole blog post on the site, with 2 parts marked: Body (the featured photo, the text, a Stats / By the numbers band and more text) and After content (a More from the blog row of 3 posts and a newsletter sign-up).](https://mintcdn.com/fetchski-attract-api/MsE85fjBwOCKqNGh/images/cms/guides/content/blog/guides-content-blog-zones-light.png?fit=max\&auto=format\&n=MsE85fjBwOCKqNGh\&q=85\&s=f7a646b045ad2d6e54c9f9f7b88a3e0f)

The Body is the article; After content runs full width below it.

## Categories

Categories sort your posts by topic, such as "Puppy tips", "Training" and "News". Each one has its own badge color on your post cards.

**1. Press ⌘K (Ctrl+K on Windows) and choose Blog Categories under Manage**

**2. Choose New Blog Category and give it a Title**

Visitors see it on the badge.

**3. Pick a Badge color**

Leave it empty to use your site's accent color.

**4. Add a Description if you like**

It's a note for your team; visitors don't see it.

**5. Choose Publish**

Contributors choose **Submit** instead, and an Editor publishes it.

![The Blog Category editor for "Puppy tips" with a coral Badge color picked, and 3 post cards beside it showing the coral "Puppy tips" badge.](https://mintcdn.com/fetchski-attract-api/MsE85fjBwOCKqNGh/images/cms/guides/content/blog/guides-content-blog-category-light.png?fit=max\&auto=format\&n=MsE85fjBwOCKqNGh\&q=85\&s=993278487d225928b4d477f22e9bcccb)

Each category's color shows on every card that uses it.

Change a badge color any time. Every card in that category updates.

## Authors

An author is the name and photo on a post's byline. Authors are a list of their own, so you can credit people who don't sign in, such as a guest writer.

**1. Press ⌘K (Ctrl+K on Windows) and choose Authors under Manage**

**2. Choose New Author and enter their name as the Title**

**3. Add a Short bio if you like: 1 or 2 sentences**

**4. If they sign in to Attract, choose their Login account: the account they sign in with**

The byline then uses that account's photo, which each person sets in **Personal Settings** → **Profile photo**. Leave it empty for a guest writer. A guest writer shows with their name only, as an author has no photo of its own.

**5. Choose Publish**

Contributors choose **Submit** instead, and an Editor publishes it.

Each author has 2 switches that control what visitors see:

* **Show author on the site**: turn it off to hide this author's name and photo on every post that credits them.
* **Show the login account's photo**: turn it off to show the name without the photo.

## Your Blog page

Your Blog page lists your posts, 9 at a time, with page links below. Open it on your site and choose **Edit** to change it.

The page has 3 parts, top to bottom:

* **Sections above the list.** It starts with a **Page Header**, the page's title band. Add any sections you like above or below it.
* **The post list.** A **Blog Post List** section that always sits in the middle. You can't move or remove it, but you can change how it looks.
* **Sections below the list.** Empty at first. Add a sign-up or a call to action here.

![Parker's Blog page with its Page Header band, the post list in Featured + grid layout (1 large post, then 3 cards), and a Newsletter Subscription section below.](https://mintcdn.com/fetchski-attract-api/MsE85fjBwOCKqNGh/images/cms/guides/content/blog/guides-content-blog-page-light.png?fit=max\&auto=format\&n=MsE85fjBwOCKqNGh\&q=85\&s=f2180a125f0d0f473ca5cf556cda15e9)

Your Blog page: a header, the post list, and any sections you add.

### Change how posts are listed

Select the post list and choose **Edit**. On the **Post List** tab:

* **List layout**: **Card grid**, **List rows (image + text)**, **Compact list (text only)**, **Featured + grid** (your newest post large, then a grid) or **Masonry**.
* **Columns**: **Auto (fit to width)**, **2 per row** or **3 per row**, for the card grid and masonry.
* **Scroll-in animation**: **Stagger in (fade + rise)** makes the cards rise into view one by one. Choose **None** to keep them still. Visitors who turn on reduced motion on their device never see it.

The same tab sets how each card looks: image shape, card style, and whether to show the category, date, excerpt and author. These match the [Blog Preview](https://docs.fetchski-attract.com/guides/sections/blog-preview.md) section's options. The **Background**, **Fonts** and **CSS** tabs work as on any section.

![3 small crops of the post list side by side: Card grid, List rows (image + text) and Compact list (text only), each labeled.](https://mintcdn.com/fetchski-attract-api/MsE85fjBwOCKqNGh/images/cms/guides/content/blog/guides-content-blog-list-layouts-light.png?fit=max\&auto=format\&n=MsE85fjBwOCKqNGh\&q=85\&s=3eaac163faeb9c06348cf68c724a089d)

3 of the 5 ways to list your posts.

### Style every post at once

The Blog page's settings also style your posts. Open them from the edit bar: **More Options** (⋯) → **Edit**.

* **Reading**: how every post reads. A **Live preview** at the top shows each change. Set **Typeface for posts**, **Body text size**, **Body text weight**, **Content width**, **Line height**, **Heading weight**, and the heading and accent colors. The accent color styles links and quotes.
* **Basics**: the color, weight and size of the back link at the top of every post, such as "← Blog".
* **Post · Back button**: the "Back to all posts" button at the foot of every post.
* **Coming Soon**: what visitors see while your blog has no posts yet: an icon and a **Coming-soon message**.
* **Post · CSS**: **Post custom CSS** for every post. Admins and Owners can change this tab. See [Custom CSS](https://docs.fetchski-attract.com/guides/site-design/custom-css.md).

![The Blog page settings window on the Reading tab: the Live preview showing a sample article, with Content width set to Wide and Line height Relaxed below it.](https://mintcdn.com/fetchski-attract-api/MsE85fjBwOCKqNGh/images/cms/guides/content/blog/guides-content-blog-reading-light.png?fit=max\&auto=format\&n=MsE85fjBwOCKqNGh\&q=85\&s=3a70b12b19ef24c57e4630876d03e005)

The Reading tab styles every post, with a live preview.

One post can break from the blog's typeface: its **Fonts** tab has **Typeface for this post**. Leave it empty to follow the **Reading** tab.

## Import a post from Markdown

Already have a post written in Markdown, the plain-text format many writing apps and AI tools use? Import it in one step.

**1. In Blog Posts, open the ⋮ menu at the top and choose Download Template**

It downloads a blank post file whose name ends in ".md".

**2. Open the file in a plain-text editor, such as TextEdit on a Mac or Notepad on Windows**

A word processor like Word can spoil the file.

**3. Fill in the details at the top of the file: title, category, excerpt, featured image and so on**

Type each value between the quote marks. The note after each "#" says what to write, and the category line lists your categories. Keep the 2 lines of dashes around these details.

**4. Write the post below the second line of dashes**

Start each main part with "## " and its heading. Then save the file, still ending in ".md".

**5. Back in Blog Posts, choose Import Markdown**

The **Import from Markdown** window opens.

**6. Under Markdown / MDX file, choose Choose file… and pick your file**

**7. Under Images (optional), choose Choose image… to add up to 10 photos**

To make one the featured image, type its file name on the file's featured image line, such as "puppy-ball.jpg". A photo's web address works too, or the title of a photo already in your media library.

**8. Leave Publish immediately (otherwise saved as a draft) off to review the post first, or turn it on to put it live**

**9. Choose Import**

You'll see "Imported post as a draft." or "Imported and published post."

Here's the top of a filled-in file:

```
---
title: "5 games to play with your new puppy"
publishedAt: "2026-05-04"
authorName: "Jordan Parker"
category: "Puppy tips"
excerpt: "Short, fun games that build trust and burn off puppy energy."
featuredImage: "puppy-ball.jpg"
featuredImageAlt: "A puppy chasing a red ball across the grass"
---

## Start with hide and seek

Hide behind a door and call your puppy's name...
```

![The Import from Markdown window with a file chosen ("puppy-games.md"), 2 images listed under Images (optional), Publish immediately off, and the Import button ringed.](https://mintcdn.com/fetchski-attract-api/MsE85fjBwOCKqNGh/images/cms/guides/content/blog/guides-content-blog-import-light.png?fit=max\&auto=format\&n=MsE85fjBwOCKqNGh\&q=85\&s=1d9f4c7e779bc92cd7368a4b66b252ce)

Pick your file and its photos, then import.

Attract splits your post into one text block at each "## " heading (Heading 2). Later, you can drop a section, such as **Stats / By the numbers**, between any 2 parts. Contributors' imports always arrive as drafts.

### Place sections inside an imported post

This is optional and more advanced. MDX is Markdown with sections written into it. Your post arrives with its sections already in place, such as a **Stats / By the numbers** band after the first part. It's handy when an AI tool writes the post for you: give it the template and your topic.

Get the template from **Download MDX Template**, in the **⋮** menu at the top of **Blog Posts**. Its file name ends in ".mdx". It lists every section you can use and every setting each one takes.

A section in the file looks like this:

```
## Why families choose us

A short paragraph leading into the numbers.

<Stats
  statsHeading="Our year in numbers"
  stats={[
    { "value": "1,200", "valueSuffix": "+", "label": "Happy puppies" },
    { "value": "4.9", "label": "Average rating" }
  ]}
/>

More of the post continues here.
```

On your site, that becomes a heading, a paragraph, a **Stats / By the numbers** band showing "1,200+ Happy puppies" and "4.9 Average rating", then the next paragraph. Follow these rules:

* Put each section on its own lines, with a blank line before and after it.
* Use only the sections the template lists. They're the ones a post's **Body** offers, plus a photo and a divider line.
* Fill in only the settings you want to change. The rest keep their defaults.
* For a photo, write one of these:
  * a web address, such as "[https://example.com/yard.jpg](https://example.com/yard.jpg)"
  * the file name of a photo you upload with the post, such as "yard.jpg"
  * the title of a photo in your media library, such as "Indoor play yard"
* Video works only in sections that take a video from your Videos library: **Media + Text block** and **Device mocks**. Give a web address of an mp4 or webm file, or the title of a video in your library. This is different from the **Video** you add while writing, which takes a YouTube or Vimeo page address.
* Use up to 100 sections in one post.

Import the file with **Import Markdown**, as above. A post with sections always arrives as a draft, so you can check each section on the page before you publish.

## What happens next

A published post shows on your Blog page, in **Blog Preview** sections, and at its own web address. Drafts stay hidden from visitors. While you edit, you also see draft posts in the list and previews, so you can check them in place.

## Troubleshooting

> [accordion] Import failed. Check the file and try again.
>
> The file couldn't be read as a post. Start again from **Download Template**, and check that the details at the top stay between the 2 lines of dashes. When something specific is wrong, the message tells you what to fix.

> [accordion] An imported post has no author or no category
>
> The import looks for the author line in **Authors**, by name or by the email of their login account. It looks for the category line in **Blog Categories**. When nothing matches, the post imports without one.
>
> Check the spelling, or add the author or category first. You can also pick them in the post afterward.

> [accordion] My import with sections was refused
>
> When a section in the file breaks a rule, nothing is imported, and no photos are left behind. The message names the section and what's wrong, such as a section the template doesn't list or a setting with a value it doesn't offer. Fix that part and import again.

> [accordion] A post doesn't show on the Blog page
>
> * Is it published? Drafts show only while you edit.
> * Is its **Publication Date** in the future? Visitors see the post from that day on. A post scheduled to publish later shows once that time comes.
> * Your Blog page shows 9 posts at a time. Look on the next page.

> [accordion] A section I want isn't in the Body's menu
>
> The **Body** offers only sections that read well at article width. Full-width sections, such as **Blog Preview**, **Newsletter Subscription** and **Final CTA**, go in **After content** instead.

## Related

> [card] [Generate a blog post](https://docs.fetchski-attract.com/fetchskiai/blog-posts.md)
>
> turn your notes into a draft post with FetchskiAI.

> [card] [Blog Preview](https://docs.fetchski-attract.com/guides/sections/blog-preview.md)
>
> show your newest posts on any page.

> [card] [Drafts, publishing and scheduling](https://docs.fetchski-attract.com/guides/build-pages/publish-and-schedule.md)
>
> publish now or later.

> [card] [API keys and webhooks](https://docs.fetchski-attract.com/guides/connections/api-keys-and-webhooks.md)
>
> let another app send posts to your blog.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.