Edit and migrate Substack posts with a browser agent

Claude in Chrome handled 3 Substack tasks while I wasn't watching. Task: Claude in Chrome handled 3 Substack tasks while I wasn't watching. A manual edit, a full migration, and a Future Prisca Note. Here's exactly how it did each one. Earlier today, I gave Claude in Chrome three tasks on Substack. One was a manual edit to an existing post. One was a full blog post migration. One was inserting a Future Prisca Note into an older post. I pasted the migration prompts, and then I walked away. I did not hover over the screen. I did not watch Claude click through menus or scroll through editors. I went and did other things while it worked. When I came back, everything was done. All three tasks. Published. Live. Correct. And then I thought: I have no idea what actually happened. So I asked Claude in Chrome to document its own workflow. Every action, every decision, every failure and recovery. What you are reading now is the result of that request, translated into something a human being can actually follow. Why This Post Exists This is the post I have been promising. In the blog post where I asked Claude in Chrome to explain itself, I covered the general mechanics: what tools it has, how it sees through screenshots, how it acts through JavaScript, and how the thinking loop ties everything together. But I deliberately left out the task-by-task breakdowns. I said those were coming. In the blog post where I wrote about Igor Jarvis having two lives, I promised to walk you through exactly how Claude in Chrome handles the three specific migration scenarios that Igor is set up to manage: manual edits, new blog posts, and Future Prisca Notes. This is me delivering on both promises. Same day, actually. (I told you the momentum does not stop.) The Three Tasks Here is what Claude in Chrome handled while I was not watching: Task 1: Manual Edit. Insert two new paragraphs with 5 hyperlinks and 2 italic words into an already published Substack post, "My People, I Owe You an Explanation," without re-sending the post to email subscribers. Task 1: Manual Edit. Insert two new paragraphs with 5 hyperlinks and 2 italic words into an already published Substack post, "My People, I Owe You an Explanation," without re-sending the post to email subscribers. Task 2: Full Blog Post Migration. Take the blog post where Allen Kendrick reintroduced himself from my portfolio website, convert all the links, preserve every piece of formatting, insert subscribe buttons, and publish it as a brand new Substack post with email delivery turned on. Task 2: Full Blog Post Migration. Take the blog post where Allen Kendrick reintroduced himself from my portfolio website, convert all the links, preserve every piece of formatting, insert subscribe buttons, and publish it as a brand new Substack post with email delivery turned on. Task 3: Future Prisca Note. Insert a Future Prisca Note into an older Substack post, "Claude God Tip #11: Meet Allen Kendrick," linking readers to Allen's new reintroduction, without triggering an email to subscribers. Task 3: Future Prisca Note. Insert a Future Prisca Note into an older Substack post, "Claude God Tip #11: Meet Allen Kendrick," linking readers to Allen's new reintroduction, without triggering an email to subscribers. Each task is different. Each has its own challenges. But the same three principles run through all of them: screenshots are how Claude sees. JavaScript is how Claude acts. And ProseMirror's document tree is what makes every insertion accurate down to the exact character position. Let me show you what I mean. Task 1: The Manual Edit The Goal My post "My People, I Owe You an Explanation" was already live on Substack. I needed two new paragraphs added between specific existing paragraphs, complete with 5 hyperlinks and 2 italic words. And critically, updating a published post should never re-send it to subscribers. That would be confusing and spammy. Getting Into the Editor Claude started by navigating to the live post on Substack. It took a screenshot to confirm the page loaded, then looked for an edit button. Here is something interesting: there is no visible edit button on a published Substack post. It is hidden behind a three-dot menu. Claude tried to find the button through the page's accessibility tree first, found nothing, and then used coordinates from the screenshot to click the three-dot menu instead. This is the thinking loop I described in the previous post: look, try the smart approach, and when that does not work, fall back to the visual approach.; tools: Claude in Chrome. Human role: The original post does not say how a person stayed involved.; limitations: The source does not specify costs, latency, or failure rates for the agent's autonomous execution. Reliability depends on the agent's ability to correctly interpret UI changes and recover from errors without human intervention. The workflow assumes stable access to the Substack editor and correct prompt engineering for migration tasks..

Tools

Claude in Chrome

Published on Agent Work Atlas:

Overview

Claude in Chrome handled 3 Substack tasks while I wasn't watching.

Workflow

Claude in Chrome handled 3 Substack tasks while I wasn't watching. A manual edit, a full migration, and a Future Prisca Note. Here's exactly how it did each one. Earlier today, I gave Claude in Chrome three tasks on Substack. One was a manual edit to an existing post. One was a full blog post migration. One was inserting a Future Prisca Note into an older post. I pasted the migration prompts, and then I walked away. I did not hover over the screen. I did not watch Claude click through menus or scroll through editors. I went and did other things while it worked. When I came back, everything was done. All three tasks. Published. Live. Correct. And then I thought: I have no idea what actually happened. So I asked Claude in Chrome to document its own workflow. Every action, every decision, every failure and recovery. What you are reading now is the result of that request, translated into something a human being can actually follow. Why This Post Exists This is the post I have been promising. In the blog post where I asked Claude in Chrome to explain itself, I covered the general mechanics: what tools it has, how it sees through screenshots, how it acts through JavaScript, and how the thinking loop ties everything together. But I deliberately left out the task-by-task breakdowns. I said those were coming. In the blog post where I wrote about Igor Jarvis having two lives, I promised to walk you through exactly how Claude in Chrome handles the three specific migration scenarios that Igor is set up to manage: manual edits, new blog posts, and Future Prisca Notes. This is me delivering on both promises. Same day, actually. (I told you the momentum does not stop.) The Three Tasks Here is what Claude in Chrome handled while I was not watching: Task 1: Manual Edit. Insert two new paragraphs with 5 hyperlinks and 2 italic words into an already published Substack post, "My People, I Owe You an Explanation," without re-sending the post to email subscribers. Task 1: Manual Edit. Insert two new paragraphs with 5 hyperlinks and 2 italic words into an already published Substack post, "My People, I Owe You an Explanation," without re-sending the post to email subscribers. Task 2: Full Blog Post Migration. Take the blog post where Allen Kendrick reintroduced himself from my portfolio website, convert all the links, preserve every piece of formatting, insert subscribe buttons, and publish it as a brand new Substack post with email delivery turned on. Task 2: Full Blog Post Migration. Take the blog post where Allen Kendrick reintroduced himself from my portfolio website, convert all the links, preserve every piece of formatting, insert subscribe buttons, and publish it as a brand new Substack post with email delivery turned on. Task 3: Future Prisca Note. Insert a Future Prisca Note into an older Substack post, "Claude God Tip #11: Meet Allen Kendrick," linking readers to Allen's new reintroduction, without triggering an email to subscribers. Task 3: Future Prisca Note. Insert a Future Prisca Note into an older Substack post, "Claude God Tip #11: Meet Allen Kendrick," linking readers to Allen's new reintroduction, without triggering an email to subscribers. Each task is different. Each has its own challenges. But the same three principles run through all of them: screenshots are how Claude sees. JavaScript is how Claude acts. And ProseMirror's document tree is what makes every insertion accurate down to the exact character position. Let me show you what I mean. Task 1: The Manual Edit The Goal My post "My People, I Owe You an Explanation" was already live on Substack. I needed two new paragraphs added between specific existing paragraphs, complete with 5 hyperlinks and 2 italic words. And critically, updating a published post should never re-send it to subscribers. That would be confusing and spammy. Getting Into the Editor Claude started by navigating to the live post on Substack. It took a screenshot to confirm the page loaded, then looked for an edit button. Here is something interesting: there is no visible edit button on a published Substack post. It is hidden behind a three-dot menu. Claude tried to find the button through the page's accessibility tree first, found nothing, and then used coordinates from the screenshot to click the three-dot menu instead. This is the thinking loop I described in the previous post: look, try the smart approach, and when that does not work, fall back to the visual approach.

Reported result

The author reports that all three tasks were completed successfully, with posts published, live, and correct. However, no quantitative metrics or independent verification are provided. The outcome relies entirely on the author's retrospective review of the agent's self-documented workflow after the fact.

Human role

The original post does not say how a person stayed involved.

Limitations

The source does not specify costs, latency, or failure rates for the agent's autonomous execution. Reliability depends on the agent's ability to correctly interpret UI changes and recover from errors without human intervention. The workflow assumes stable access to the Substack editor and correct prompt engineering for migration tasks.

Try it

Act as a browser automation agent using Claude in Chrome. I will provide three specific Substack tasks: 1) Edit an existing post [replaceable: post URL] to insert [replaceable: content details] without re-sending emails. 2) Migrate a blog post from [replaceable: source URL] to Substack, converting links and preserving formatting. 3) Insert a note into [replaceable: older post URL] linking to [replaceable: new content]. Steps: 1. Navigate to the target Substack post. 2. Use screenshots to verify page load and locate the edit menu. 3. Use JavaScript to access the ProseMirror document tree for precise content insertion. 4. Verify changes via screenshot before saving. 5. For updates, ensure 'Send via email' is unchecked. For new posts, confirm email delivery settings. 6. Stop and ask for human confirmation before clicking 'Publish' or 'Update' if any unexpected UI elements appear. Deliverables: A summary of actions taken, screenshots of the final state, and confirmation of email settings. Do not proceed if the editor structure is unrecognized.

Original source

Source reports are not independently verified. Publication date is the catalog publication date, not the original article date.

More cases · Content & creative