inkslot
GitHub

Write in Markdown.Post on time.

Your LinkedIn posts live as Markdown files in your own repo. Push, and a Cloudflare Worker on your own account publishes each one at its minute. Free, open source, and nobody else holds your token.

Deploy to Cloudflare

MIT licensed. Runs on Cloudflare's free plan.

posts/texts/2026-11-12-launch.md

Pushed Sunday, 21:40

Watch

From a file to your profile

The whole trip in one short film: the Markdown file, the push, the minute it goes out.

Try it

Edit the file, watch the post

A post is a Markdown file. Change its text, its date or its status: the post and its schedule follow, exactly as the Worker will send them.

scheduled

Scheduled for Thu 12 Nov, 09:00

First commentThe repo is in the comments.

225 / 3,000 characters

How it works

Write, push, posted

Your push starts everything. After that nothing runs on your machine: Cloudflare does the rest, on your account.

  1. Write

    A post is a Markdown file with a small header: its date, its time, its status.

    2026-11-12-launch.md
  2. Push

    Each push deploys your Worker and syncs posts to D1 and media to KV. Only what changed is sent.

    zsh · ~/inkslot
  3. Posted

    Every minute, the Worker publishes the earliest post whose time has come, then its first comment.

    zsh · ~
Read how it's built

Never twice

Once, or not at all

Posting twice on your profile is worse than posting late. Every rule here leans toward safety.

9:009:059:109:02posted

LinkedIn fails at 9:00 and 9:01. The 9:02 try goes through, and the post is posted.

  • failed try
  • posted
  • failed
  • The 10-minute window

Yours

Your account, your token, your files

There is no inkslot server. Everything runs on accounts you already own, and you can read every line that touches your token.

  • Your token

    A secret on your own Worker. Nobody else holds it, and no third-party scheduler ever sees it.

  • Your files

    Posts are plain files in your private repo. Read them, diff them, version them like code.

  • Images and videos

    One image or one video per post, up to 25 MB in Workers KV. Bigger videos can go to R2.

  • A first comment

    Links go in the first comment, added right after the post goes out.

  • A test mode

    Run a first post end to end without reaching LinkedIn, then switch it off.

MIT licensed. Fork it, read it, change it.

Install

Install it your way

Everything lands on your own Cloudflare account. Pick one.

One click

About 3 minutes

Cloudflare copies the project into your GitHub, creates the database and the media store, and deploys. The guide gets your four values ready first.

Open the deploy guide

With your agent

Paste the prompt into your coding agent, in a clone of your private copy. It sets everything up; you keep the LinkedIn clicks and your token.

Where the prompt goes, for example

  • Claude Code
  • Cursor
  • Copilot
  • Windsurf
  • Cline
  • OpenCode
  • and any coding agent
Read the prompt first

By hand

Make a private copy with Use this template, clone it, then let the setup script create everything.

zsh · ~/inkslot
Read the install guide

FAQ

Before you install

Is it really free?

Yes. Cloudflare's free plan for Workers, D1 and KV covers it, and so does GitHub's. You'd only pay past their free limits, which a few posts a week don't reach.

Is it really free?

Yes. Cloudflare's free plan for Workers, D1 and KV covers it, and so does GitHub's. You'd only pay past their free limits, which a few posts a week don't reach.

Do I need a credit card?

No. Only the optional R2 bucket, for videos over 25 MB, needs a card on your Cloudflare account.

How often do I renew the token?

Every 60 days: LinkedIn doesn't let it refresh automatically. Renewing takes about 2 minutes, and /status warns you 7 days before it expires.

Can it post as my company page?

No. It posts on your personal profile only.

How precise is the timing?

To the minute. A 9:00 post goes out during the 9:00 minute, and at most one post goes out per minute.

What if LinkedIn is down?

The Worker tries again every minute for 10 minutes, then marks the post failed with the reason. If LinkedIn's answer is unclear after sending, it marks the post unknown and stops, rather than risk posting twice.

Is it affiliated with LinkedIn?

No. It's an independent open-source project that uses LinkedIn's official API.

What was v1?

A Python script run by cron on your own machine. It still lives on the v1 branch if you'd rather keep everything local.

The docs have the rest

Free and open source

Your posts,scheduled tonight.

One click or one prompt, on your own Cloudflare account. Nothing to pay, nothing to keep running.