Nodes for Beginners
Let’s have a look at what the various nodes are that we can add to our feed. Be sure to check out Creating Your First Feed to learn how to combine these. If you're a developer comfortable working with JSON, you can check out our Editor Documentation.
You can find all the nodes in the menu on the left side of the Editor.

Let's go through each in turn, what settings are involved, and how they might improve your feed.
Logic
First up: the backbone of our feed - Logic nodes.
When we're starting out - our first Logic node should be set to All of these. This lets us specify all the things that must be included. In this example, we're going to create a feed that has pictures or videos of user's LEGO builds.
So we want the feed to include all posts including ("contains") our green word list and excluding ("missing") our red word list and meeting our content moderation requirements. Each of these individual nodes is discussed in more detail below.

Everything in the "All of These" node is required before a skeet will make the feed.
Then we can pop in a new Logic node, and add some Any of These logic. In this case we want to catch posts that (having met all our other requirements) contain either an image or a video:

Now let's look at all our nodes in a bit more detail.
Word Lists
These are the basic building blocks of a feed, and enable us to include ("contains") or exclude ("missing") posts that have our listed words in a variety of places:

As you can see, this instructs your feed to examine whether your listed words appear in the text of the post itself, in a reply, in the alt text of an image, and so on. By adding different Word List nodes, you can be precise about which skeets make the feed and which don't. You can also specify whether you want this search to be case sensitive or not (in the top left corner of the Node).
Important: if any of the words in your list appear in the skeet, then the node will operate. If you only want to catch posts with words as part of a phrase (e.g. "LEGO Technic" but not "LEGO" on its own), you should enter the phrase.
Here, we want to include posts that mention LEGO, but not if they mention "game" or "twitch" (to separate out video game posts from posts about blocks):

For a more detailed discussion of the attributes you can use, have a look at Attributes below.
Entity Lists
Entity List nodes let us capture posts in the feed that meet certain filters, like the language they are in, or the hashtags included:

- langs - Filter by language.
- urls - Filter for urls.
- domains - Filter for url domains.
- mentions - Filter for mentions of user. You can also supply a list/starter pack. When anyone in the list is mentioned the post is included.
- hashtags - Filter posts with a #hashtag
Embed
An Embed node tells our feed to include or exclude posts that have things embedded in them, like an image or video (as we discussed above) or a link or a gif:

This can be used to exclude quote posts, for example:

Note: in the above example, replies are excluded using an Attribute Comparison node, discussed below.
Lists
A Lists node instructs your feed to include or ignore posts from users on a list. This might helpful if you have a list of experts you want to include, or a list or users you'd like to block:

Starter Pack
Similarly, a Starter Pack node lets you include or exclude posts from users in a Bluesky starter pack.

You can either copy the url from a starter pack you want to use, or search for a starter pack within the node:

Social Graph
A Social Graph node lets you include/exclude posts based on where someone is following or followed by a user:

This can be used as a quick way for people to join your feed and build a community, like the crew in the BikeSky feed!

Social List
This lets you specifically include/exclude specific individual users. To do this you list the user's DID.

You can use clearsky.app to find a Bluesky user's DID.
Attributes
Several of the nodes use what are known as Attributes. We've already looked at some of them in the Word List node above, but now let's get a little more detailed.
To find the attributes of a Bluesky post, you can use https://pdsls.dev. This tool lets you put in a link and see what Bluesky stores for the post. We can use this to determine what attributes look like on a post
For example, if we take this post, we can see the following attributes:
embed:
$type: app.bsky.embed.recordWithMedia
media:
$type: app.bsky.embed.external
external:
uri: https://graze.social
thumb:
$type: blob
ref:
$link: bafkreifxp6jwe6ybqk66av6rird53mffqlvnqkbkirnhdlf5yv7lnj4ace
mimeType: image/jpeg
size: 363034
title: Graze.social - Curate Your Bluesky Feeds
description: Design, deploy, and grow feeds of any complexity on Bluesky with Graze.social.
record:
$type: app.bsky.embed.record
record:
cid: bafyreihh5tvpjdxdde3aeuigcywwvl3x2howd3gxoefrvxmybzq4knaxvu
uri: at://did:plc:i6y3jdklpvkjvynvsrnqfdoq/app.bsky.feed.post/3lcvhakboqc2k
Now lets look at how we can use these attributes in our nodes.
Regex
Much like a Word List node, a Regex node instructs the feed to include/exclude posts that have a specified regular expression in one of the listed attributes. In most cases, the Word List node will be sufficient.

However, sometimes you might want to catch only part of a word. For example, in order to try and filter out commercial posts, this Regex node excludes the string "% off" -- which will snag and exclude posts with "25% off" or "50% off":

Attribute Comparison
You can also use an Attribute Comparison node. The main use case for this is filtering out replies.

AI Nodes
The remaining nodes in the menu use AI to work some magic on the filter. You can read all about this in our guide to Using AI Nodes.