<?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: Jacek Dobrowolski</title>
    <description>The latest articles on DEV Community by Jacek Dobrowolski (@jacek_dobrowolski).</description>
    <link>https://dev.to/jacek_dobrowolski</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%2F3852378%2Fbed6b6b4-1201-4102-8652-77a463f63aec.png</url>
      <title>DEV Community: Jacek Dobrowolski</title>
      <link>https://dev.to/jacek_dobrowolski</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jacek_dobrowolski"/>
    <language>en</language>
    <item>
      <title>How we built an open-source CLI for social media automation (and what we learned)</title>
      <dc:creator>Jacek Dobrowolski</dc:creator>
      <pubDate>Wed, 01 Apr 2026 07:31:54 +0000</pubDate>
      <link>https://dev.to/jacek_dobrowolski/how-we-built-an-open-source-cli-for-social-media-automation-and-what-we-learned-chf</link>
      <guid>https://dev.to/jacek_dobrowolski/how-we-built-an-open-source-cli-for-social-media-automation-and-what-we-learned-chf</guid>
      <description>&lt;p&gt;Today we're launching &lt;a href="https://github.com/celeryhq/simplified-cli" rel="noopener noreferrer"&gt;Simplified CLI&lt;/a&gt; on Product Hunt — an open-source command-line tool for publishing to 10 social platforms, generating AI images, and pulling analytics, all from the terminal.&lt;/p&gt;

&lt;p&gt;I wanted to share the story behind it: the problem we saw, the technical decisions we made, and what surprised us along the way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimd4tf13rk7yu3me3sf2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimd4tf13rk7yu3me3sf2.png" alt=" " width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;We're the team behind &lt;a href="https://simplified.com" rel="noopener noreferrer"&gt;Simplified.com&lt;/a&gt; — a marketing platform used by thousands of teams. Over time we noticed a pattern: more and more of our power users were developers, AI engineers, and founders who wanted to integrate social media into their automated workflows.&lt;/p&gt;

&lt;p&gt;They'd ask things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Can I post from a GitHub Action after a release?"&lt;/li&gt;
&lt;li&gt;"Can my AI agent publish the content it generates?"&lt;/li&gt;
&lt;li&gt;"Can I batch-schedule 30 posts from a JSON file?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answer should have been obvious: build a CLI. But building a CLI that actually covers all 10 platforms properly is non-trivial — each platform has different media requirements, character limits, and API quirks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built
&lt;/h2&gt;

&lt;p&gt;Simplified CLI covers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Publishing:&lt;/strong&gt; Instagram (image, video, Reels, Stories), TikTok, LinkedIn (profiles + pages), YouTube, Facebook, Pinterest, Threads, Bluesky, Google Business Profile, and TikTok Business.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI image generation:&lt;/strong&gt; We integrated 20+ models directly into the CLI — Flux Realism, Flux Kontext Pro, OpenAI image models, Stability AI, Google Imagen 4, Recraft, Ideogram, and more. You can generate an image and publish it in a single pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analytics:&lt;/strong&gt; Pull engagement data, follower counts, reach, and more across platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON-native output:&lt;/strong&gt; Every command returns structured JSON. This was a deliberate design decision — it makes it trivial to chain commands, pipe output to other tools, and integrate into AI agent workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Claude Code plugin
&lt;/h2&gt;

&lt;p&gt;One of the most interesting integrations we built is the &lt;a href="https://simplified.readme.io/reference/installation-setup" rel="noopener noreferrer"&gt;Claude Code plugin&lt;/a&gt;. Developers using Claude Code can install it in two commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin marketplace add celeryhq/simplified-cli
/plugin &lt;span class="nb"&gt;install &lt;/span&gt;simplified-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This opens up a genuinely new workflow: an AI agent that can research a topic, generate an image, write a caption, and publish — all autonomously. We've used it internally for our own content workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical decisions we're happy about
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TypeScript + tsup:&lt;/strong&gt; We write TypeScript and bundle to a single CJS file via tsup. Fast builds, zero runtime overhead, and full type safety across the codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single unified API:&lt;/strong&gt; Rather than implementing per-platform adapters and dealing with 10 different auth flows, SDKs, and rate limits ourselves, we route everything through Simplified.com's REST API. Platform complexity is handled server-side — the CLI stays lean and focused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credential management:&lt;/strong&gt; Authentication uses a single API key via the &lt;code&gt;SIMPLIFIED_API_KEY&lt;/code&gt; environment variable — clean, scriptable, and CI/CD friendly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SIMPLIFIED_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_api_key_here
simplified accounts:list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Native fetch:&lt;/strong&gt; We require Node.js 22+, so we use the built-in &lt;code&gt;fetch&lt;/code&gt; — no external HTTP dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate limiting handled for you:&lt;/strong&gt; Because all requests go through our API, platform-specific rate limits are managed server-side. You won't get a 429 from accidentally looping over a publish command.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised us
&lt;/h2&gt;

&lt;p&gt;The biggest surprise was how much demand there was for this in the AI agent community specifically. We thought our primary users would be developers building automation scripts — and they are — but the use case we didn't fully anticipate was AI agents that need to interact with social media as part of a larger autonomous workflow.&lt;/p&gt;

&lt;p&gt;JSON-native output turned out to be the right call. Several users told us they chose Simplified CLI over alternatives specifically because of how easy it is to parse and chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Requires Node.js 22+. MIT licensed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/celeryhq/simplified-cli" rel="noopener noreferrer"&gt;https://github.com/celeryhq/simplified-cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NPM:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/simplified-cli" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/simplified-cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://simplified.readme.io/reference/introduction" rel="noopener noreferrer"&gt;https://simplified.readme.io/reference/introduction&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product Hunt:&lt;/strong&gt; &lt;a href="https://www.producthunt.com/products/simplified-design?launch=simplified-cli" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/simplified-design?launch=simplified-cli&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would love to hear what you think — especially if you're using it in an AI agent workflow or have feedback on the platform coverage.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>agents</category>
      <category>socialmedia</category>
    </item>
  </channel>
</rss>
