Project Name:
Pipedream Automation: Daily Inspirational Quote Bot
Tools Used
Pipedream AI Builder (for real-time automation creation & error fixing)
GPT-4.1 (for quote extraction)
Image generation action
Slack integration
Flow Overview
Step 1: Trigger; Daily Timer
Runs every day at 09:00 UTC
Configured with:
{
"cron": "0 9 * * *",
"timezone": "UTC"
}
Step 2: Fetch Blog Content
Makes a GET request to: https://lwid.dk/becoming-a-tour-guide-in-denmark-internationals-can-do-it-too/
Returns raw HTML/text content from the blog.
Here is the code, in case someone needs it:
import { axios } from "@pipedream/platform"
import * as cheerio from "cheerio"
export default defineComponent({
name: "Extract Text from Blog URL",
description: "Fetch HTML content from a blog URL and extract the text content",
type: "action",
props: {
url: {
type: "string",
label: "Blog URL",
description: "The URL to fetch HTML content from",
default: "https://lwid.dk/becoming-a-tour-guide-in-denmark-internationals-can-do-it-too/"
}
},
async run({ $ }) {
// Fetch HTML content
const htmlResponse = await axios($, {
url: this.url,
method: "GET"
})
// Parse HTML and extract text content
const $html = cheerio.load(htmlResponse)
const textContent = $html('body').text().replace(/\s+/g, ' ').trim()
// Export summary
$.export("$summary", `Successfully extracted text content from ${this.url} (${textContent.length} characters)`)
return {
url: this.url,
textContent: textContent,
htmlLength: htmlResponse.length,
textLength: textContent.length
}
}
})
Step 3: Extract Inspirational Quote with GPT
Uses GPT-4.1 model with system prompt:
"You are an expert at extracting meaningful, inspirational quotes from text content. Extract 1–2 of the most impactful and motivational quotes that would work well for daily inspiration. Focus on quotes about personal growth, career development, or overcoming challenges."
Inputs:
textContent
from the previous step (blog content)
Outputs: Plain text quote
Step 4: Send Message to Slack
Originally attempted to send the raw image as a message → didn’t work due to image formatting
Issue: Slack can't handle raw base64 in message body
Current output: One very large text string (the base64), but no image visible