Auto-Generate WordPress Alt Text with ChatGPT and Make
The Image Bottleneck on Multi-Site Automation
I ignored image alt text on my sites for almost two years because doing it manually killed my publishing pace. When you manage multiple AI-assisted blogs and YouTube channels out of a home studio in Seoul, spending forty-five seconds per image typing descriptions feels like death by a thousand cuts. A single tech tutorial with twelve screenshots suddenly requires ten extra minutes just for media metadata.
For a long time, my solution was doing nothing. I left alt tags completely blank or let WordPress default to the raw file name. That bad habit caught up with me during a site audit. Hundreds of missing alt tags were hurting my content accessibility, and my articles were completely missing out on Google Image Search traffic.
WordPress plugins that promise automated alt text usually rely on static file names or basic vision models that generate generic descriptions like “a computer on a desk.” I wanted descriptions that understood context—capturing actual button labels in software screenshots or identifying specific scene elements. Setting up a custom wordpress alt text automation chatgpt workflow using Make was the only way to get high-quality descriptions without touching every image myself.

How the Automation Works Behind the Scenes
The architecture relies on three primary components: a WordPress hook or polling trigger, an API call to an OpenAI vision-capable model, and a media update call back to WordPress.
When you upload an image to your WordPress Media Library, Make detects the new media item. It extracts the direct URL of the uploaded image file and forwards it to the OpenAI API using a carefully structured prompt. ChatGPT analyzes the visual content and returns a concise, descriptive alt text string optimized for accessibility. Finally, Make takes that text response and updates the attachment record in WordPress automatically.
| Method | Execution Speed | Output Quality |
|---|---|---|
| Manual Entry | 1-2 minutes per image | High (Human accuracy) |
| Basic WP Plugins | Instant on upload | Low (Generic/Filename-based) |
| Make + ChatGPT Vision | 5-10 seconds background | High (Context-aware) |
Setting Up the Make Scenario Step by Step
Building this workflow requires an active Make account, an OpenAI API key with access to vision models, and an Application Password generated inside your WordPress user profile.
Step 1: Setting Up the WordPress Trigger
Inside Make, create a new scenario and select the WordPress app module. You have two choices for detecting new uploads: the direct Webhook trigger or the “Watch Media Items” polling module.
I recommend using “Watch Media Items” set to check every 15 minutes if you do bulk content staging. If you prefer real-time updates as you write in the Gutenberg editor, set up a custom webhook via a lightweight plugin like Code Snippets. For most solo creators, the standard Watch Media Items module works reliably without needing extra code on your server.
Connect your WordPress site using your website URL, your admin username, and a freshly generated Application Password (found under Users > Profile in your WordPress dashboard). Limit the output fields to ID, Source URL, Title, and Alt Text to keep the payload lightweight.
Step 2: Configuring the OpenAI Vision Module
Add the OpenAI module to your scenario and choose the “Create a Completion” or “Generate Text” action, selecting a model with vision capabilities like gpt-4o or gpt-4o-mini. Pass the source_url from the WordPress module as an image input payload.
The system prompt is the critical element here. If you give ChatGPT a generic request like “describe this image,” it will return a lengthy two-paragraph breakdown that fails standard accessibility guidelines. Here is the exact system prompt I use across my blogs:
You are an expert accessibility and SEO assistant. Analyze the provided image and generate a single descriptive alt text sentence. Keep it under 125 characters. Focus on the main subject, action, and key visual elements. Do not include phrases like 'image of' or 'photo of'. Return ONLY the raw alt text string without quotes or markdown formatting.
Step 3: Routing the Alt Text Back to WordPress
Add a second WordPress module to the end of your Make scenario: “Update a Media Item.” Map the Media Item ID from the original trigger module so WordPress knows exactly which file to modify.
In the Alt Text field, map the text response output directly from the OpenAI module. Save the scenario, switch it to Active, and test it by dragging an unoptimized PNG into your WordPress media directory. Within seconds, refreshing the attachment page should display a clean, context-aware alt text string.
Handling Edge Cases and API Limitations
While this automation eliminates hours of manual effort, vision models are not infallible. Over six months of running this across multiple content sites, I ran into three distinct failure points that require structural tweaks.
Infographics and Dense Text
When you upload an infographic or a chart with dense text, vision models occasionally attempt to transcribe every single data point into the alt text. This causes responses to exceed 300 characters, breaking screen reader formatting guidelines. To fix this, I added a text parser module in Make that hard-truncates any generated response at 120 characters if the model ignores the prompt length instruction.
Decorative Images and Logos
Logos, background flourishes, and UI dividers do not benefit from detailed descriptions. In fact, decorative assets should ideally have empty alt tags so screen readers skip them. ChatGPT tends to describe decorative lines as “a blue horizontal vector graphic line.” I solved this by configuring a router module in Make: if the file name contains keywords like ‘icon’, ‘logo’, or ‘divider’, the scenario skips the OpenAI call entirely and sets the alt tag to empty or a standardized brand label.
API Costs and Token Consumption
Vision API calls are slightly more expensive than plain text completion requests because images are converted into visual tokens based on resolution. High-resolution 4K screenshots trigger maximum token consumption.
Make offers a generous free plan with basic operation limits, while paid tiers start in the $9 to $10 per month range depending on billing frequency. The OpenAI API works on a pay-as-you-go credit structure where vision analysis costs a fraction of a cent per standard image. Check the official pricing pages for both services regularly, as API rates and tier allowances change frequently.
To keep API costs minimal, set up your WordPress media settings to scale down large original image uploads before the automation runs, or compress your media locally before dropping files into the editor.

My Take on WordPress Alt Text Automation
This workflow is one of the highest-return automations I run across my sites, but it is not a complete substitute for editorial oversights. It handles standard blog illustrations, stock imagery, and simple UI screenshots with about 95% accuracy.
Where it struggles is hyper-specific niche context. If you post a screenshot of an obscure developer tool or a local physical product, ChatGPT might mislabel the UI components or hallucinate details it cannot verify. For high-converting sales landing pages or core pillar articles, I still open the media library and manually verify the generated alt text.
For high-volume publishing, informational tutorials, and affiliate roundups, this automation solves a massive operational friction point. It ensures every asset meets baseline web accessibility standards without slowing down your editorial output.
Frequently Asked Questions
Will search engines penalize my site for using AI-generated alt text?
Search engines care about accuracy and user accessibility, not the specific method used to generate descriptive text string. As long as the generated alt text accurately describes the image content without keyword stuffing or deceptive language, it satisfies both accessibility standards and search crawler requirements.
Can I run this same workflow using n8n instead of Make?
Yes. The logic translates directly to n8n or Zapier. In n8n, you would use a WordPress Node set to listen for media creation, an OpenAI Node set to send the image URL with vision capabilities, and a final WordPress API node to PATCH the media object ID with the returned text.
How does this workflow handle bulk image uploads?
If you drop twenty images into a post simultaneously, Make processes each media item as an individual scenario execution. To avoid hitting OpenAI API rate limits during massive bulk imports, set the Make scenario execution mode to process items sequentially or add a Sleep module between requests.
