Files
derez.ai/blog/posts/automating-linkedin-content-with-ai-agent.html
T

125 lines
10 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/automating-linkedin-content-with-ai-agent.html" />
<title>How I Automated My LinkedIn Content Publishing with an AI Agent — Derez.ai Blog</title>
<meta name="description" content="I automated derez.ai's entire LinkedIn publishing pipeline with Hermes Agent. From researching topics and writing posts to publishing on the company page and cross-posting to groups — my AI agent does it all. Here's how it works." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/automating-linkedin-content-with-ai-agent.html" />
<meta property="og:title" content="How I Automated My LinkedIn Content Publishing with an AI Agent" />
<meta property="og:description" content="I automated derez.ai's entire LinkedIn publishing pipeline with Hermes Agent. From researching topics and writing posts to publishing on the company page and cross-posting to groups — my AI agent does it all." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="How I Automated My LinkedIn Content Publishing with an AI Agent" />
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.area-tag { display: inline-block; background: #00f5ff; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
h3 { font-size: 1.05rem; font-weight: 600; margin: 24px 0 8px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
li { margin-bottom: 6px; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
.pro-tip strong { color: #00f5ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>How I Automated My LinkedIn Content Publishing with an AI Agent</h1>
<div class="meta">
<span>July 10, 2026</span>
<span class="area-tag">How-to</span>
<span class="chip-tag">hermes</span>
</div>
<p>I post on LinkedIn for derez.ai multiple times a week. Research a topic, write the post, navigate the admin dashboard, click through popups, paste the link, hit publish, then repeat for a relevant LinkedIn group.</p>
<p>That's about 20 minutes per post — if everything goes smoothly. And I was doing it manually. Which felt ridiculous, given I run a company that builds AI agents.</p>
<p>So I automated it. All of it.</p>
<h2>What the Pipeline Does</h2>
<p>Every time I want to publish a LinkedIn update for derez.ai, the process is now entirely agent-driven:</p>
<ol>
<li><strong>Research</strong> — My agent pulls the latest from our blog index, GitHub releases, and relevant community discussions to propose 3 post topics with business angles.</li>
<li><strong>Create</strong> — A blog post is written and published on derez.ai in HTML format, added to the blog index, and git-committed.</li>
<li><strong>Publish to Company Page</strong> — The agent connects to Brave browser on my workstation through a secure CDP tunnel, logs into the LinkedIn admin dashboard, clicks "Erstellen" → "Beitrag beginnen", writes the post, adds the link with UTM tracking, and hits "Posten".</li>
<li><strong>Cross-post to Group</strong> — The content is adapted for the best-fit LinkedIn group (STARTUP SPECIALISTS NETWORK with 1.2M members, ERP Community, etc.) and posted as a separate, audience-tailored update.</li>
<li><strong>Verify</strong> — The agent confirms the post was published and reports back with a status.</li>
</ol>
<h2>The Technical Setup</h2>
<p>Here's the stack that makes it work:</p>
<ul>
<li><strong>Hermes Agent</strong> — Skilled with the <code>linkedin-company-post</code> and <code>linkedin-group-posting</code> workflows. It knows exactly which buttons to click, what the editor looks like, and how to verify a successful post.</li>
<li><strong>Chrome DevTools Protocol over SSH reverse tunnel</strong> — Brave runs on my workstation. A persistent reverse tunnel exposes its CDP endpoint at <code>127.0.0.1:9222</code> on my server. The agent sends WebSocket commands (navigate, click, type, evaluate JS) to drive the browser remotely.</li>
<li><strong>UTM-aware linking</strong> — Every link to derez.ai automatically gets <code>?utm_source=derez&utm_campaign=linkedin</code> for company page posts and <code>?utm_source=derez&utm_campaign=groups</code> for group posts. No manual tracking.</li>
<li><strong>German UI, English content</strong> — My LinkedIn is in German. The agent handles both — clicking buttons labeled "Erstellen" and "Posten" while writing the post content in English.</li>
</ul>
<h2>Why This Matters for Business</h2>
<p>The biggest bottleneck in content marketing isn't ideas — it's execution. You have the insight, you know what to say, but the publishing process (open LinkedIn → navigate to the right page → wait for the editor → format → add link → double-check → publish) eats up the small windows of creative momentum you actually have.</p>
<p>Automating the publishing workflow means:</p>
<ul>
<li>→ I post more consistently — no more "I'll do it later" (spoiler: later never comes)</li>
<li>→ Every post gets the right UTM tracking — no more "oops, I forgot the link"</li>
<li>→ Cross-posting to groups happens automatically — I was skipping this entirely because it was too much friction</li>
<li>→ The entire cycle from idea to published post takes minutes, not 20-30 minutes per platform</li>
</ul>
<div class="pro-tip">
<strong>Pro tip:</strong> This pipeline works because Hermes Agent isn't just a chat interface — it's an automation platform with skills, CDP browser control, and cron jobs. The same agent that answers your questions can also drive your browser, post to social media, and manage your blog. That's the power of an agent that can <em>execute</em>, not just talk.
</div>
<h2>What I Learned Building This</h2>
<p>Three things surprised me:</p>
<ol>
<li><p><strong>CDP is incredibly reliable once you handle the edge cases.</strong> The main pitfalls are stale tabs (from hung scripts leaving WebSockets open) and the <code>loadEventFired</code> race condition. Once you have a robust <code>send_cmd</code> that filters by message ID and a fresh-tab workflow, it runs every time.</p></li>
<li><p><strong>LinkedIn's UI is deceptively nested.</strong> The "Beitrag beginnen" menu item isn't a button — it's an <code>&lt;a&gt;</code> tag nested 5 levels deep inside a popup menu. Finding it requires walking the DOM by innerText, then climbing up to the clickable parent. My agent has a universal element walker for this exact reason.</p></li>
<li><p><strong>The editor matters more than the button.</strong> LinkedIn uses a Quill.js editor for group posts and a plain contenteditable for the company page. Each needs different DOM handling. Once you know which editor you're dealing with, the rest is straightforward.</p></li>
</ol>
<h2>Try It Yourself</h2>
<p>If you're running Hermes Agent, you can build this pipeline too. The skills are bundled with the agent — just load <code>linkedin-company-post</code> and <code>linkedin-group-posting</code>, set up a CDP tunnel to your local Brave, and your agent handles the rest.</p>
<p>If you're not running Hermes yet, you can be live in under 10 minutes. SSH access, managed dashboard, full-disk backups — everything included.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Work with your AI agent in 10 minutes. Full-disk backups, SSH access, managed dashboard included.
</p>
</div>
</body>
</html>