Quick overview
This workflow runs an Apify Bluesky monitoring Task on a schedule, fetches the resulting dataset of matched posts, normalizes each record, and upserts it into an n8n Data Table to prevent duplicates across runs.
How it works
- Runs manually or on an hourly schedule.
- Starts an Apify Actor Task for Bluesky monitoring and waits for the run to finish.
- If the run returns a default dataset ID, retrieves up to 100 dataset items from Apify.
- Normalizes each dataset row into a consistent Bluesky post schema and creates diagnostic records for malformed rows missing required identifiers.
- If records exist, upserts each record into the n8n Data Table using a stable delivery key so reruns update existing rows instead of inserting duplicates.
- Outputs a run summary and throws an error if the Apify run did not finish with a SUCCEEDED status.
Setup
- Install the community node package
@apify/n8n-nodes-apify (version 0.6.10 or later) in your n8n instance.
- Add an Apify API credential in n8n and set the Apify Task ID to your saved Bluesky monitoring Task.
- Configure the Apify Task to produce a default dataset and keep its per-run result cap at 100 or fewer items.
- Create an n8n Data Table named
monitor-deliveries with columns: deliveryKey, product, sourceId, sourceUrl, title, observedAt, runId, runStatus, datasetId, and payloadJson.
- Enable the Schedule Trigger and adjust the interval as needed.
Requirements
- Self-hosted n8n, @apify/n8n-nodes-apify 0.6.10 or later, an Apify account with a saved Bluesky monitoring Task, and an n8n Data Table named monitor-deliveries.
Customization
- Change keywords, handles, mentions, hashtags, language filters, maximum posts, schedule, or downstream mappings while preserving the stable post delivery key.
Additional info
The export is credential-free and uses PASTEYOURTASKID as its only Task placeholder. Supporting package: https://github.com/Telemark-Digital/apify-monitoring-workflows/tree/main/bluesky-keyword-mention-alerts.