> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.graze.social/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Creating Your First Feed

## Making our first feed

Let's make our first feed. On your Graze Dashboard, click **Create a feed** (or the **+** next to Feeds in the sidebar). You'll be asked to **Choose starting point**:

- **Editor**: build your feed's rules yourself on the canvas. This is what we'll use here.
- **Generate**: describe your feed in a sentence and let AI build a starting point for you. See "Starting from a prompt" at the end of this guide.
- **Migrate**: move a feed you built elsewhere onto Graze. See [Migrating a Feed](https://www.graze.social/docs/migrating-a-feed).

We're going to make a feed about my favourite disaster hockey team, the Pittsburgh Penguins. Let's click **Editor**.

> If this is your first feed, Graze starts a short guided tour of the editor. It's worth following!

## Naming your feed

At the top of the page are your feed's details:

- **Name your feed**: the title readers see on Bluesky. Keep it under 24 characters.
- The **+** beside the title ("Add an avatar") lets you upload a picture or choose one, which readers will see on Bluesky.
- **Make public**: whether your feed's *definition* is public, so others can see how it works and remix it. This doesn't affect who can read the feed.
- **Feed Slug** (optional): the short name in your feed's URL. Up to 15 characters, and short and memorable is best.
- **Feed Description**: what your feed is about, up to 300 characters. This shows on Bluesky too.
- **Advanced Delivery**: settings for whether the feed delivers a matching post itself or a related post (like the post it replies to). Leave this alone unless you know you need it.

## Building the rules

Below the details is the editor. The big grey **Feed** block is your feed. It has two sections:

- **Page**, at the top: how each page of your feed is ordered. A new feed has a single layer showing the newest posts first. You can mix orderings like trending and best-of here; see [Page Layers and Audiences](https://www.graze.social/docs/layers).
- **Rules**, below: the nodes that decide which posts get into your feed.

New feeds start with a sample **Word List** node looking for "cats" and "dogs" in the post text. Let's change that to the obvious words for our feed: the team name and the captain's name.

To add more nodes, click **Rules** in the left sidebar (the filter icon) to open the list of nodes, pick one, and click the canvas. Then drag it into the Rules section. A node that isn't inside the Feed block isn't part of your feed!

Believe it or not, one word list is enough for a feed!

### Including and excluding

Our list is a bit generic, so it will also catch posts about *actual* penguins. So let's add a second Word List and set it to **missing** instead of **contains**, with words like "wildlife", "zoo" and "Antarctica".

Out of the box, your Rules combine their nodes with **All of these**: a post has to pass every one. So now we'll catch posts that **contain** the words we want, only when they're also **missing** the words we don't.

You can wrap nodes in a **Logic** node to change this. **All of these** means a post must pass every node inside; **Any of these** means passing one is enough.

### More rules

You can add as many nodes as you like. For example, you can pick up specific hashtags or users, only include posts in certain languages, include posts from a Bluesky list, or only include posts with images or videos. You can also exclude replies or quote posts.

We have a whole guide on [Nodes for Beginners](https://www.graze.social/docs/nodes-for-beginners). And Graze users share Custom Nodes that do all kinds of things, which you can drop into your feed; read about [using Custom Nodes](https://www.graze.social/docs/using-custom-nodes).

To keep your feed a healthy place to hang out, add moderation nodes like Content Moderation, Image Moderation and Toxicity Analysis. See [Content Moderation](https://www.graze.social/docs/content-moderation).

> If you're already familiar with JSON, you can switch to the JSON editor with the **Editor type** button in the left sidebar. For the rest of us, let's carry on with the canvas!

## Testing the feed

Along the top of the editor you'll find **Canvas**, **Preview** and **Debug**. (**Preview** is currently down for maintenance.)

**Debug** lets you test individual posts against your rules before you publish. If we grab the URL of a post about actual penguins and paste it into "Enter a post URL", Debug tells us whether it **Passed** or **Failed**. This one fails, because although it mentions penguins, it ALSO mentions wildlife. You can keep refining your inclusions and exclusions until the feed shows exactly what you're after.

Learn more in [Testing and Fixing your Feed](https://www.graze.social/docs/testing-and-fixing-your-feed).

## Saving and publishing

When you're happy with your recipe:

- **Save Draft** saves the feed in Graze without putting it on Bluesky. You can keep editing it from your Dashboard until you're really happy with it.
- **Publish** saves the feed and puts it on Bluesky.
- **Cancel** discards your changes.

When you publish a feed for the first time, Graze fills it with matching posts from the last few hours, so it doesn't start empty. A banner on the feed's page shows this happening, then how many posts were added. New matching posts keep arriving from then on.

You'll find your published feed under Feeds on your own Bluesky profile, and from there you can share the link with others.

When you edit a published feed later, **Save** keeps your changes as a draft, and **Publish** makes them live. If you've saved changes that aren't live yet, a **Publish** button appears at the top of the feed's page.

## Checking and adding posts

Once your feed is saved, two more tools appear at the top of the editor:

- **Live Feed** shows the posts that are in your feed right now.
- **Insert posts** lets you add specific posts by their Bluesky URL. If your feed is sorted newest first, tick **Add to top** to put them at the top, for example to give a brand-new feed something to start with. Leave it unticked to add posts that should have appeared and didn't, and they'll appear in their normal place.

If the feed isn't behaving quite the way you want over on Bluesky, check out [Testing and Fixing your Feed](https://www.graze.social/docs/testing-and-fixing-your-feed).

## Starting from a prompt

If you chose **Generate**, you'll be asked to **Describe your feed**, for example "A feed about pottery." Press **Submit** and Graze builds a set of rules for you on the canvas. Check them over, test a few posts with Debug, and adjust anything that isn't right.

You can also change an existing feed with a prompt. In the editor's left sidebar, click **Change this feed with a prompt** (the pencil-and-square icon), describe one change, such as "Now make it omit anything political.", and press **Propose change**. Graze shows you the changed feed on the canvas; press **Keep change** to accept it or **Discard** to go back to how it was.

## More help

If you need help, have questions, or just want to chat with us, come and [join our Discord](https://discord.com/invite/n936Bz7Pug).