# Processors

Activity processors enable you to do additional processing on activities after they are posted.

Supported activity processors:

| Type                     | Description                                                                  |
| ------------------------ | ---------------------------------------------------------------------------- |
| `text_interest_tags`     | Analyzes text content to extract topics                                      |
| `image_interest_tags`    | Analyzes image attachments to extract topics                                 |
| `og_metadata_enrichment` | Analyzes Open Graph (OG) metadata of links in activity text to extract topic |

Processors use AI to extract topics from the given sources.

The topics of an activity are stored in the `interest_tags` field.

Topic information can be used to [query activities](https://getstream.io/activity-feeds/docs/javascript/query-activities/#activities-queryable-built-in-fields) or [filter feeds](https://getstream.io/activity-feeds/docs/javascript/feeds/#filters) based on topics.

Activity topics enable the Stream API to automatically compute users' interests (what activities a user interacts with). A user's interest can be used as input for [activity selectors](https://getstream.io/activity-feeds/docs/javascript/activity-selectors/#interest-activity-selector) and [ranking](https://getstream.io/activity-feeds/docs/javascript/custom-ranking/#interest-weights).

Topics can also be set explicitly with the create and update activity endpoints.

### Setting up activity processors

You can set up activity processors on the feed group level:

```js label="Node.js"
const response = await serverClient.feeds.createFeedGroup({
  id: "myid",
  activity_processors: [
    { type: "text_interest_tags" },
    { type: "image_interest_tags" },
  ],
});
```

You can also update built-in feed groups with activity processors:

```js label="Node.js"
await client.feeds.updateFeedGroup({
  id: "<id of feed group to update>",
  // Fields to update
});
```

### Reading topics

Whenever a new activity is posted, the processors will run. Interest topics are not computed instantly; they are added with the `feeds.activity.updated` event.

```js label="JavaScript"
await feed.addActivity({
  type: "post",
  text: "check out my 10 fitness tips for reducing lower back pain",
});

// Wait for feeds.activity.updated event
console.log(activity.interest_tags); // ["fitness", "health", "tips"]
```


---

This page was last updated at 2026-08-07T20:37:30.969Z.

For the most recent version of this documentation, visit [https://getstream.io/activity-feeds/docs/javascript/activity-processors/](https://getstream.io/activity-feeds/docs/javascript/activity-processors/).