<?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: alex</title>
    <description>The latest articles on DEV Community by alex (@alexkraft).</description>
    <link>https://dev.to/alexkraft</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%2F3776051%2F0653d4f6-9657-42fd-b707-8d09e1b2144f.jpeg</url>
      <title>DEV Community: alex</title>
      <link>https://dev.to/alexkraft</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexkraft"/>
    <language>en</language>
    <item>
      <title>I built a LinkedIn job scraper that sends daily digests to Discord (no login, no code)</title>
      <dc:creator>alex</dc:creator>
      <pubDate>Sat, 28 Feb 2026 21:13:58 +0000</pubDate>
      <link>https://dev.to/alexkraft/i-built-a-linkedin-job-scraper-that-sends-daily-digests-to-discord-no-login-no-code-32p4</link>
      <guid>https://dev.to/alexkraft/i-built-a-linkedin-job-scraper-that-sends-daily-digests-to-discord-no-login-no-code-32p4</guid>
      <description>&lt;p&gt;I got tired of manually checking LinkedIn every day, so I automated it.&lt;/p&gt;

&lt;p&gt;Built a Make.com scenario that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scrapes LinkedIn jobs via Apify (no login required)&lt;/li&gt;
&lt;li&gt;Filters for Easy Apply + remote + entry level&lt;/li&gt;
&lt;li&gt;Sends a clean daily digest to Discord&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example output:&lt;br&gt;
🔷 Automation Engineer — Acme Ltd&lt;br&gt;
📍 United Kingdom | 💼 Full-time | ⏰ 2 hours ago&lt;br&gt;
🔗 &lt;a href="https://linkedin.com/jobs/view/" rel="noopener noreferrer"&gt;https://linkedin.com/jobs/view/&lt;/a&gt;...&lt;br&gt;
－－－&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;HTTP POST → Start Apify actor (worldunboxer/rapid-linkedin-scraper)&lt;/li&gt;
&lt;li&gt;Sleep 90s → Wait for scrape to finish&lt;/li&gt;
&lt;li&gt;HTTP GET → Fetch results from Apify dataset&lt;/li&gt;
&lt;li&gt;Iterator → Loop through jobs&lt;/li&gt;
&lt;li&gt;Filter → Easy Apply only&lt;/li&gt;
&lt;li&gt;Set Variable → Format each job entry&lt;/li&gt;
&lt;li&gt;Text Aggregator → Combine into one message&lt;/li&gt;
&lt;li&gt;HTTP POST → Send to Discord webhook&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key lessons learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The JSON escaping problem&lt;/strong&gt; — Line breaks in aggregated text break Discord's JSON. Fix: use Make.com's "Data structure" input method instead of raw JSON string. It escapes everything automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apify actor quirks&lt;/strong&gt; — The actor sometimes ignores keyword parameters and returns random jobs. Workaround: add a local filter on job_title contains "keyword" after the iterator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running cost&lt;/strong&gt; — Apify charges $0.001 per result. Daily runs with 5 results = ~$0.15/month.  But you get 5 dollars a month for free to use however you want from apify.&lt;/p&gt;

&lt;h2&gt;
  
  
  The template
&lt;/h2&gt;

&lt;p&gt;Packaged it as a &lt;a href="https://alexkraft.gumroad.com/l/rlcggz" rel="noopener noreferrer"&gt;Gumroad &lt;/a&gt;product with the blueprint + setup guide.&lt;br&gt;
&lt;a href="https://alexkraft.gumroad.com/l/rlcggz" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the build in the comments.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>nocode</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Instagram Hashtag Research Bot with Make.com + Apify</title>
      <dc:creator>alex</dc:creator>
      <pubDate>Fri, 27 Feb 2026 12:30:06 +0000</pubDate>
      <link>https://dev.to/alexkraft/instagram-hashtag-research-bot-with-makecom-apify-n3p</link>
      <guid>https://dev.to/alexkraft/instagram-hashtag-research-bot-with-makecom-apify-n3p</guid>
      <description>&lt;p&gt;Today's build: automated Instagram hashtag research that delivers to Discord.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Stack&lt;/strong&gt;&lt;br&gt;
Make.com — workflow orchestration&lt;br&gt;
Apify (Instagram Hashtag Analytics actor) — scraping engine&lt;br&gt;
Discord — delivery channel&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Flow&lt;/strong&gt;&lt;br&gt;
HTTP POST (start Apify run)&lt;br&gt;
→ Sleep 30s&lt;br&gt;
→ HTTP GET (fetch results)&lt;br&gt;
→ Set Variables (format hashtag lists)&lt;br&gt;
→ HTTP POST (Discord webhook)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Make.com snippet&lt;/strong&gt;&lt;br&gt;
To extract all hashtags from the Apify response array and join them line by line:&lt;/p&gt;

&lt;p&gt;{{join(map(3.data[1].related; "hash"); "\n")}}&lt;/p&gt;

&lt;p&gt;map() pulls the hash field from each object in the array. join() puts them on separate lines. &lt;br&gt;
Simple but took me a minute to figure out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it returns&lt;/strong&gt;&lt;br&gt;
Three hashtag groups per niche: Related, Related Frequent, and Niche. &lt;/p&gt;

&lt;p&gt;This is hashtag research based on Instagram's public graph — useful for content planning, not real-time trending.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Get the blueprint&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
&lt;a href="https://alexkraft.gumroad.com/l/kfhel" rel="noopener noreferrer"&gt;Gumroad &lt;/a&gt;→ includes JSON blueprint + setup guide.&lt;br&gt;
Full writeup on Hashnode → &lt;a href="//alexkraft.hashnode.dev"&gt;alexkraft.hashnode.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>nocode</category>
      <category>makecom</category>
      <category>apify</category>
    </item>
    <item>
      <title>Real-time Gumroad sales tracker with Make.com + Google Sheets + Discord</title>
      <dc:creator>alex</dc:creator>
      <pubDate>Mon, 23 Feb 2026 15:07:25 +0000</pubDate>
      <link>https://dev.to/alexkraft/real-time-gumroad-sales-tracker-with-makecom-google-sheets-discord-355p</link>
      <guid>https://dev.to/alexkraft/real-time-gumroad-sales-tracker-with-makecom-google-sheets-discord-355p</guid>
      <description>&lt;p&gt;The problem:&lt;/p&gt;

&lt;p&gt;Selling on Gumroad. Refreshing the dashboard too often. Classic. Automated it.&lt;/p&gt;

&lt;p&gt;The flow:&lt;/p&gt;

&lt;p&gt;Gumroad webhook&lt;br&gt;
  → Log sale to Google Sheets&lt;br&gt;
  → Update dashboard timestamp&lt;br&gt;
  → Read total sales count&lt;br&gt;
  → Discord: sale notification (always)&lt;br&gt;
  → [Filter: milestone + not a test sale]&lt;br&gt;
  → Discord: milestone alert (conditional)&lt;/p&gt;

&lt;p&gt;Test vs real sales&lt;/p&gt;

&lt;p&gt;Gumroad sends a test flag on every webhook. Both flow through the same scenario — just labelled differently in the sheet and in Discord. &lt;/p&gt;

&lt;p&gt;Milestone alerts are filtered to real sales only.&lt;/p&gt;

&lt;p&gt;What's in the package&lt;br&gt;
Blueprint (JSON), setup guide, README. $9 on Gumroad.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://alexkraft.gumroad.com/l/kkysun" rel="noopener noreferrer"&gt;→ Get it here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built by Alex Kraft — automation developer. Follow the journey: alexkraft.hashnode.dev | linkedin.com/in/alexandru-bobo | dev.to/alexkraft&lt;/p&gt;

</description>
      <category>automation</category>
      <category>productivity</category>
      <category>nocode</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Automated Cold Outreach with Make.com + Apify + Google Sheets (No Code)</title>
      <dc:creator>alex</dc:creator>
      <pubDate>Sat, 21 Feb 2026 11:46:14 +0000</pubDate>
      <link>https://dev.to/alexkraft/automated-cold-outreach-with-makecom-apify-google-sheets-no-code-2en3</link>
      <guid>https://dev.to/alexkraft/automated-cold-outreach-with-makecom-apify-google-sheets-no-code-2en3</guid>
      <description>&lt;p&gt;Built a no-code automation that handles the full cold outreach pipeline for local businesses.&lt;/p&gt;

&lt;p&gt;The flow:&lt;br&gt;
Google Maps scrape → filter leads with emails → deduplicate → add to sheet → send personalised email → mark as sent&lt;/p&gt;

&lt;p&gt;Tools used:&lt;br&gt;
Make.com (workflow automation)&lt;br&gt;
Apify (Google Maps scraper)&lt;br&gt;
Google Sheets (lead database)&lt;br&gt;
Gmail (email sending)&lt;/p&gt;

&lt;p&gt;The interesting part is the duplicate check — before adding any lead, it searches column B of the sheet for that email. If it already exists, the whole branch is skipped. Keeps the sheet clean across multiple runs.&lt;br&gt;
The email is personalised with the scraped business name using {{32.title}} from the Iterator module output.&lt;/p&gt;

&lt;p&gt;I released it as a ready-to-import blueprint with docs.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://alexkraft.gumroad.com/l/razxv" rel="noopener noreferrer"&gt;[Link here]&lt;/a&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>makecom</category>
      <category>nocode</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
