This is part of the August Developer Challenge on Joule Studio.
n8n workflows, as you saw in the Week 3 challenge, can be defined by JSON text file, and therefore you can easily vibe code to create complex and useful workflows – not just use drag-and-drop functionality. Some of you I know used AI to generate your improvements to the challenge template.
I will show you a quick example of what I did do manage the challenge itself, in this case, using Claude Code to generate the workflow JSON.
I wanted to show you this because in the end n8n is expected to be embedded inside Joule Studio, and what that likely brings you is:
- A complete setup for n8n vibe coding, without having to set up the AI or transfer JSON into n8n
- A set of SAP nodes for accessing SAP apps and other tools, like SAP Task Center
- A knowledge graph that automatically gives your workflows and workflow tools knowledge about your company's landscape
- A set of governance tools to control who uses n8n, with access to which tools and nodes, and the ability to deploy the workflow itself with the right permissions
👉🏻 Comment Below: If you used vibe coding to set up n8n workflows, tell me about your setup and what the experience was like.
The Scenario
I wanted to keep track of 3 things:
- Who completed the Week 3 challenge, which required participants to post to my blog post AND call our CAP service from within n8n
- The best and most flattering comments about the challenge itself
- The number of views for each of our challenge blog posts, plus the total
This required us to use the API for the community to retrieve all the comments from my post, with API calls like this (I filtered out my own comments that I made to communicate with you):
/api/2.0/search?q=select author.login,post_time from messages where ancestors.id = '14446186' ANDauthor.login != 'Dan_Wroblewski' LIMIT 300And I could retrieve the views of our posts by calling a similar API, something like this:
/api/2.0/search?q=select metrics.views,subject,body from messages where id = '14446186' At the same time we needed the community IDs of the people who called our service, and to only accept them if the user agent was from n8n.
/odata/v4/fetchData?$filter=week eq 'week3' AND userAgent eq 'n8n'&$orderby=createdAt desc&$count=trueWe then had to:
- Get a list of community IDs that were returned in both APIs.
- Add an AI node to review all the comments and find the best ones that were appreciative of the challenge (simply to make me happy 🙂)
- Create a UI that I could call to show me the latest figures
- Send an email to me every 3 hours to get the latest data
How I Developed
n8n contains a way to set up vibe coding, and in the trial this is set up automatically. So for example, I set up a workflow that called Northwind and created a list countries from which there was at least 1 customer.
All I had to do was to write what I wanted.
One nice feature of the HTTP Request node is that it allows you to automatically page through the entire results. With vibe coding, this did not get set up properly, but I was able to ask n8n to fix it and it did. [I think the problem was that Northwind nextLink links are relative and need to be manipulated before using; in the end, vibe coding changed to using $skip instead based on the current page number.]
But in my n8n landscape AI was not set up and it was too much trouble to do so, so I used Claude Code to generate the workflows and then I imported them. I provided a prompt like this:
Please create an n8n workflow that runs every hour and retrieves all the
comments for my blog post by running this API /api/2.0/search?q=select%20author.login,post_time%20from%20messages%20where%20ancestors.id%20=%20%2714446186%27%20 AND author.login%20!=%20'Dan_Wroblewski'%20LIMIT%20300\
, then collect all the community ids which is located in author/login but
remove duplicates. Then collect all the entries to our contest which is
available by running the API /odata/v4/fetchData?$filter=week eq
'week3'&$orderby=createdAt desc&$count=true and get a list of these community
IDs located in the field communityId, and remove duplicates. Then output a
list of the community IDs in both and tell me the total number of these IDs
... contest entry API requires authentication header X-API-KEY. Finally a web
page is created to show the results -- the number of community ids that did
both and the list of those IDsAnd Claude created the JSON to import into n8n, including what I needed to set up manually in the nodes.
I iterated over the workflow, like here adding the ability to trigger the workflow with a webhook not just by schedule, and to email me the results.
In the end I imported the workflow into an existing project, and then had to set the authentication key. Since I already had established connections to openAI andGmail, these were selected automatically.
It took maybe an hour to do everything, and it was easy. It wasn't so efficient reimporting the JSON each time (and perhaps again setting certain parameters) but I got better at it as times went on. When this is integrated into Joule Studio, everything should work- more smoothly.
The Results
In the end I created 2 workflows:
- One to email me the best comments and a list of users who completed the challenge
- One to email me the view count for each of the challenge posts, and the total
Challenge Participants
This workflow:
- Was triggered every 2 hours, but also could be triggered by an API call (or manually in test mode)
- Retrieved all the comments from the community
- Used code to extract the unique community IDs
- Retrieved all the participants who successfully called our CAP service
- Used code to get the unique community IDs
- Then used OpenAI to review the comments and find the best 5 that were the happiest and most appreciative of the challenge
- Used code to set up the HTML for the email
- Sent an email
The workflow also has a second webhook to display the results in a web page.
In the end, I got emails every few hours.
And the emails looked really good.
One improvement I could made is to create a CSV file with all participants so I could upload it to give them badges, and then attach that file to the emails.
Page Views
This workflow:
- Was also triggered every 2 hours, or by an API call, or manually.
- Used code to create JSON object with the list of page IDs I wanted to track. I could have easily set up a web page to enter them, as well as a data table inside n8n to enable me to store and modify them.
- Retrieved the views for all the pages (executed once for all the items in the list).
- Used code to set up the HTML for the email
- Sent an email
This is a nice example of how you can run nodes multiple times, once for each item in a list – all without having to set anything. There is a setting in case you want to override and execute the node just once.
The result was emails every few hours with the total views.
And the email looks like this:
😺