DEV Community

Caleb Rhodes
Caleb Rhodes

Posted on

How to Turn a Changelog into LinkedIn Posts with Claude Code

Claude Code can work directly with repository context, which makes it useful for turning a structured changelog into LinkedIn drafts. The task is more involved than "summarize CHANGELOG.md and post." Separate public facts from internal notes, choose one reader problem for each post, and request both a draft and a source map. A person can then supply the lesson behind the change and approve the exact copy. Once that approval exists, Groniz handles the LinkedIn connection, platform-specific settings, scheduling, and delivery. Claude Code supports Groniz through Skill, CLI, or MCP, so this can happen in one working session without giving a draft automatic permission to go public.

How the changelog moves through review

CHANGELOG.md + linked documentation
  → eligible update list
  → one audience angle per update
  → LinkedIn draft and fact map
  → human revision and approval
  → runtime settings discovery
  → Groniz schedule request
  → delivery verification and native measurement
Enter fullscreen mode Exit fullscreen mode

This workflow produces a small series when the changelog contains distinct reader outcomes. It does not force every patch into a post.

Prerequisites

Prepare:

  • Claude Code with access to the repository and its guidance files;
  • a reviewed CHANGELOG.md and links to public documentation;
  • a Groniz account with a connected LinkedIn profile or Page;
  • one supported Groniz route: Skill, CLI, or MCP;
  • approved image files, if needed; and
  • a named reviewer who can authorize both copy and publication details.

For the broader agent setup, see automating social publishing with Claude Code. For channel-level review principles, see LinkedIn posting with AI agents.

If you choose MCP, use Claude Code's current argument order:

claude mcp add --transport http --header "Authorization: Bearer YOUR_API_KEY" groniz https://mcp.groniz.com/mcp
Enter fullscreen mode Exit fullscreen mode

The Skill and CLI are also supported. Select one route for the workflow so reviewers know which permissions and confirmation prompts to expect.

Why a changelog is useful but insufficient

A changelog is good evidence of what changed. It often says little about why the change matters. Entries such as "added CSV export" or "fixed webhook retries" leave out the user situation, trade-off, and implementation lesson that could make a LinkedIn post useful.

LinkedIn recommends giving AI specific input, treating the output as a first draft, and reviewing it with your own expertise and personal knowledge. That maps naturally to changelog work: Claude Code extracts and organizes; the maintainer supplies the reason, consequence, and lived detail.

Do not publish a feature list unless the list itself helps the audience. A single update might support a product explanation or an engineering lesson. It could also become a customer workflow note, but each angle needs different evidence.

Prepare a public-safe source packet

Ask Claude Code to inspect only files you name. Repository access is useful precisely because you can set boundaries. A durable AGENTS.md can encode rules such as public-source-only drafting, required fact maps, and a mandatory publication pause.

Create a packet like this:

# LinkedIn changelog packet

Release: v2.4.0
Public date: 2026-07-18
Audience: API customers who manage failed jobs

Eligible entries:
- Added retry-status visibility in the dashboard.
- Added a documented endpoint for retry history.

Reader problem:
- Operators previously had to correlate separate logs.

Maintainer note:
- We learned that showing the latest error without the retry sequence hid the useful story.

Public sources:
- CHANGELOG.md#240
- docs/retry-history.md

Exclude:
- Internal incident IDs
- Customer names
- Unreleased queue changes
Enter fullscreen mode Exit fullscreen mode

If an entry lacks a reader problem or public proof, keep it in the changelog. It does not need to become content.

Reusable Claude Code prompt

Read CHANGELOG.md and the public files listed in linkedin-changelog-packet.md.
Do not use other repository files as factual sources.

Select at most three changelog entries that teach distinct lessons. For each:
1. Name the audience and its problem.
2. Choose one angle: product workflow, engineering lesson, or operator lesson.
3. Draft one LinkedIn post with a concrete opening, verified context, the
   maintainer's stated insight, and an understated close.
4. Return a table mapping every factual claim to a source line or heading.
5. Mark any missing evidence [VERIFY].

Avoid release-note dumping, invented customer reactions, inflated claims, and
generic engagement questions. Do not schedule or publish. Save drafts under
content/linkedin/ for human review.
Enter fullscreen mode Exit fullscreen mode

This prompt makes selection part of the job. A changelog with twelve entries may contain only two that deserve posts. The other ten can remain documentation.

Turn release facts into a LinkedIn-native post

Evaluate each draft against four elements:

  1. A reader situation: Who encountered the problem?
  2. A verified change: What is now different?
  3. A practitioner insight: What did the team learn or choose?
  4. A useful close: What should the reader understand, try, or discuss?

The third element needs human input. Claude Code can surface a maintainer note, but the maintainer should rewrite it to reflect the decision they actually made. Remove internal vocabulary and keep only the technical detail that supports the lesson.

LinkedIn supports profiles and Pages through Groniz. Confirm whether the post speaks as an individual or an organization before editing pronouns, attribution, and call to action.

Use separate copy and publication approvals

Before a write action, run this checklist:

  • Every claim maps to the changelog packet or approved public documentation.
  • The release is public and the date is correct.
  • The author's lesson is written or explicitly confirmed by that author.
  • No internal issue, customer, security, or roadmap detail appears.
  • The final copy fits the selected profile or Page voice.
  • The link and media are approved.
  • The exact integration, date, time, and timezone are visible.
  • A reviewer approved the words first, then separately approved scheduling them.

Saving a draft to the repository is easy to undo. Sending it to a public account is not, which is why the permission boundary belongs at the write action.

Discover LinkedIn settings and schedule through Groniz

Authenticate and resolve the live connection immediately before delivery:

groniz whoami
groniz integrations:list
groniz integrations:settings LINKEDIN_INTEGRATION_ID
Enter fullscreen mode Exit fullscreen mode

The settings response defines required fields, the current length limit, and available integration tools. Invoke a dynamic tool only when the live response exposes it. Capabilities differ between providers and connection kinds, so a payload copied from another channel is not reliable.

For approved media, upload first:

groniz upload ./content/linkedin/approved-v240.png
Enter fullscreen mode Exit fullscreen mode

Copy only the returned .path into the scheduling request. Then give Claude Code a bounded delivery instruction:

Using the live settings for LINKEDIN_INTEGRATION_ID, construct a schedule
request for the approved post file and 2026-08-07T14:30:00Z. If media is
present, use only its uploaded .path. Display the resolved payload, target,
and time. Wait for a separate "approve publication" message before calling
the write tool.
Enter fullscreen mode Exit fullscreen mode

Once the request is resolved, the corresponding CLI command is:

groniz posts:create \
  -c "APPROVED_LINKEDIN_CONTENT" \
  -m "[returned-groniz-media-.path]" \
  -s "2026-08-07T14:30:00Z" \
  -t schedule \
  -i "LINKEDIN_INTEGRATION_ID" \
  --settings '[required-settings-json]'
Enter fullscreen mode Exit fullscreen mode

Replace the settings placeholder with all required values from the live schema, and use only the .path returned by the upload. Show the final command before asking for publication approval. This article does not claim a live end-to-end test for LinkedIn; the live schema wins.

Verify delivery and recover safely

Record the returned post ID, target integration, scheduled time, status, and platform URL when available. Then inspect the scheduled-post state. If the request times out or returns an ambiguous result, check the list before retrying; a blind retry can create a duplicate.

When a request fails:

  • refresh authentication for identity or permission errors;
  • rerun integration discovery if the destination is unclear;
  • reload settings for schema or length errors;
  • re-upload rejected media and use the new returned .path;
  • revise the post rather than truncating it mechanically; and
  • return to publication review if the copy, media, destination, or time changes.

Measure the series on LinkedIn

LinkedIn's native analytics may expose impressions or reach, clicks, reactions, comments, and reposts depending on the surface. Page post analytics provide the authoritative definitions for Page reporting. Track the angle, opening, source entry, author edits, and chosen result window alongside those metrics.

Ask whether the framing helped the intended reader and what the next source packet should emphasize. "Did the changelog post go viral?" tells you very little about the quality of the source or the lesson. Compare engineering lessons with product workflows only after noting that they have different goals.

To connect Claude Code to the delivery layer after your review process is ready, use the Groniz Claude Code setup.

Top comments (0)