AI can upload content straight into your WordPress site for you, and IvI SEO used Claude to put 162 pages live on a UK hire company's website this way. It started with 72 category and location pages, then 90 vehicle pages later on. Most people don't know this is even possible. And the secret isn't a clever prompt. It's doing one upload by hand first and writing every step down.
Can AI upload content to WordPress?
Yes, AI tools like Claude and ChatGPT can upload content to a WordPress site for you, and there are two ways to do it. The first is the WordPress REST API: a back door that lets software add and edit content on your site, unlocked with an application password. The second is browser control, where the AI clicks through your WordPress dashboard in a browser, just like you would. At IvI SEO, I use both: the API for bulk content, and browser control for the settings the API can't reach.
Here's what Claude actually did on that hire company job:
- Created the new category pages.
- Pushed the intro and FAQ content for every page through the API.
- Pasted in the SEO title and meta description for each one.
- Added every page to the site's menu, in the right place.
- Wrote its own upload script, including a checker that compares every live page, word for word, against the approved copy.
I didn't write that script. Claude did. You don't need to be a developer for any of this.
The one bit I did by hand at first was picking which content block went at the top and bottom of each page, from a dropdown. Later on, we worked out Claude could do that too, using browser control.
So why isn't everyone doing this? Mostly because they don't know they can. Everyone's using AI to write content. Hardly anyone's asking it to put the content on the site as well.
How do you get AI to understand exactly what to upload?
To get AI to upload the right thing, do the upload once by hand and write down every step and every field before you ask it to do anything. IvI SEO calls this backwards engineering: start from the finished page and work back through each box you filled in, what goes in it and what to leave alone. That written version becomes your brief. The less the AI has to guess, the less can go wrong on a live website.
There are two reasons this matters.
First, it saves you rounds. You know those chats where it feels like you're fighting the AI to get what you want? That's usually because it didn't have the full picture from the start. Give it everything up front and it gets it right far sooner.
Second, and more important, guessing is how things go badly wrong on a client's site. Most upload disasters come down to the AI not properly understanding the job.
Here's a real example of why this matters. When I logged into the hire company's WordPress to add their new categories, there were three different sections called "Categories":
- One belonging to the theme. The right one.
- One for blog posts. Not what we wanted.
- One for WooCommerce, the online shop plugin. The client told me on our first call they don't use it.
If I'd just said "upload the categories", the AI would have had to guess which one I meant. Writing it down took the guess away.
Then I went through every field on the category screen and wrote down what goes in it:
- Name: the page's main heading. Must include the main keyword.
- Slug (the end of the web address): include the keyword.
- Parent: only if the category sits under another one.
- Image: skip it. The client was adding these.
- Short description: leave it empty. It doesn't change what shows on the page.
- Top content block: the intro, which sits above the products.
- Bottom content block: the content below the products, including the FAQs.
- SEO title and meta description (in the Yoast SEO plugin, which sets what Google shows): keyword in both, title 60 characters max, dropping the brand name if there isn't room, and a short call to action at the end of the description.
- Menu: where each category sits in the site's navigation.
Do you need a clever prompt?
No. People love talking about "prompt engineering". Honestly? You don't need it. You need a brief: what you want, written down in plain words. It can ramble. It just has to be clear.
Here's a starter brief based on that job. Swap in your own site and fields:
I want you to upload 72 new category pages to [your site] using the WordPress REST API.
I've done one by hand first, so here's exactly how it works on this site:
- Categories go in [the right section]. Not Posts > Categories, and not Products > Categories (that's WooCommerce, which this site doesn't use).
- Name: this is the page's main heading. It must include the category's main keyword.
- Slug: include the keyword.
- Parent: set it if the sheet gives one.
- Image: skip it.
- Short description: leave it empty.
- Top content block: the intro, above the products. Bottom content block: the content below the products, including FAQs.
- Yoast SEO title: keyword in, 60 characters max, drop the brand if there isn't room. Meta description: keyword in, genuinely helpful, short call to action at the end.
- Menu: add each category under its parent, following the Menu column in the sheet.
Everything you need is in upload-sheet.csv in this folder. The application password is saved in [file location]. Use it, but never show it back to me.
Keep me updated. If you're unsure, ask me. If you're stuck, ask me. If there's a better way, tell me before you change anything.
What should your AI upload sheet include?
An AI upload sheet needs one row per page and one column for every field you wrote down, plus a column that points to each page's content file. On IvI SEO's hire company upload, that meant columns for the menu section, page name, page type, new or existing, web address, which content goes top and bottom, SEO title, meta description and the content file's name. It also had a tick-box column for each step. You don't paste whole articles into the sheet. Name the file, keep it in the same folder, and the AI finds it.
This is roughly what one row looked like, with the client's details taken out:
| Column | Example |
|---|---|
| Menu section | Plant & Excavation |
| Page name (main heading) | Excavator & Digger Hire |
| Type | Sub-category |
| Status | New |
| Web address | /excavator-digger-hire/ |
| Top block | Excavator digger hire: intro |
| Bottom block | Excavator digger hire: FAQs |
| SEO title | Excavator & Digger Hire | [Brand] |
| Meta description | [keyword, helpful line, short call to action] |
| Content file | Excavator & Digger Hire (Category).docx |
| 1. Page created | Yes |
| 2. Content pushed | Yes |
| 3. Top block set | Yes |
| 4. Bottom block set | Yes |
| 5. SEO title and description set | Yes |
| 6. Added to menu | Yes |
Those six tick-box columns are the bit I'd steal. With 162 pages on the go, I could see exactly where every single one was up to.
The sheet also had two extra tabs:
- How to upload: the written process from above, so the AI (and me, a month later) can check it.
- Menu structure: the full menu, parent by parent, so the AI knows where each new page belongs.
Don't want to build the sheet yourself? Give the AI your written process and ask it to make the sheet. Or build it yourself and ask what's missing.
What guardrails should you give AI before it uploads content to your site?
Before AI uploads anything, tell it to keep you updated and to stop and ask you whenever it's unsure, stuck, or thinks there's a better way. IvI SEO adds those rules to every job, whatever the task. In my experience, Claude is already cautious on a live site and will ask "is this okay?" before anything risky. The rules make it loop you in even more, which matters when it has the keys to a client's website.
These are the ones I use:
- Keep me up to date. You see what it's doing as it does it, not after.
- If you're unsure, ask me. So it doesn't guess.
- If you're stuck, ask me. So it doesn't try something creative to get round a blocker.
- If we need to change how we're doing this, or there's a better way, tell me first. Sometimes it finds a better route. Sometimes it's blocked and wants to switch. Either way, you decide.
It might feel like overkill. It isn't. It takes the anxiety out of it, because you know it isn't just ripping through your site blind.
Get it to check its own work
The other guardrail is checking. The upload script Claude wrote for that job had a verify step: it loaded every live page and checked the content, word for word, against the approved copy. It also ran a full audit of the content and SEO titles, looking for anything that had landed on the wrong page. With 162 pages, you're not checking that by eye.
Ask for this up front: "When you're done, check every page against the sheet and tell me what doesn't match."
Should you use the REST API or browser control to upload to WordPress?
Use the WordPress REST API for bulk content and browser control for anything the API can't reach. The API is fast and repeatable, but it can only touch what WordPress and your plugins open up to it, and it hands the AI a lot of power. Browser control is slower, but you can watch every click, and it reaches screens the API can't, like theme dropdowns and SEO plugin fields. IvI SEO's hire company upload needed both.
| REST API | Browser control | |
|---|---|---|
| Speed | Fast. Dozens of pages in one run | Slow. One page at a time, click by click |
| What it can reach | Only what WordPress and your plugins open up | Anything you can click in the dashboard |
| Watching it | Updates in the chat | You can literally watch it work |
| Risk | High. The key can do anything your user account can | Lower. It's working one screen at a time in front of you |
| Best for | The content itself, in bulk | Settings, dropdowns, one-offs |
| What you need | An application password, which your account must be allowed to create | Just your normal login, which you do yourself |
On that job, the API couldn't write straight onto the theme's category pages, and it couldn't touch the Yoast fields on them either. So the content went in through the API as content blocks, and browser control handled the rest.
That risk row is worth a second look. With API access, the AI could, in theory, delete every page on the site if it was told to. That's exactly why the prep and the guardrails matter. In my experience, with a clear brief, if you ever asked it to do something that damaging, it stops and checks with you first.
Browser control is also the one that opens more doors. I've used the same approach to get AI to build reports inside GA4 (Google Analytics). Same idea: tell it where to click and what you want at the end.
Which AI can do browser control? Both Claude and ChatGPT (through Codex) can. Ask it to use its browser, point it at your written process, and let it work.
How do you create a WordPress application password for AI?
To create a WordPress application password, log in to your WordPress dashboard, open your profile from your name in the top right, scroll down to Application Passwords, name it something like "Claude" and add it. WordPress shows the password once, so save it straight into a file on your computer, not into the chat. The AI needs your username and that application password, never your normal login password. Revoke it as soon as the upload is finished.
Step by step:
- Log in to wp-admin (your WordPress dashboard).
- Click your name in the top right to open your profile.
- Scroll down to Application Passwords.
- Give it a name you'll recognise, like "Claude", and add it.
- Copy the password WordPress shows you into a notepad file on your computer. You won't see it again.
- Tell the AI where that file is, and your username. Don't paste the password into the chat.
- When the upload's done, come back to the same screen and revoke it.
Please do step 7. A live key to a client's website sitting around after the job is finished is a risk you don't need.
Can't see Application Passwords? Your WordPress version, a security plugin or your host may have switched it off. Or, if you're working on someone else's site, your account might not have permission to create one. That's common if you're a freelancer or agency with limited access to a client's site.
You're not stuck. Use browser control instead. Log in to the dashboard yourself in the browser, then let the AI take it from there, clicking through the same screens you would. No key needed, and it can only do what your account is allowed to do.
What doesn't work yet when AI uploads to WordPress?
AI uploads work best on a fairly standard WordPress setup. Page builders and other platforms are harder. In IvI SEO's experience so far, AI isn't great at working out drag-and-drop page builders like Elementor. Your host can slow things down too: WordPress.com limits how many requests you can send in a burst, so the upload script had to pause between pages.
A bit more on each:
- Page builders. Depending on the theme and builder, the AI can struggle to work out where things actually live. I think that's mostly a description problem: it needs more explaining than "we don't use WooCommerce". But for now, this process doesn't cover page builders.
- Other platforms. I've only done this on WordPress. There's very likely a way on Shopify or Wix, especially with browser control, but getting the AI to learn the routes through those dashboards will take more setting up.
- Host limits. The hire company's site is on WordPress.com, which throttles bursts of requests. Claude's script spaced its uploads two seconds apart and backed off for a minute if it got blocked. Slower, but it got there.
None of these feel like dead ends to me. They just need more input. As and when I crack them, I'll update this.
Want this done for your local website?
If you've got a pile of pages to get onto your site and you'd rather not spend a week copying and pasting, take a look at how IvI SEO can help. I'll tell you honestly whether it's worth automating or quicker to just do by hand.