LinkedIn video post agent
Each explainer that went public on YouTube is uploaded to the ClawWorld AEO company page, posted as the page, with a post written from the video’s own facts.
A video that lives only on YouTube reaches the people who search YouTube. The buyers we write for, founders and growth leads at B2B startups, spend their working day on LinkedIn, where a natively uploaded video plays in the feed with its captions on. Putting each explainer on the company page by hand means downloading the file, writing a post, setting a title and a thumbnail, and remembering to do it on the day the video goes public.
Running on our own company since Oct 24, 2026 · LinkedIn · Risk: Medium. Everything on this page is public; there is nothing to sign in for.
Tasks and outputs
What it takes on
Pick the video
Reads the YouTube registry for public videos, drops the ones already on the page, takes the oldest, and checks that its Chrome opens the composer as the page.
Write and check
Writes the post from the video’s facts in a session that cannot post, then the text check and the content review read it: no link, every number sourced, the disclosure line, two to four hashtags.
Upload, post and record
Uploads final.mp4 in the page composer, sets the title and thumbnail, types the post, posts as the page, finds the new post by its first line, reads it back and records it.
Who it is for: Teams that publish explainer videos on YouTube and want each one on their LinkedIn company page as a native upload, posted as the page with a post of its own, without a person at the keyboard.
How we use it: We built it on 2026-10-24 for the ClawWorld AEO company page. The first post, A01 (AEO vs SEO for a startup), went out that day from the real scheduled wrapper with the founder watching. From 2026-10-26 it runs Monday to Friday at 12:30 PM US Eastern plus a random delay of up to 25 minutes: each run takes the oldest explainer that is public on YouTube and not yet on the page, one a run, so once the queue has caught up a video reaches the page around midday on the day it went public. Most days nothing is waiting and the run ends at once.
What a video post looks like
01The first line is the most surprising finding in the video, with its number, in at most 200 characters: it is all that shows before “see more”.
02Four to six short paragraphs, 150 to 230 words in all. Each opens with its fact, never with a signpost such as “This video”.
03Every number above 12 is in the video’s facts list or its YouTube description; the check refuses any other.
04No link of any kind, no domain name, no dash or hyphen, no call to action, no question to the reader at the end.
05The line “Narration is synthesized.” on its own, above two to four hashtags.
06Posted as the ClawWorld AEO page, never as a person: the script reads the composer’s actor line and refuses anything else.
The rules the agent’s output is written to, from the file named above. This site prints no example output; what the agent has shipped is in its run log.
Workflow
How a run goes, step by step
Pick a step to see what goes in, what comes out, and where a person is involved.
Step 1 of 6
Pick the oldest public video not yet on the page
On weekdays at 12:30 PM US Eastern plus up to 25 minutes, the wrapper brings its checkout to the latest main and reads the YouTube distribution agent’s registry. A video counts once it has been read back as live, or once its publish time has passed and YouTube’s oEmbed endpoint answers for it, which it does only for public videos. Videos already in this agent’s registry are dropped and the oldest by publish time is taken. Nothing waiting ends the run.
web/content/youtube-videos.json and web/content/linkedin-videos.json
One video folder, such as 2026-10-18-A01, or no run
Nobody.
Step 2 of 6
Check the browser and who it posts as
Starts the agent’s own Chrome if it is not running and opens the company page’s composer in a new tab. The composer’s first line names who the post would go out as; anything but the ClawWorld AEO page, or a sign-in page, stops the run before any session starts.
The agent’s Chrome on its debugging port
A go, or a stop that the watchdog emails about
A person signs in to LinkedIn in that Chrome once, and again if the sign-in expires.
Step 3 of 6
Write the post
A session starts with the video’s handoff, facts list and narration script copied into a scratch folder, reads the workflow’s rules and the shared voice guide, writes the post and runs the text check on it until it passes or has failed twice. The session can read the repository, write that one file and run that one check: no browser, no git, no way to post.
handoff.json, facts.md and SCRIPT.md of the video
An accepted post text
Nobody. A session that leaves no accepted text ends the run with no post.
Step 4 of 6
Check again, then the content review
The wrapper runs the text check on the accepted post, then the content review: the LinkedIn lint and a separate session that names the weakest sentences, answers five questions with quotes and gives a verdict. A pass goes on; a send-back holds the video, the wrapper commits only the review row, and the next run writes a new post.
The accepted post
A row in the review ledger, and a go or a hold
Nobody.
Step 5 of 6
Upload and post as the page
In a new tab the script opens the composer, intercepts the file picker and gives it final.mp4, sets the video title and the custom thumbnail in LinkedIn’s video editor, types the post and reads it back word for word, waits for Post to be enabled, and clicks it. It then reloads the page’s admin list until the post carrying the first line appears, for up to 90 seconds, and opens that post to read it back: by the page, the first line, the video.
final.mp4, thumbnail.jpg, the title and the accepted post
The post’s link, or a named stop
When a post cannot be confirmed after Post: a person checks the page and fixes the entry with the verify mode.
Step 6 of 6
Record and commit
The registry entry is written the moment Post is clicked, keyed by the video’s folder: the link, the date and time, the first line, whether the read-back passed, the thumbnail. If anything fails after the click, the entry says unknown, so no later run posts the video again. The wrapper commits exactly the registry and the review row and pushes; this log picks the entry up on the next deploy of the site.
The link and the read-back
One entry in web/content/linkedin-videos.json, and this record
When the push fails: the next run pushes it first.
Before you start
What you’ll need to bring
Company material
Explainer videos of your own that are public on YouTube, each with a facts list its post’s numbers can be traced to. Ours are the video creation agent’s, published by the YouTube distribution agent.
Source material
The YouTube registry (which video is public and since when) and the media folder with each video’s file, thumbnail, title and facts. The agent reads both and writes only its own registry.
Platform account
A LinkedIn account with the Content admin or Super admin role on your company page, signed in once in the agent’s own Chrome profile. No API access and no developer app.
Run environment
A machine that is on around midday on weekdays and can keep that Chrome open: Node.js with playwright-core, an agent runner for the writing step, and a scheduler. We use Claude Code under Windows Task Scheduler.
Run log
Recent runs, as they happened
The full log is public and read-only. It holds every run on record, including the ones that stopped to wait for a person.
View the full run logGuides and files
Set it up yourself
The setup guide, and the files the agent is built from. You run it in your own environment, with your own accounts.
- 01
Runtime
- Node.js 22 with playwright-core, which attaches to a Chrome that is already running and downloads no browser of its own.
- Claude Code for the writing session and the content review session. The upload itself runs no model.
- 02
Browser setup
- A Chrome profile of its own with remote debugging on a fixed port, signed in once by a person who is an admin of the company page. LinkedIn asked us to confirm the new device the first time.
- The script intercepts the file pickers, so no system dialog opens on the screen of whoever is at the machine.
- 03
Account setup
- A LinkedIn account with the Content admin or Super admin role on the company page. The post appears as the page; which admin posted it is shown only to the page’s other admins.
- Nothing else. Posting as a company page through LinkedIn’s API needs the Community Management API, which LinkedIn grants after an application review; this agent does not use it.
- 04
Configuration
- The page id and name, as constants at the top of the browser script; the identity check compares the composer’s actor line with that name.
- The YouTube distribution agent’s registry and the video creation agent’s media folder (the video, its thumbnail, its handoff with the title, its facts list), read and never written.
- The schedule, in the Task Scheduler registration written at the top of the wrapper.
- 05
First run
- Run the browser script on one video without --publish: it uploads the video into the composer, sets the title and thumbnail, types the post and stops with Post enabled. Look at the composer in that Chrome.
- Run the wrapper with -DryRun: the session writes, the check and the review read the post, and the composer is filled and closed again without posting.
- Post the first video with the real wrapper while you watch, open the post on the page, then register the schedule.
linkedin-video.md
Workflow · Markdown. The decisions and the rules the writing session writes the post to.
post-video.mjs
Script · Node. The queue, the identity check, the upload, the title and thumbnail, the post, the read-back and the registry entry. A dry run unless told to publish; never retries a post.
check-text.mjs
Script · Node. The text check: the LinkedIn lint, the length, no link, the disclosure line, the hashtags, every number traced to the facts list.
inspect.mjs
Script · Node. Prints a LinkedIn page’s or dialog’s text and controls, for maintaining the browser script and for repair sessions. Never clicks Post.
run-linkedin-video.ps1
Scheduler · PowerShell. The weekday run: the checkout, the pick, the browser check, the writing session, the check, the content review, the post, the self-repair loop and one commit of the registry and the review row.
linkedin-videos.json
Registry · JSON. One entry per video posted, keyed by the video’s folder. The file this log is built from.
Not packaged for public download yet. The guide on the left describes what each one does, step by step, so you can rebuild the setup; the Hosted and Fully managed tiers run them for you today.
Rather have us run it?
Hosted: your accounts in a cloud browser we run, and you review what goes out. Fully managed: we set the strategy and run the agents.
Good to know
Where it stops and asks for you
- No video is public on YouTube without a post on the page. The run ends before any session, with a line in the log. Nothing is posted.
- The agent’s Chrome is not signed in, or its composer would not post as the page. The run ends before any session and the watchdog emails a person to sign in.
- The session did not leave an accepted post. Nothing is posted; the video waits for the next run.
- The text check or the content review refused the post. Nothing is posted. The review row is committed on its own; the next run writes the post again.
- LinkedIn changed the composer and an element was not found. The run stops before Post and starts up to two repair sessions. A repair that passes the gate and a dry run is committed and the post step runs again; otherwise the watchdog emails a person.
- Post was clicked but the post could not be confirmed. The entry is recorded as unknown so the video is never posted twice; a person checks the page and fixes the entry with the verify mode.
Risk notice
What to watch for
- LinkedIn’s User Agreement does not allow bots or other unauthorized automated methods to create posts. The agent posts at most one video a day through the ordinary page composer, but the account signed in to its Chrome, a person’s own LinkedIn account, carries the risk of a restriction.
- No person reads the post or watches the video before it goes out. The checks catch a number without a source, a link or a missing disclosure; they do not judge whether the post is good. Every public video goes, including those the video reviewer scored 6 out of 10.
- The music in the videos comes from the YouTube Audio Library, whose terms are written for YouTube. The founder chose on 2026-10-24 to post the same cut on LinkedIn and accept that risk; a claim against a post would take it down.
- The narration is synthetic, and every post says so on a line of its own.
- A post the run could not confirm after Post is recorded as unknown and never retried; a person checks the page. On the first run the link was recorded wrong and corrected the same day with the script’s verify mode.
FAQ
Questions about this agent
Does the post show which person made it?
No. It goes out as the company page, and the script refuses to post when the composer names anyone else. LinkedIn shows the admin who posted it only to the page’s other admins.
Why a browser and not the API?
Posting a video as a company page through LinkedIn’s API needs the Community Management API, which LinkedIn grants after an application review. Until that is in place the agent uses the page composer the way a person does; the cost of that is the first risk below.
Why around midday?
The YouTube distribution agent makes a video public between 9:00 and 12:00 US Eastern, so 12:30 is after it. Other scheduled agents on the same machine start at 1:00 PM and later and share one lock with this one, and a run that waits 20 minutes for the lock gives up. The daily text post to the same page goes out at about 5 PM.
What happens when LinkedIn changes the composer?
The script stops before Post with a page-changed code and leaves the page’s text and controls behind. The wrapper starts up to two repair sessions that may change only how the script finds elements, checks each with a dry run that never posts, and commits a repair only when it passes. The identity check, the Post click and the registry write are locked against repair.
Would you rather we ran this agent for you? There is a managed service for that.
Talk to usOther agents