<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lan Exequiel Mislang</title>
    <description>The latest articles on DEV Community by Lan Exequiel Mislang (@lanexbuilds).</description>
    <link>https://dev.to/lanexbuilds</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4208148%2Fb009109f-5339-4aa2-b81b-e1750abc0051.jpg</url>
      <title>DEV Community: Lan Exequiel Mislang</title>
      <link>https://dev.to/lanexbuilds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lanexbuilds"/>
    <language>en</language>
    <item>
      <title>Morning Course Digest for Coaches Node Logic Deep Dive</title>
      <dc:creator>Lan Exequiel Mislang</dc:creator>
      <pubDate>Wed, 28 Oct 2026 15:02:08 +0000</pubDate>
      <link>https://dev.to/lanexbuilds/morning-course-digest-for-coaches-node-logic-deep-dive-2f0d</link>
      <guid>https://dev.to/lanexbuilds/morning-course-digest-for-coaches-node-logic-deep-dive-2f0d</guid>
      <description>&lt;p&gt;At 6:15 am a coach opens their laptop to review yesterday’s student messages. Before coffee is finished, a Slack notification pings: "New course digest ready." The workflow has already gathered the latest articles from three RSS feeds, extracted the key takeaways, and posted a formatted summary to the #coaching‑updates channel. This is what the Morning Course Digest for Coaches workflow does each morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  At a glance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Built for:&lt;/strong&gt; coaches and course creators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Difficulty:&lt;/strong&gt; beginner&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starts with:&lt;/strong&gt; Schedule Trigger (scheduleTrigger)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steps:&lt;/strong&gt; 5 nodes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools:&lt;/strong&gt; n8n, Slack, RSS Feed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Schedule Trigger – scheduleTrigger
&lt;/h2&gt;

&lt;p&gt;The workflow begins with the &lt;strong&gt;scheduleTrigger&lt;/strong&gt; node. It is configured to run at 06:00 local time every weekday. When the trigger fires, it passes an empty execution context to the next node. No input data is required; the trigger simply starts the cycle at the set interval.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fetch RSS Feed – httpRequest
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;httpRequest&lt;/strong&gt; node receives the empty context from the schedule trigger and issues GET requests to the three selected RSS feed URLs. Each response contains an XML payload with items, each item having a title, link, and description. The node outputs an array of RSS items; each item includes the raw XML fields plus any metadata the node adds, such as the fetch timestamp. A typical output item looks like { "title": "Advanced Python Techniques", "link": "&lt;a href="https://example.com/python-tips" rel="noopener noreferrer"&gt;https://example.com/python-tips&lt;/a&gt;", "description": "Learn decorators and context managers." }.&lt;/p&gt;

&lt;h2&gt;
  
  
  Split RSS Items – splitInBatches
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;splitInBatches&lt;/strong&gt; node receives the array of RSS items from the httpRequest node. It separates the items into individual batches so that each item can be processed independently in the code node. The node does not alter the item structure; it simply outputs one execution per RSS item, passing the full item object down the branch. This allows the code node to run once per article rather than once for the entire feed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summarize Content – code
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;code&lt;/strong&gt; node receives one RSS item at a time from the splitInBatches node. Inside the node’s JavaScript function, the raw description text is extracted and trimmed. A simple prompt is constructed using an expression: &lt;code&gt;{{$json["description"]}}&lt;/code&gt;. The function then generates three concise, actionable points: the main topic, a practical takeaway, and a suggested next step for a coach. The output is a new JSON object attached to the execution, for example { "summary": "Topic: Using decorators to reduce boilerplate. Takeaway: Wrap repetitive logging. Next step: Apply to your onboarding emails." }.&lt;/p&gt;

&lt;h2&gt;
  
  
  Post to Slack – slack
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;slack&lt;/strong&gt; node gathers the summarized outputs from all code executions. It formats the results into a single message block, prepending the article title and linking back to the source. The node then posts the formatted text to the chosen Slack channel. The final message might read:&lt;br&gt;
"📚 &lt;em&gt;Advanced Python Techniques&lt;/em&gt;&lt;br&gt;
Learn decorators and context managers.&lt;br&gt;
• Topic: Using decorators to reduce boilerplate.&lt;br&gt;
• Takeaway: Wrap repetitive logging.&lt;br&gt;
• Next step: Apply to your onboarding emails.&lt;br&gt;
Read more: &lt;a href="https://example.com/python-tips" rel="noopener noreferrer"&gt;https://example.com/python-tips&lt;/a&gt;"&lt;/p&gt;

&lt;h3&gt;
  
  
  Worked Example
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Input (RSS item):&lt;/strong&gt;&lt;br&gt;
{ "title": "Time‑boxing Coaching Sessions", "link": "&lt;a href="https://coachingblog.com/timeboxing" rel="noopener noreferrer"&gt;https://coachingblog.com/timeboxing&lt;/a&gt;", "description": "A quick method to structure 30‑minute client calls with clear start, middle, and end phases." }&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After splitInBatches:&lt;/strong&gt;&lt;br&gt;
The item is passed to the code node as a single execution context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After code:&lt;/strong&gt;&lt;br&gt;
The node produces { "summary": "Topic: Time‑boxing structure for 30‑min calls. Takeaway: Define start, middle, end phases. Next step: Map your own client intake flow." }.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After slack:&lt;/strong&gt;&lt;br&gt;
The Slack message posted reads:&lt;br&gt;
"📚 &lt;em&gt;Time‑boxing Coaching Sessions&lt;/em&gt;&lt;br&gt;
A quick method to structure 30‑minute client calls with clear start, middle, and end phases.&lt;br&gt;
• Topic: Time‑boxing structure for 30‑min calls.&lt;br&gt;
• Takeaway: Define start, middle, end phases.&lt;br&gt;
• Next step: Map your own client intake flow.&lt;br&gt;
Read more: &lt;a href="https://coachingblog.com/timeboxing" rel="noopener noreferrer"&gt;https://coachingblog.com/timeboxing&lt;/a&gt;"&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch Out For
&lt;/h2&gt;

&lt;p&gt;The httpRequest node relies on the RSS feeds being well‑formed. If a feed returns HTML error pages or missing description fields, the code node may throw an error or produce incomplete summaries. Adding a Set node before the code step to check for the existence of &lt;code&gt;description&lt;/code&gt; can prevent failures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The scheduleTrigger starts the workflow each morning without manual input.&lt;/li&gt;
&lt;li&gt;The httpRequest node fetches raw RSS data from selected feeds, outputting individual items.&lt;/li&gt;
&lt;li&gt;The splitInBatches node isolates each item so the code node can summarize them one at a time.&lt;/li&gt;
&lt;li&gt;The code node generates concise actionable points from the article description.&lt;/li&gt;
&lt;li&gt;The slack node posts the formatted summary to a chosen channel, linking back to the source article.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before you import it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A running n8n instance (cloud or self-hosted).&lt;/li&gt;
&lt;li&gt;n8n account&lt;/li&gt;
&lt;li&gt;Slack workspace access&lt;/li&gt;
&lt;li&gt;RSS feed URLs for course content&lt;/li&gt;
&lt;li&gt;Sample data to test with, before pointing it at real records.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get the free workflow
&lt;/h2&gt;

&lt;p&gt;The importable JSON for &lt;strong&gt;Morning Course Digest for Coaches&lt;/strong&gt; is free to download: &lt;a href="https://lanexbuilds.com/library" rel="noopener noreferrer"&gt;https://lanexbuilds.com/library&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This workflow was generated with AI assistance. Test it with sample data before using it on real data.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo by &lt;a href="https://pixabay.com/photos/startup-meeting-brainstorming-594090/" rel="noopener noreferrer"&gt;StartupStockPhotos&lt;/a&gt; on &lt;a href="https://pixabay.com" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>workflow</category>
      <category>rss</category>
      <category>slack</category>
    </item>
    <item>
      <title>Morning Course Digest for Coaches Node Logic Deep Dive</title>
      <dc:creator>Lan Exequiel Mislang</dc:creator>
      <pubDate>Wed, 28 Oct 2026 08:09:51 +0000</pubDate>
      <link>https://dev.to/lanexbuilds/morning-course-digest-for-coaches-node-logic-deep-dive-1im9</link>
      <guid>https://dev.to/lanexbuilds/morning-course-digest-for-coaches-node-logic-deep-dive-1im9</guid>
      <description>&lt;p&gt;The alarm at 06:30 rings across a quiet home office. A coach opens her laptop and glances at the Slack channel dedicated to course updates. The daily summary has already arrived, compiled from three RSS feeds she follows. She scans the bullet points, picks one link to read fully, and drafts a response to a student all before her first client call at 09:00. This workflow automates that morning compilation. &lt;/p&gt;

&lt;h2&gt;
  
  
  At a glance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Built for:&lt;/strong&gt; coaches and course creators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Difficulty:&lt;/strong&gt; beginner&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starts with:&lt;/strong&gt; Schedule Trigger (scheduleTrigger)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steps:&lt;/strong&gt; 5 nodes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools:&lt;/strong&gt; n8n, Slack, RSS Feed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Schedule Trigger Node
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;scheduleTrigger&lt;/strong&gt; node is the entry point for the workflow. It is configured to fire at 07:00 UTC every morning. On each run, it outputs a single execution context that downstream nodes inherit. The node does not fetch any data itself; it simply signals the start of the run and passes the current timestamp to the next node in the chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fetch RSS Feed Node
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;httpRequest&lt;/strong&gt; node receives the trigger payload from the schedule and initiates three separate HTTP GET requests to the configured RSS feed URLs. Each request returns an XML document structured with channel items, including title, link, description, and pubDate. The node outputs an array of these items, which can number from a handful to dozens depending on how recently each feed was updated. The node handles basic HTTP errors, but if a feed is permanently down, the workflow stops at this point unless error handling is added.&lt;/p&gt;

&lt;h2&gt;
  
  
  Split In Batches Node
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;splitInBatches&lt;/strong&gt; node takes the array of RSS items from the previous node and breaks them into manageable chunks. A batch size of 5 is typical, meaning if 12 items are returned, the workflow creates three batches: two full batches of five and one final batch of two. Each batch is processed independently by the next node, allowing the summarization logic to run in parallel across groups of articles rather than one by one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Node
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;code&lt;/strong&gt; node receives one batch of RSS items at a time. Inside the function, the node iterates over the items and extracts the title and description fields. It then constructs a prompt that asks the large language model to summarize the content into three concise, actionable points suitable for a coach’s audience. The node outputs a single string per batch, formatted as markdown with a bold title link and a bullet list of points. If the description is missing, the node skips that item and logs a warning, ensuring the output does not contain broken references.&lt;/p&gt;

&lt;h2&gt;
  
  
  Slack Node
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;slack&lt;/strong&gt; node gathers the formatted summary strings from all batches and posts them to a specified Slack channel via an incoming webhook. The message includes the date at the top and a divider line before the bullet points. The node outputs a confirmation ID from Slack, which the workflow uses to verify delivery, but the coach sees only the published message in the channel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Worked Example
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Input (fictional RSS item):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"10 Productivity Hacks for Online Coaches"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Learn how to batch your client sessions, use timers for focus blocks, and automate your email follow-ups. Updated this week."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"link"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://examplecoachblog.com/productivity-hacks"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After scheduleTrigger:&lt;/strong&gt; The workflow begins; timestamp 2024-05-20T07:00:00Z is attached to the execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After httpRequest:&lt;/strong&gt; The item is included in the XML response array alongside other feed entries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After splitInBatches (batch size 3):&lt;/strong&gt; This item resides in the first batch of three.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After code node:&lt;/strong&gt; The output string is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gs"&gt;**10 Productivity Hacks for Online Coaches**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Batch client sessions to reduce context switching.
&lt;span class="p"&gt;-&lt;/span&gt; Set timers for deep focus blocks during peak hours.
&lt;span class="p"&gt;-&lt;/span&gt; Automate email follow-ups after each session.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After slack node:&lt;/strong&gt; The message appears in the "course-digest" channel with the date prefix and the markdown above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The scheduleTrigger node fires on a cron-like schedule and passes a timestamp to downstream nodes.&lt;/li&gt;
&lt;li&gt;The httpRequest node fetches raw XML from RSS feeds and outputs an item array that may vary in length.&lt;/li&gt;
&lt;li&gt;The splitInBatches node divides the item array into chunks so the code node can process them in parallel batches.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before you import it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A running n8n instance (cloud or self-hosted).&lt;/li&gt;
&lt;li&gt;n8n account&lt;/li&gt;
&lt;li&gt;Slack workspace access&lt;/li&gt;
&lt;li&gt;RSS feed URLs for course content&lt;/li&gt;
&lt;li&gt;Sample data to test with, before pointing it at real records.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get the free workflow
&lt;/h2&gt;

&lt;p&gt;The importable JSON for &lt;strong&gt;Morning Course Digest for Coaches&lt;/strong&gt; is free to download: &lt;a href="https://lanexbuilds.com/library" rel="noopener noreferrer"&gt;https://lanexbuilds.com/library&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This workflow was generated with AI assistance. Test it with sample data before using it on real data.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo by &lt;a href="https://pixabay.com/photos/online-class-course-teacher-laptop-6204349/" rel="noopener noreferrer"&gt;Tumisu&lt;/a&gt; on &lt;a href="https://pixabay.com" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
