<?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: John Builds</title>
    <description>The latest articles on DEV Community by John Builds (@johnbuilds).</description>
    <link>https://dev.to/johnbuilds</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889099%2F518139a0-3766-412c-85c6-85c0b587fbd3.jpg</url>
      <title>DEV Community: John Builds</title>
      <link>https://dev.to/johnbuilds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johnbuilds"/>
    <language>en</language>
    <item>
      <title>Does Replying Boost Your Reach on X? The Reply Boost Mechanism Explained</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Tue, 02 Jun 2026 21:02:33 +0000</pubDate>
      <link>https://dev.to/johnbuilds/does-replying-boost-your-reach-on-x-the-reply-boost-mechanism-explained-4jcf</link>
      <guid>https://dev.to/johnbuilds/does-replying-boost-your-reach-on-x-the-reply-boost-mechanism-explained-4jcf</guid>
      <description>&lt;p&gt;Replying to tweets is the most underrated growth tactic on X. It is not just about starting conversations — the X algorithm treats replies as a high-signal engagement action and rewards active repliers with increased distribution on their own posts. Here is how the reply boost works and how to use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the reply boost on X?
&lt;/h2&gt;

&lt;p&gt;The reply boost is the reach amplification effect that comes from replying to popular posts on X. When you leave a substantive reply on a tweet with high engagement, two things happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Direct exposure.&lt;/strong&gt; Your reply is visible to everyone who reads the original thread — including followers of the original poster who have never heard of you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Algorithmic signal.&lt;/strong&gt; The X algorithm interprets active reply behaviour as a sign of a healthy, engaged account. Users who reply frequently tend to see improved distribution on their own posts over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not a hack. It is how Twitter and X have always functioned: replies are public, threaded, and discoverable. The difference is that most users treat replies as a side channel rather than a primary growth tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the X algorithm weights replies vs. other actions
&lt;/h2&gt;

&lt;p&gt;Not all engagement actions are equal. Based on X's published open-source ranking model (released in 2023), replies carry significantly more weight than likes in terms of algorithmic amplification. A reply signals deeper intent — the user read the post, processed it, and invested time in a response.&lt;/p&gt;

&lt;p&gt;From highest to lowest algorithmic weight: replies &amp;gt; quote tweets &amp;gt; reposts &amp;gt; likes &amp;gt; profile clicks. When your goal is reach, spending time replying generates more return than spending the same time liking posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use the reply boost to grow on X
&lt;/h2&gt;

&lt;p&gt;The reply boost compounds when you are consistent and targeted. Here is the approach that works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Target accounts with 5k–100k followers in your niche.&lt;/strong&gt; Large enough for exposure, small enough that your reply is not buried under hundreds of others.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reply within the first 30 minutes of a post going live.&lt;/strong&gt; Early replies get the most visibility as engagement on the original post climbs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a distinct point of view, not just agreement.&lt;/strong&gt; "Great point!" adds nothing. A contrarian take, a data point, or a related story gets likes on your reply — which further boosts your visibility in the thread.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reply every day.&lt;/strong&gt; The compounding effect comes from consistency. 10–20 quality replies per day over 90 days produces measurable follower growth.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The fastest way to scale replies without losing your voice
&lt;/h2&gt;

&lt;p&gt;The main constraint on the reply strategy is time. Writing 15 thoughtful replies per day on top of your existing content schedule is unsustainable for most founders and creators. This is exactly what XreplyAI is built for: it generates reply drafts trained on how you actually write, so you can review, edit, and post in seconds rather than minutes.&lt;/p&gt;

&lt;p&gt;The goal is not to automate replies — it is to remove the blank-page friction so you can post more of them, faster, without sounding like everyone else using AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does replying to tweets boost your reach on X?
&lt;/h3&gt;

&lt;p&gt;Yes. Replying to tweets is one of the highest-leverage actions on X for reach growth. When you reply to a large account, your reply is visible to their entire audience in the thread. The X algorithm also signals that you are an active, engaged user — which can boost distribution of your own posts.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the reply boost on X?
&lt;/h3&gt;

&lt;p&gt;The reply boost refers to the algorithmic and social amplification that comes from replying to popular posts. Your reply sits under a high-traffic post and gets seen by followers of the original poster — giving you exposure to audiences that would not have found you otherwise.&lt;/p&gt;

&lt;h3&gt;
  
  
  How many replies should I post per day to grow on X?
&lt;/h3&gt;

&lt;p&gt;Most practitioners who grow through replies post 10–20 substantive replies per day. Quality matters more than quantity — a well-considered reply to a post with 1,000 likes will outperform ten generic replies on low-traffic posts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does the X algorithm reward replying?
&lt;/h3&gt;

&lt;p&gt;Yes. Based on X's published ranking model, replies carry more algorithmic weight than likes or reposts. The algorithm interprets active reply behaviour as a signal of a high-quality, engaged account.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://xreplyai.com/blog/does-replying-boost-reach-on-x" rel="noopener noreferrer"&gt;xreplyai.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>twitter</category>
      <category>socialmedia</category>
      <category>growth</category>
      <category>marketing</category>
    </item>
    <item>
      <title>I built an MCP server for my SaaS — here's what I learned shipping it as a distribution channel</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Mon, 01 Jun 2026 19:35:22 +0000</pubDate>
      <link>https://dev.to/johnbuilds/i-built-an-mcp-server-for-my-saas-heres-what-i-learned-shipping-it-as-a-distribution-channel-f9</link>
      <guid>https://dev.to/johnbuilds/i-built-an-mcp-server-for-my-saas-heres-what-i-learned-shipping-it-as-a-distribution-channel-f9</guid>
      <description>&lt;p&gt;When I added an MCP server to XreplyAI (a social media scheduling tool), I wasn't just adding a feature — I was betting that the people most likely to care about consistent social presence are the same people already living in Claude Code or Cursor.&lt;/p&gt;

&lt;p&gt;So far that bet feels right.&lt;/p&gt;

&lt;p&gt;Here's what the setup looks like:&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;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="nl"&gt;"xreplyai"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@xreplyai/mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;]&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;span class="p"&gt;}&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;After that, Claude Code has tools to create drafts, schedule posts, and publish across 8 platforms — X, LinkedIn, Instagram, Threads, YouTube, Pinterest, Bluesky, TikTok — without leaving the editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned building it
&lt;/h2&gt;

&lt;p&gt;The MCP TypeScript SDK is well-designed and the protocol is cleaner than I expected for something this new. The trickier parts were:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Remote MCP over HTTP&lt;/strong&gt; — I deployed to Cloudflare Workers with OAuth 2.1. The spec exists but examples are sparse. Durable Objects handle session state cleanly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Guardrails matter&lt;/strong&gt; — "publish a post" is a destructive tool. I added a draft-first flow so nothing goes live without an explicit publish call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Voice is what makes it non-trivial&lt;/strong&gt; — XreplyAI trains on your tweet archive, so when you ask Claude to "write a post about what I just shipped," it generates in your style, not a template. That's what separates it from just calling a REST API from a prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  The distribution angle
&lt;/h2&gt;

&lt;p&gt;MCP tools feel like a new surface for early SaaS adoption. Low install friction, high-intent audience (developers deep in AI workflows), zero cold outreach needed. Worth thinking about if you're building a tool that developers would actually use.&lt;/p&gt;

&lt;p&gt;Try it free: &lt;a href="https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-06-01" rel="noopener noreferrer"&gt;https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-06-01&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solofounder</category>
      <category>mcp</category>
      <category>ai</category>
      <category>indiehacker</category>
    </item>
    <item>
      <title>Does Reposting Your Own Tweet Help? What the X Algorithm Actually Does</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Fri, 29 May 2026 15:24:34 +0000</pubDate>
      <link>https://dev.to/johnbuilds/does-reposting-your-own-tweet-help-what-the-x-algorithm-actually-does-158n</link>
      <guid>https://dev.to/johnbuilds/does-reposting-your-own-tweet-help-what-the-x-algorithm-actually-does-158n</guid>
      <description>&lt;p&gt;Short answer: sometimes. Reposting your own tweet on X can squeeze a little extra reach out of a post that performed well — but it is far from a growth strategy. Here is what actually happens when you hit repost on your own content, and what to do instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens when you repost your own tweet
&lt;/h2&gt;

&lt;p&gt;When you repost your own tweet, X re-distributes it to your followers' timelines — but not necessarily the For You feed of people who don't follow you. The algorithm treats self-reposts as a signal that you want more eyes on a post, not as new content. That distinction matters.&lt;/p&gt;

&lt;p&gt;Original posts and replies get evaluated fresh: the algorithm watches the early engagement rate (likes, replies, bookmarks per impression) and decides whether to amplify. Reposts skip that evaluation window. They rely on the original post's existing score.&lt;/p&gt;

&lt;p&gt;So if your original tweet had strong engagement, reposting it at a different time of day can help latecomers see it. If the original had weak engagement, reposting it just moves a low-signal post around your own feed.&lt;/p&gt;

&lt;h2&gt;
  
  
  When reposting your own tweet actually helps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Timezone arbitrage.&lt;/strong&gt; You posted at 9 AM EST and most of your audience is in Europe. Reposting at 2 PM UTC can double the effective reach for a time-sensitive announcement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evergreen content.&lt;/strong&gt; Tips, frameworks, and how-tos have a long shelf life. Reposting them months later (not days) to a larger audience makes sense.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After a follower spike.&lt;/strong&gt; If you just went viral on a different post and gained 500 new followers, reposting your best older content introduces it to people who never saw it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What works better than a plain repost
&lt;/h2&gt;

&lt;p&gt;The X algorithm weights different actions very differently. Replies — especially to larger accounts — carry the most reach-amplification value because they expose you to the original poster's audience. A quote tweet with added commentary performs better than a plain repost because it creates new content with its own engagement loop.&lt;/p&gt;

&lt;p&gt;If you want to resurface old content, a quote tweet with "this still applies because..." gets more traction than a silent repost. The new text gives the algorithm something fresh to evaluate.&lt;/p&gt;

&lt;p&gt;The highest-leverage habit on X is consistent, substantive replies to posts in your niche. Each reply is a mini-post visible to the original poster's followers. Over time, that compounds into follower growth that no amount of self-reposting can match.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;Reposting your own tweet helps marginally in specific situations. It is not a growth lever. If you find yourself reposting old tweets because you have nothing new to say, the real fix is a more consistent posting habit — not recycling content. Use reposts sparingly, prefer quote tweets with commentary, and spend the rest of your time in other people's reply sections.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does reposting your own tweet help?
&lt;/h3&gt;

&lt;p&gt;Yes, in limited cases. Reposting your own tweet can re-expose it to followers who missed it the first time, especially if you post at a different time of day. However, the X algorithm treats self-reposts differently from original content — they carry less algorithmic weight and rarely go viral on their own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does X penalise you for reposting your own tweet?
&lt;/h3&gt;

&lt;p&gt;X does not explicitly penalise self-reposts, but the algorithm deprioritises content that gets low engagement relative to impressions. If your repost gets ignored, it can signal low-quality content and reduce future reach.&lt;/p&gt;

&lt;h3&gt;
  
  
  What works better than reposting your own tweet?
&lt;/h3&gt;

&lt;p&gt;Replies are the highest-leverage action on X. They carry far more algorithmic weight than reposts and expose you to new audiences through the original poster's followers. Adding a quote tweet with fresh commentary also outperforms a plain repost.&lt;/p&gt;

&lt;h3&gt;
  
  
  How often should you repost your own tweets?
&lt;/h3&gt;

&lt;p&gt;Sparingly. For evergreen content, once every few months is reasonable. For time-sensitive posts, once after 12–24 hours to catch a different timezone is acceptable. More than that risks training your followers to ignore reposts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://xreplyai.com/blog/does-reposting-your-own-tweet-help" rel="noopener noreferrer"&gt;xreplyai.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>twitter</category>
      <category>socialmedia</category>
      <category>growth</category>
      <category>marketing</category>
    </item>
    <item>
      <title>How to persist landing page attribution across OAuth redirects (30 lines of middleware)</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Thu, 28 May 2026 15:00:27 +0000</pubDate>
      <link>https://dev.to/johnbuilds/how-to-persist-landing-page-attribution-across-oauth-redirects-30-lines-of-middleware-1mmg</link>
      <guid>https://dev.to/johnbuilds/how-to-persist-landing-page-attribution-across-oauth-redirects-30-lines-of-middleware-1mmg</guid>
      <description>&lt;p&gt;Landing page attribution breaks the moment a user hits an OAuth flow.&lt;/p&gt;

&lt;p&gt;Here's the scenario: you're running ads to multiple landing pages — one angle about speed, one about voice matching, one generic. All getting clicks. But by the time a visitor completes signup through Google OAuth or Twitter OAuth, the original URL params are gone. You see a new user in your database. You have no idea which LP or which copy variant sent them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix: cookie before redirect
&lt;/h2&gt;

&lt;p&gt;The solution is straightforward once you see it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On first page load, write the landing page path + A/B variant to a cookie — &lt;em&gt;before&lt;/em&gt; any auth redirect happens&lt;/li&gt;
&lt;li&gt;On account creation (server-side), read that cookie back and persist both fields on the user record&lt;/li&gt;
&lt;li&gt;The cookie survives OAuth round-trips regardless of which auth method they use
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// middleware.ts — runs on first page load&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nextUrl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/lp/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;signup_landing_page&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nextUrl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;maxAge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3600&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ab_variant&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;getVariantFromCookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;maxAge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3600&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# users_controller.rb — on account creation&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;signup_landing_page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:signup_landing_page&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ab_variant&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:ab_variant&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why not just use GA4?
&lt;/h2&gt;

&lt;p&gt;GA4 session attribution and database-level user attribution tell different stories when auth redirects are involved. GA4 may correctly attribute the session to the landing page — but if you want to segment your actual converted users by which LP they came from (to measure LTV, churn rate, or feature adoption by cohort), you need it on the user record.&lt;/p&gt;

&lt;p&gt;Now every new signup in XreplyAI carries &lt;code&gt;signup_landing_page&lt;/code&gt; and &lt;code&gt;ab_variant&lt;/code&gt;. First week of data is already changing where ad spend goes.&lt;/p&gt;

&lt;p&gt;About 30 lines of middleware total. Worth the afternoon.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built for &lt;a href="https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-05-28" rel="noopener noreferrer"&gt;XreplyAI&lt;/a&gt; — AI social media tool for solo founders.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>startup</category>
      <category>indiehacker</category>
    </item>
    <item>
      <title>The building-in-public system that actually stuck (after failing every just be consistent framework)</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Tue, 26 May 2026 15:56:53 +0000</pubDate>
      <link>https://dev.to/johnbuilds/the-building-in-public-system-that-actually-stuck-after-failing-every-just-be-consistent-framework-4112</link>
      <guid>https://dev.to/johnbuilds/the-building-in-public-system-that-actually-stuck-after-failing-every-just-be-consistent-framework-4112</guid>
      <description>&lt;p&gt;The building-in-public system that actually stuck (after failing every "just be consistent" framework)&lt;/p&gt;

&lt;p&gt;I spent the first year of my product treating social media like something I'd get to eventually. Posted sporadically, disappeared during crunch, felt guilty about it constantly.&lt;/p&gt;

&lt;p&gt;Here's the system that finally stuck — and it works because it makes content a byproduct of building, not a separate job:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Keep a decision log
&lt;/h2&gt;

&lt;p&gt;Every real product decision gets one sentence: why did I do this. Not a post. Just a log. 30 seconds. This becomes the content backlog.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. One post per week from the log
&lt;/h2&gt;

&lt;p&gt;Pick the decision that felt most uncertain at the time. Those are always the most honest posts. Honest posts outperform polished ones in every community I've tried.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Replies are reactions, not performances
&lt;/h2&gt;

&lt;p&gt;Stop trying to write the perfect reply. React genuinely, add one observation the person might not have considered, move on. 30 seconds per reply. It compounds.&lt;/p&gt;

&lt;p&gt;The last piece was fixing the AI problem. Generic prompts made everything sound the same. Switched to training on my own tweet archive — replies actually sound like me now. I built this into &lt;a href="https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=edusales-2026-05-26" rel="noopener noreferrer"&gt;XreplyAI&lt;/a&gt; as a BYOK tool — you connect your own Gemini or OpenAI key and pay the provider directly (usually under $5/mo).&lt;/p&gt;

&lt;p&gt;Curious what systems other solo builders have landed on. Especially anything that makes replies less of a time sink.&lt;/p&gt;

</description>
      <category>solofounder</category>
      <category>indiehacker</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>How we trained a voice profile to make AI LinkedIn posts sound less like AI</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Tue, 19 May 2026 15:54:34 +0000</pubDate>
      <link>https://dev.to/johnbuilds/how-we-trained-a-voice-profile-to-make-ai-linkedin-posts-sound-less-like-ai-ipm</link>
      <guid>https://dev.to/johnbuilds/how-we-trained-a-voice-profile-to-make-ai-linkedin-posts-sound-less-like-ai-ipm</guid>
      <description>&lt;p&gt;Most AI writing tools have a tell. The hook is too clean. The structure is too predictable. LinkedIn audiences in particular have gotten good at spotting it.&lt;/p&gt;

&lt;p&gt;The root problem: AI generates from a blank slate. It doesn't know your cadence, your typical opening, the way you end a thought.&lt;/p&gt;

&lt;p&gt;For XreplyAI, we took a different approach. Before generating anything, we build a voice profile from the user's own tweet archive — embedding similarity to find characteristic patterns, then injecting those as a style layer into the prompt. The result isn't perfect, but it's personal. It sounds like the person, not like a template.&lt;/p&gt;

&lt;p&gt;We just shipped LinkedIn scheduling support. BYOK model — users supply their own Gemini, OpenAI, or Claude key.&lt;/p&gt;

&lt;p&gt;If you're building something in the AI writing or scheduling space, happy to trade notes on the voice training approach.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-05-19" rel="noopener noreferrer"&gt;https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-05-19&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>linkedin</category>
      <category>indiehackers</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>From GTM migration to missing UTM columns: getting ad attribution right as a solo founder</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Mon, 18 May 2026 18:45:54 +0000</pubDate>
      <link>https://dev.to/johnbuilds/from-gtm-migration-to-missing-utm-columns-getting-ad-attribution-right-as-a-solo-founder-95g</link>
      <guid>https://dev.to/johnbuilds/from-gtm-migration-to-missing-utm-columns-getting-ad-attribution-right-as-a-solo-founder-95g</guid>
      <description>&lt;p&gt;Last month I migrated XreplyAI from hardcoded gtag snippets to Google Tag Manager.&lt;/p&gt;

&lt;p&gt;One container. All pixels managed in one place. No code deploys to add or change tags. I thought that was the hard part of getting ad attribution right.&lt;/p&gt;

&lt;p&gt;It wasn't.&lt;/p&gt;

&lt;p&gt;This morning I finished wiring Google Ads conversion tracking — &lt;code&gt;trial_start&lt;/code&gt; firing server-side via the GA4 Measurement Protocol, conversion imported into Google Ads, bidding optimized for trials.&lt;/p&gt;

&lt;p&gt;Then a new user signed up. And I had no idea where they came from.&lt;/p&gt;

&lt;p&gt;Not because GA4 didn't know. GA4 knew — "google / cpc." But our users table has no UTM columns. So I can't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculate LTV by acquisition channel&lt;/li&gt;
&lt;li&gt;Know whether Google Ads or X Ads drove a signup&lt;/li&gt;
&lt;li&gt;Filter subscribers by source when making budget decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fix is obvious in hindsight: store &lt;code&gt;utm_source&lt;/code&gt;, &lt;code&gt;utm_medium&lt;/code&gt;, &lt;code&gt;utm_campaign&lt;/code&gt;, &lt;code&gt;utm_content&lt;/code&gt;, and &lt;code&gt;gclid&lt;/code&gt; on the user record at signup. Capture them from the URL on landing, pass them to the backend at magic link / signup time, persist once, never overwrite on subsequent logins.&lt;/p&gt;

&lt;p&gt;It's a 2-hour task. I opened a GitHub issue this morning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; GTM solves "where do my tags live." UTM columns on users solve "where did this specific person come from." You need both. Most founders running paid traffic have neither.&lt;/p&gt;

&lt;p&gt;Fix it before you spend another dollar on ads.&lt;/p&gt;




&lt;p&gt;Building XreplyAI in public — an AI social media tool for solo founders. BYOK model, voice-matched content across 8 platforms. &lt;a href="https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=edusales-2026-05-19" rel="noopener noreferrer"&gt;xreplyai.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solofounder</category>
      <category>analytics</category>
      <category>indiehacker</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why we moved from hardcoded gtag snippets to Google Tag Manager in our Next.js app</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Thu, 14 May 2026 15:28:44 +0000</pubDate>
      <link>https://dev.to/johnbuilds/why-we-moved-from-hardcoded-gtag-snippets-to-google-tag-manager-in-our-nextjs-app-464b</link>
      <guid>https://dev.to/johnbuilds/why-we-moved-from-hardcoded-gtag-snippets-to-google-tag-manager-in-our-nextjs-app-464b</guid>
      <description>&lt;p&gt;For the first year of building XreplyAI, our tracking setup was the standard mess: gtag scripts in &lt;code&gt;_app.tsx&lt;/code&gt;, conversion events scattered across components, and a tacit rule that any tracking change needed a full deploy cycle.&lt;/p&gt;

&lt;p&gt;It worked, but it had a real cost: we consistently under-instrumented. Adding a conversion event for a new experiment didn't feel worth a PR when you're moving fast solo.&lt;/p&gt;

&lt;h2&gt;
  
  
  The switch to GTM
&lt;/h2&gt;

&lt;p&gt;The migration was about 2 hours. The short version:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Replace inline gtag calls with &lt;code&gt;window.dataLayer.push()&lt;/code&gt; calls&lt;/li&gt;
&lt;li&gt;Move all tag configs (Google Ads, GA4, any new pixels) into a GTM container&lt;/li&gt;
&lt;li&gt;Publish the container — done&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What actually changed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No deploys for tracking changes.&lt;/strong&gt; New pixel, new conversion event, tweaked trigger — all done in GTM in minutes. This sounds minor until you ship 3 new conversion events in a week without opening your codebase once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preview mode is a real debugger.&lt;/strong&gt; GTM shows every tag, trigger, and variable state as you click through your app in real time. We caught two misfiring conversion events we didn't know existed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explicit load order.&lt;/strong&gt; Async gtag snippets fire whenever the browser gets around to them. GTM lets you sequence tags so dependencies are guaranteed to load before dependents run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One place to audit everything.&lt;/strong&gt; One dashboard instead of grepping through &lt;code&gt;_app.tsx&lt;/code&gt; and a dozen component files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worth it at early stage?
&lt;/h2&gt;

&lt;p&gt;Yes — especially if you're running any paid acquisition. The ops overhead of tracking living in your codebase compounds as you add channels. Moving it out early is much easier than untangling it later.&lt;/p&gt;

&lt;p&gt;We're building &lt;a href="https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-05-14" rel="noopener noreferrer"&gt;XreplyAI&lt;/a&gt; — AI social media tool for solo founders. Happy to share the full GTM container structure in the comments if useful.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>googletagmanager</category>
      <category>analytics</category>
      <category>solofounder</category>
    </item>
    <item>
      <title>The real reason solo founders go quiet on social (and the system that fixes it)</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Wed, 13 May 2026 19:06:41 +0000</pubDate>
      <link>https://dev.to/johnbuilds/the-real-reason-solo-founders-go-quiet-on-social-and-the-system-that-fixes-it-pho</link>
      <guid>https://dev.to/johnbuilds/the-real-reason-solo-founders-go-quiet-on-social-and-the-system-that-fixes-it-pho</guid>
      <description>&lt;p&gt;The solo founders who stay visible on social aren't more disciplined than everyone else. They just stopped making the content decision from scratch every day.&lt;/p&gt;

&lt;p&gt;Here's the pattern I keep seeing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The founders who go quiet&lt;/strong&gt; are making three decisions every time they sit down to post: what topic, what format, what tone. By the time you've worked through that on a Tuesday morning with a backlog of customer emails, posting feels optional. So it gets skipped. Every busy week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The founders who stay consistent&lt;/strong&gt; solved a different problem. They made those decisions once — not weekly, not daily. Once.&lt;/p&gt;

&lt;h2&gt;
  
  
  The system that actually works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Pick your topics and leave them alone&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choose 3–5 areas you genuinely know and care about. Not what you think you &lt;em&gt;should&lt;/em&gt; post about — what you'd talk about at a dinner with a founder you respect. Write those down. Don't revisit them every week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Lock in a voice style&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Professional" and "casual" aren't voice styles — they're vibes. Get more specific. Are you direct and punchy? Do you explain things step by step? Do you use analogies? Pick one pattern that matches how you actually write when you're not overthinking it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Review content, don't create it from zero&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once your topics and voice are set, your job is curation and approval — not blank-page creation. This is a completely different cognitive task. It takes 10 minutes instead of an hour.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why most AI tools don't fix this
&lt;/h2&gt;

&lt;p&gt;The problem with most AI writing tools is that they ask you the same questions every time: &lt;em&gt;What do you want to write about? What tone? Who's the audience?&lt;/em&gt; You're still making the decision fresh. The tool just types faster.&lt;/p&gt;

&lt;p&gt;The fix is a system where the decisions are made &lt;em&gt;once&lt;/em&gt;, upstream, and the AI works within those guardrails automatically.&lt;/p&gt;

&lt;p&gt;I built XreplyAI around this model. You set your topics and voice during onboarding — and now the generated posts show you exactly which voice preset and topics shaped each draft, so you can trust what you're approving rather than second-guessing whether it sounds like you.&lt;/p&gt;

&lt;p&gt;Then it generates a rolling week of posts. You review, tweak if needed, approve.&lt;/p&gt;

&lt;p&gt;Consistency stops being a motivation problem. It becomes a 10-minute-a-week workflow.&lt;/p&gt;

&lt;p&gt;If you keep going quiet on social during busy stretches — the bottleneck probably isn't time. It's the decision overhead. Solve that first.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://xreplyai.com?utm_source=hashnode&amp;amp;utm_medium=social&amp;amp;utm_campaign=edusales-2026-05-13" rel="noopener noreferrer"&gt;xreplyai.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solofounder</category>
      <category>productivity</category>
      <category>ai</category>
      <category>indiehacker</category>
    </item>
    <item>
      <title>We A/B tested value-first onboarding (generate before subscribe) — here is what happened</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Tue, 12 May 2026 13:23:12 +0000</pubDate>
      <link>https://dev.to/johnbuilds/we-ab-tested-value-first-onboarding-generate-before-subscribe-here-is-what-happened-1fif</link>
      <guid>https://dev.to/johnbuilds/we-ab-tested-value-first-onboarding-generate-before-subscribe-here-is-what-happened-1fif</guid>
      <description>&lt;p&gt;We've been running an A/B test on our onboarding flow and the early results are interesting enough to write up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The old sequence
&lt;/h2&gt;

&lt;p&gt;Voice setup → connect account → subscribe → generate posts. Classic SaaS — get commitment early, then show value.&lt;/p&gt;

&lt;p&gt;The problem: users were dropping at the subscribe step having never seen a single piece of output. They were being asked to pay for something they'd only read about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The value-first sequence
&lt;/h2&gt;

&lt;p&gt;Pick topics → generate 5 posts in your voice → review them → THEN connect and subscribe.&lt;/p&gt;

&lt;p&gt;By the time they hit the paywall, they've already seen their content calendar for next week. Drop-off on the subscribe step is lower. Makes sense — it's a lot easier to say yes to a tool when you're already holding the output.&lt;/p&gt;

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

&lt;p&gt;The subscribe step isn't a commitment to something abstract anymore. It's "do you want to keep the posts you just made?" That's a very different ask.&lt;/p&gt;

&lt;h2&gt;
  
  
  The implementation details
&lt;/h2&gt;

&lt;p&gt;A few things worth noting if you're building something similar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We run the sequence via a PostHog feature flag (&lt;code&gt;onboarding-v2&lt;/code&gt;, variant &lt;code&gt;value-first&lt;/code&gt;) — easy to roll back or adjust the split without a deploy&lt;/li&gt;
&lt;li&gt;The full-tab onboarding (not a popup) was intentional — popups close if you click away, which kills any flow that involves a file upload or multi-step form&lt;/li&gt;
&lt;li&gt;Preferences sync locally first (chrome.storage), then backend — so the extension is usable even if the API is temporarily unreachable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full breakdown of both sequences and the design decisions behind each step: &lt;a href="https://xreplyai.com/blog/xreplyai-onboarding-wizard?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=blog-2026-05-12" rel="noopener noreferrer"&gt;https://xreplyai.com/blog/xreplyai-onboarding-wizard?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=blog-2026-05-12&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solofounder</category>
      <category>indiehacker</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>Best AI Tools for Social Media in 2026 (Ranked and Reviewed)</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Mon, 11 May 2026 19:56:15 +0000</pubDate>
      <link>https://dev.to/johnbuilds/best-ai-tools-for-social-media-in-2026-ranked-and-reviewed-26e</link>
      <guid>https://dev.to/johnbuilds/best-ai-tools-for-social-media-in-2026-ranked-and-reviewed-26e</guid>
      <description>&lt;p&gt;AI has changed how people manage social media — but not all tools are doing it the same way. Some generate generic templates. Some are X-only. Some charge $99/mo for features you can get elsewhere for $19. This is an honest breakdown of the best AI social media tools in 2026, ranked by use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to look for in an AI social media tool
&lt;/h2&gt;

&lt;p&gt;Before comparing tools, it helps to know what actually matters. Most AI social media tools do one or more of these things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Draft content&lt;/strong&gt; — generate posts from a topic or prompt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule and publish&lt;/strong&gt; — queue posts across platforms on a calendar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate replies&lt;/strong&gt; — draft responses to comments and mentions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice matching&lt;/strong&gt; — learn your tone so content sounds like you, not a template&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics&lt;/strong&gt; — track what performs and why&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No single tool does all of these equally well. The right choice depends on which combination matters most for your situation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The best AI social media tools in 2026
&lt;/h2&gt;

&lt;h3&gt;
  
  
  #1 XreplyAI — Best for solo founders and creators who want AI that sounds like them
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; X, LinkedIn, Instagram, Threads, YouTube, Pinterest, Bluesky, TikTok&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Pro $49.99/mo · BYOK from $19/mo · 7-day free trial&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice profile trained on your own posts — drafts sound like you wrote them&lt;/li&gt;
&lt;li&gt;BYOK plan: pay your AI provider directly, no markup&lt;/li&gt;
&lt;li&gt;AI reply generation + scheduling in one tool&lt;/li&gt;
&lt;li&gt;8 platforms with per-platform formatting&lt;/li&gt;
&lt;li&gt;MCP integration for power users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Newer product — smaller community than legacy tools&lt;/li&gt;
&lt;li&gt;No native analytics dashboard yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Solo founders building in public, creators who post on multiple platforms, anyone tired of generic AI content&lt;/p&gt;




&lt;h3&gt;
  
  
  #2 Typefully — Best for X/Twitter and LinkedIn writers who want a clean writing experience
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; X, LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free plan available · Pro from $29/mo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best-in-class thread composer for X&lt;/li&gt;
&lt;li&gt;Clean, distraction-free writing UI&lt;/li&gt;
&lt;li&gt;AI writing assist built in&lt;/li&gt;
&lt;li&gt;Good LinkedIn scheduling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only 2 platforms (X and LinkedIn)&lt;/li&gt;
&lt;li&gt;No voice matching or training on your past posts&lt;/li&gt;
&lt;li&gt;No reply generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Writers and thought leaders focused on X and LinkedIn&lt;/p&gt;




&lt;h3&gt;
  
  
  #3 Hypefury — Best for X-focused creators who want automation and engagement tools
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; X (primary), Instagram&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; From $65/mo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-retweet, auto-plug, auto-DM features&lt;/li&gt;
&lt;li&gt;Engagement automation built in&lt;/li&gt;
&lt;li&gt;Strong X-native feature set&lt;/li&gt;
&lt;li&gt;Good inspiration feed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expensive at $65/mo&lt;/li&gt;
&lt;li&gt;Primarily X-focused — limited multi-platform support&lt;/li&gt;
&lt;li&gt;AI content is template-based, not voice-trained&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; X power users who want engagement automation&lt;/p&gt;




&lt;h3&gt;
  
  
  #4 Tweet Hunter — Best for X creators who want analytics and a content library
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; X&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; From $49/mo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large library of high-performing tweet examples&lt;/li&gt;
&lt;li&gt;Good tweet analytics&lt;/li&gt;
&lt;li&gt;AI tweet generation with examples&lt;/li&gt;
&lt;li&gt;Engagement features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;X-only&lt;/li&gt;
&lt;li&gt;Expensive for what you get vs newer alternatives&lt;/li&gt;
&lt;li&gt;No voice matching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; X creators focused on growth with data-driven content decisions&lt;/p&gt;




&lt;h3&gt;
  
  
  #5 Buffer — Best for teams and agencies who need simple multi-platform scheduling
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; X, LinkedIn, Instagram, Facebook, Pinterest, TikTok, YouTube, Mastodon&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free plan · Essentials from $6/mo per channel&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free plan available&lt;/li&gt;
&lt;li&gt;Excellent multi-platform scheduling&lt;/li&gt;
&lt;li&gt;Clean team collaboration tools&lt;/li&gt;
&lt;li&gt;AI assistant for post drafting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI is generic — no voice training&lt;/li&gt;
&lt;li&gt;No reply generation&lt;/li&gt;
&lt;li&gt;Per-channel pricing adds up for many platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams and agencies who need reliable scheduling across many platforms&lt;/p&gt;




&lt;h3&gt;
  
  
  #6 Taplio — Best for LinkedIn-only creators who want AI content and CRM features
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; LinkedIn only&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; From $49/mo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn-native AI content generation&lt;/li&gt;
&lt;li&gt;Built-in LinkedIn CRM and lead tracking&lt;/li&gt;
&lt;li&gt;Good content inspiration from viral posts&lt;/li&gt;
&lt;li&gt;Carousel and document post support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn only&lt;/li&gt;
&lt;li&gt;Expensive for a single-platform tool&lt;/li&gt;
&lt;li&gt;No voice matching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; LinkedIn-focused B2B founders and consultants&lt;/p&gt;




&lt;h2&gt;
  
  
  The BYOK difference
&lt;/h2&gt;

&lt;p&gt;One thing worth understanding before you pick a tool: most AI social media tools are charging you a markup on AI. You pay $49–99/mo, and part of that covers their Gemini or ChatGPT API costs. The tool bundles the AI in so you don't have to think about it — but you also can't see what you're actually paying for AI vs the software.&lt;/p&gt;

&lt;p&gt;XreplyAI is the only major tool with a BYOK (Bring Your Own Key) plan. You connect your own Gemini or ChatGPT API key, pay the AI provider directly, and the actual AI cost for most solo founders is $1–5/mo. The tool costs $19/mo. Total: roughly $20–24/mo vs $49–99/mo elsewhere.&lt;/p&gt;

&lt;p&gt;Whether that matters depends on how much you use AI generation. If you're generating a lot of content daily, the savings compound quickly. If you use the AI occasionally, the difference is smaller.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you want...&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI that sounds like you across 8 platforms&lt;/td&gt;
&lt;td&gt;XreplyAI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best X/Twitter thread writing experience&lt;/td&gt;
&lt;td&gt;Typefully&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X engagement automation (auto-RT, auto-DM)&lt;/td&gt;
&lt;td&gt;Hypefury&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data-driven X growth with content library&lt;/td&gt;
&lt;td&gt;Tweet Hunter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team scheduling across many platforms&lt;/td&gt;
&lt;td&gt;Buffer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LinkedIn-only content + CRM&lt;/td&gt;
&lt;td&gt;Taplio&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the best AI tool for social media in 2026?
&lt;/h3&gt;

&lt;p&gt;It depends on your use case. For solo founders and creators who want voice-matched content across multiple platforms, XreplyAI is the strongest option. For pure scheduling, Buffer. For LinkedIn, Taplio. For X-focused growth, Hypefury or Tweet Hunter.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is BYOK and why does it matter?
&lt;/h3&gt;

&lt;p&gt;BYOK (Bring Your Own Key) means you connect your own AI API key instead of paying the tool's markup. With BYOK, you pay the AI provider directly — often $1–5/mo in actual usage — instead of $49–99/mo to the tool. XreplyAI is the only major social media tool with a BYOK plan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can AI social media tools write in my voice?
&lt;/h3&gt;

&lt;p&gt;Most generate generic content from a prompt. XreplyAI trains on your own past posts to learn your tone, vocabulary, and sentence structure so drafts sound like you, not a template.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which AI social media tools work for multiple platforms?
&lt;/h3&gt;

&lt;p&gt;XreplyAI supports 8 platforms. Buffer supports most major platforms. Typefully covers X and LinkedIn. Hypefury is X-focused. Taplio is LinkedIn-only.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are there free AI social media tools?
&lt;/h3&gt;

&lt;p&gt;Most offer free trials rather than permanent free tiers. XreplyAI has a 7-day free trial and a BYOK plan from $19/mo. Buffer has a free plan with limited scheduling. Most others are paid-only with trials.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://xreplyai.com/blog/best-ai-tools-for-social-media" rel="noopener noreferrer"&gt;xreplyai.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>socialmedia</category>
      <category>ai</category>
      <category>productivity</category>
      <category>indiehacker</category>
    </item>
    <item>
      <title>Auto-DM new Twitter/X followers: how we built it, and the API wall blocking Instagram and LinkedIn</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Fri, 08 May 2026 14:53:26 +0000</pubDate>
      <link>https://dev.to/johnbuilds/auto-dm-new-twitterx-followers-how-we-built-it-and-the-api-wall-blocking-instagram-and-linkedin-5ajb</link>
      <guid>https://dev.to/johnbuilds/auto-dm-new-twitterx-followers-how-we-built-it-and-the-api-wall-blocking-instagram-and-linkedin-5ajb</guid>
      <description>&lt;p&gt;I shipped Auto DM replies in XreplyAI this week. Here's how it works under the hood, and why bringing it to Instagram and LinkedIn is a much harder problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The X implementation
&lt;/h2&gt;

&lt;p&gt;The core loop is straightforward: poll for new followers, diff against a snapshot, send DMs to net-new ones. The details that matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First run snapshots up to 1,000 existing followers so you don't blast your whole audience on day one&lt;/li&gt;
&lt;li&gt;Each subsequent cycle polls the 100 most recent followers and compares against the snapshot&lt;/li&gt;
&lt;li&gt;Rate-limited to 15 DMs per cycle — Twitter's DM rate limits are easy to hit if you're not careful&lt;/li&gt;
&lt;li&gt;Template supports a &lt;code&gt;{name}&lt;/code&gt; placeholder; everything else is plain text (500 char limit)&lt;/li&gt;
&lt;li&gt;All sends logged with status: pending / sent / failed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tricky edge: if a user has 50,000 followers, the snapshot only captures 1,000. Anyone outside that window who was already following before first run could theoretically get a DM. We flag this in the UI and let the user decide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Instagram and LinkedIn are a different problem
&lt;/h2&gt;

&lt;p&gt;Instagram DMs require &lt;code&gt;instagram_manage_messages&lt;/code&gt; — a permission that goes through manual Meta app review. The review checks your automation use case against their policy. Outcome isn't guaranteed, timeline is weeks, and the reviewer feedback loop is slow.&lt;/p&gt;

&lt;p&gt;LinkedIn is the real wall. Automated DMs to followers or post engagers requires the Community Management API. It's invite-only, no public application, and requires a LinkedIn partnership contact to even get into the queue. I've been trying to find the right entry point for weeks.&lt;/p&gt;

&lt;p&gt;If you've navigated either of these — especially LinkedIn's partnership process — I'd genuinely love to compare notes in the comments.&lt;/p&gt;

&lt;p&gt;X Auto DM is live now on Pro and BYOK plans: &lt;a href="https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-05-08" rel="noopener noreferrer"&gt;https://xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=feature-2026-05-08&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>solofounder</category>
    </item>
  </channel>
</rss>
