{"id":388198,"date":"2026-10-30T14:25:02","date_gmt":"2026-10-30T14:25:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/posthelp-images\/"},"modified":"2026-10-31T00:56:41","modified_gmt":"2026-10-31T00:56:41","slug":"posthelp-images","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/posthelp-images\/","author":20476349,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.0","stable_tag":"1.6.0","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"PostHelp Images","header_author":"Sitez Incorporated","header_description":"Generate AI images, resize and convert them to web-ready files, and place them in the WordPress media library with alt text already set - all from inside wp-admin. Human-in-the-loop: the AI suggests and generates, you review, refine, and place. Part of the PostHelp family.","assets_banners_color":"96b8cf","last_updated":"2026-10-31 00:56:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/posthelp.ai\/posthelp-images\/","header_author_uri":"https:\/\/sitezinc.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":90,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.1":{"tag":"1.5.1","author":"estgelais","date":"2026-10-30 14:54:33","revision":3775511},"1.6.0":{"tag":"1.6.0","author":"estgelais","date":"2026-10-31 00:56:41","revision":3776237}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3775475,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3775475,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3775475,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3775475,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.1","1.6.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3775511,"resolution":"1","location":"assets","locale":"","width":1568,"height":722},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3775511,"resolution":"2","location":"assets","locale":"","width":1568,"height":685},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3775511,"resolution":"3","location":"assets","locale":"","width":364,"height":602},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3775511,"resolution":"4","location":"assets","locale":"","width":1347,"height":780}},"screenshots":{"1":"Every image in one list, with its state, format, size and cost.","2":"Start from a post or an idea, get a written prompt, refine it, and set the size, format and alt text.","3":"The finished image, ready to set as the featured image or to replace an image already in your media library.","4":"Settings: your OpenAI key, encrypted at rest, plus the default model, format and quality."}},"plugin_section":[],"plugin_tags":[216086,17214,25198,233,15376],"plugin_category":[],"plugin_contributors":[289774],"plugin_business_model":[],"class_list":["post-388198","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-images","plugin_tags-alt-text","plugin_tags-image-generation","plugin_tags-media-library","plugin_tags-webp","plugin_contributors-estgelais","plugin_committers-estgelais"],"banners":{"banner":"https:\/\/ps.w.org\/posthelp-images\/assets\/banner-772x250.png?rev=3775475","banner_2x":"https:\/\/ps.w.org\/posthelp-images\/assets\/banner-1544x500.png?rev=3775475","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/posthelp-images\/assets\/icon-128x128.png?rev=3775475","icon_2x":"https:\/\/ps.w.org\/posthelp-images\/assets\/icon-256x256.png?rev=3775475","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/posthelp-images\/assets\/screenshot-1.png?rev=3775511","caption":"Every image in one list, with its state, format, size and cost."},{"src":"https:\/\/ps.w.org\/posthelp-images\/assets\/screenshot-2.png?rev=3775511","caption":"Start from a post or an idea, get a written prompt, refine it, and set the size, format and alt text."},{"src":"https:\/\/ps.w.org\/posthelp-images\/assets\/screenshot-3.png?rev=3775511","caption":"The finished image, ready to set as the featured image or to replace an image already in your media library."},{"src":"https:\/\/ps.w.org\/posthelp-images\/assets\/screenshot-4.png?rev=3775511","caption":"Settings: your OpenAI key, encrypted at rest, plus the default model, format and quality."}],"raw_content":"<!--section=description-->\n<p>PostHelp Images removes the manual loop most people run today: go to ChatGPT, generate an image, download it, resize it in another tool, upload it to the media library, and type alt text by hand. PostHelp Images does all of that in one place.<\/p>\n\n<p>It is human-in-the-loop by design. The AI suggests and generates; you review, refine, and place. It is a tool you drive from your own WordPress admin, not a fire-and-forget automation that floods your site with images.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Turns a loose idea into a vivid image prompt with one click, then lets you refine it in plain language before you spend a generation.<\/li>\n<li>Starts from your own content: pick a post or page and it writes a short summary of it as the idea. A link under a post's Featured Image box makes a new image for that post and sets it as the featured image.<\/li>\n<li>Accepts an optional reference image, so the result can match a real truck, storefront or product.<\/li>\n<li>Ships with five starter style templates (documentary photo, lifestyle photo, bright and airy photo, clean product shot, flat vector illustration). Save your own templates for the whole site, and new images start from your last used settings.<\/li>\n<li>Generates through OpenAI in the same request you click Generate Image in, so no server cron is needed and it works on ordinary shared hosting.<\/li>\n<li>Resizes to a maximum width and converts to WebP, JPEG, or PNG on your own server (Imagick preferred, GD fallback).<\/li>\n<li>Writes short, concept-based alt text when you leave the field blank.<\/li>\n<li>Adds the finished file to your media library with one click, or replaces an existing media library image in place, keeping its URL.<\/li>\n<li>Imports a spreadsheet of image ideas as draft rows, with a dry-run preview, then generates the ones you select in one batch.<\/li>\n<\/ul>\n\n<p><strong>Bring your own OpenAI API key.<\/strong> The plugin works with your own OpenAI key and you pay OpenAI directly, usually a few cents per image. The Settings page explains how to get a key. The most secure setup is to define POSTHELP_IMAGES_OPENAI_KEY in wp-config.php. If you paste a key into Settings instead, it is encrypted at rest using your site salts and never shown again.<\/p>\n\n<p><strong>Or try it free with no signup.<\/strong> With no key set, you can make 5 images right away. PostHelp makes them for you at posthelp.ai, and you do not need an account.<\/p>\n\n<p><strong>Then connect a free PostHelp account.<\/strong> After the trial, click Connect PostHelp account in Settings. A free account gets 5 images every month after you confirm your email. They reset on the 1st and do not roll over. If you need more, images come in packs of 25 for $10 on posthelp.ai, with no subscription and no expiry. Your own OpenAI key always stays free to use, and when one is set it is always used first.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to one of two services to create images and text. It sends nothing to either until you click a button that creates an image or asks for text help.<\/p>\n\n<p><strong>OpenAI API (api.openai.com).<\/strong> Used when you have added your own OpenAI API key.<\/p>\n\n<p><strong>PostHelp (posthelp.ai), run by Sitez Incorporated.<\/strong> Used only while no OpenAI key of your own is set, in two ways. On the free trial, with no account, PostHelp makes up to 5 images for your site. Each trial request also sends your site's address, which is how the trial is counted per site. With a connected PostHelp account, used after you click Connect PostHelp account in Settings and approve the connection, PostHelp takes one image from your free monthly images, or from pack images once those are used, per image created. Connecting sends your site's admin address so the connection can be tied to your site, and the PostHelp account you create or log in to holds your email address. Disconnect at any time in Settings. In both cases PostHelp makes the OpenAI request for you with its own key.<\/p>\n\n<p>A free PostHelp account includes a monthly email with your image balance and news about other PostHelp products. Every email has an unsubscribe link, and unsubscribing does not affect your account or your free images.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li>When you click Generate Image: your prompt, the image style, and the output size and quality. If you picked a reference image, that image is sent too.<\/li>\n<li>When you ask for a prompt suggestion, a content summary, alt text or a filename: your idea or prompt text. For a content summary, the text of the post or page you picked is sent.<\/li>\n<\/ul>\n\n<p>The same information goes to PostHelp instead of OpenAI when you are on the free trial or using a connected PostHelp account. With an account connected, Settings also asks PostHelp for your remaining image count when you open it.<\/p>\n\n<p>The plugin reads the chosen post or page from your own site to get its text. That request stays on your site.<\/p>\n\n<p>OpenAI's terms: https:\/\/openai.com\/policies\/services-agreement\/\nOpenAI's privacy policy: https:\/\/openai.com\/policies\/privacy-policy\/\nPostHelp terms of service: https:\/\/posthelp.ai\/terms-of-service\/\nPostHelp privacy policy: https:\/\/posthelp.ai\/privacy-policy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin zip via Plugins &gt; Add New &gt; Upload Plugin, or install it from the plugin directory.<\/li>\n<li>Activate it.<\/li>\n<li>Go to PostHelp Images &gt; Add New, describe what you want, and click Generate Image. Your first 5 images are free with no signup.<\/li>\n<li>To keep going, connect a free PostHelp account in Settings for 5 images every month, or add your own OpenAI API key there or define POSTHELP_IMAGES_OPENAI_KEY in wp-config.php.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20openai%20account%3F\"><h3>Do I need an OpenAI account?<\/h3><\/dt>\n<dd><p>No. You can make 5 images right away with no signup. After that, connect a free PostHelp account in Settings and PostHelp makes the request for you, or add your own OpenAI API key.<\/p><\/dd>\n<dt id=\"what%20does%20it%20cost%3F\"><h3>What does it cost?<\/h3><\/dt>\n<dd><p>The plugin is free. Without a key, you can make 5 images right away with no signup. After that, a free PostHelp account gives you 5 images every month, starting when you confirm your email. They reset on the 1st and do not roll over. If you need more, images come in packs of 25 for $10 on posthelp.ai, with no subscription and no expiry. With your own OpenAI key, you pay OpenAI directly, usually a few cents per image.<\/p><\/dd>\n<dt id=\"i%20have%20my%20own%20key%20and%20a%20posthelp%20account.%20which%20one%20is%20used%3F\"><h3>I have my own key and a PostHelp account. Which one is used?<\/h3><\/dt>\n<dd><p>Your own key, always. PostHelp is only used when no key of your own is set.<\/p><\/dd>\n<dt id=\"will%20it%20add%20images%20to%20my%20site%20on%20its%20own%3F\"><h3>Will it add images to my site on its own?<\/h3><\/dt>\n<dd><p>No. You review every image before it goes into your media library, and nothing is placed on a page for you. A spreadsheet import creates draft rows, and you pick which ones to generate.<\/p><\/dd>\n<dt id=\"can%20it%20replace%20an%20image%20that%20is%20already%20on%20my%20site%3F\"><h3>Can it replace an image that is already on my site?<\/h3><\/dt>\n<dd><p>Yes. Replace in Media Library swaps the file and keeps the same URL, so every page that uses the image shows the new one. It only replaces files inside your uploads folder, and it backs up the original first.<\/p><\/dd>\n<dt id=\"which%20image%20model%20does%20it%20use%3F\"><h3>Which image model does it use?<\/h3><\/dt>\n<dd><p>gpt-image-2.5-flare by default. You can change it in Settings.<\/p><\/dd>\n<dt id=\"does%20it%20need%20server%20cron%3F\"><h3>Does it need server cron?<\/h3><\/dt>\n<dd><p>No. Each image is generated in the same request you click Generate Image in.<\/p><\/dd>\n<dt id=\"where%20are%20my%20generated%20files%20stored%3F\"><h3>Where are my generated files stored?<\/h3><\/dt>\n<dd><p>In wp-content\/uploads\/posthelp-images\/. Once you click Add to Media Library, the file becomes a normal WordPress attachment.<\/p><\/dd>\n<dt id=\"what%20sizes%20can%20i%20request%3F\"><h3>What sizes can I request?<\/h3><\/dt>\n<dd><p>Any width and height within the model's limits, or an aspect preset. The plugin snaps a request to the nearest legal size and tells you what it used.<\/p><\/dd>\n<dt id=\"is%20my%20api%20key%20safe%3F\"><h3>Is my API key safe?<\/h3><\/dt>\n<dd><p>The wp-config constant never touches the database. A key pasted into Settings is encrypted at rest. No plugin can fully protect a stored secret from someone who already controls your database and files, so the wp-config option is the real recommendation.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Try it free with no signup: with no OpenAI key and no PostHelp account, a site can make 5 images right away.<\/li>\n<li>A free PostHelp account now gets 5 images every month, reset on the 1st, used before any pack images. It replaces the one-time 5 free images.<\/li>\n<li>Settings shows free images this month and pack images on separate lines, and the image screens show the same balance in one line at the top.<\/li>\n<li>The image screens show how many free trial images are left, and offer the free account when they run out.<\/li>\n<li>Fixed: a new image's title could be cut off mid-word (A picture of Jim Ri). The title was taken from the Idea box the first time the page saved, even if you were still typing. It now follows the finished idea, and then the file name once the image is made. A title you change by hand is never touched.<\/li>\n<li>Fixed: the last few letters typed could be left unsaved if you kept typing while a save was on its way.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Image costs now show only on sites that use their own OpenAI key. With no key of your own, the Cost column in the images list and the cost in the result box are hidden.<\/li>\n<li>Security hardening: every admin request checks your permission and a security token directly, including the sample CSV download and the Featured Image link.<\/li>\n<li>Replace in Media Library only writes to the selected image's own file inside your uploads folder, using the WordPress filesystem API.<\/li>\n<li>The edit screen's small style fix now loads through the WordPress stylesheet system.<\/li>\n<li>With your own OpenAI key set, Settings no longer shows the PostHelp Account section, and images that failed only because free PostHelp images ran out are cleared so they can be generated with your key.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Connect a free PostHelp account from Settings instead of using your own OpenAI key. New accounts get 5 free images after confirming their email, and more are available in packs of 25.<\/li>\n<li>When no OpenAI key is set and an account is connected, images, prompt suggestions, alt text and filenames are made through PostHelp. Your own key is always used first when one is set.<\/li>\n<li>Running out of PostHelp images never locks anything. The message explains how to add your own key or buy more.<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>The default image model is now gpt-image-2.5-flare, which matched gpt-image-2 on quality in our tests at about a quarter of the cost per image. You can still type gpt-image-2 or any other model into Settings.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>The text model for prompt suggestions, refine, filenames and alt text moves from gpt-5-mini, which OpenAI retires on December 11, 2026, to gpt-6-luna. A site with gpt-5-mini saved in Settings is moved over automatically.<\/li>\n<li>Images made with gpt-image-2.5-flare or gpt-image-2.5-sunburst now record their cost.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Rows that were saved but never generated now show Draft. Queued appears only while a row waits in a running batch.<\/li>\n<li>Five starter style templates.<\/li>\n<li>How to get an OpenAI API key, on the Settings page.<\/li>\n<li>Size presets no longer start wider than your Max width.<\/li>\n<li>Removed the self-hosted update checker. Updates come from the plugin directory.<\/li>\n<li>PostHelp Images now always uses its own OpenAI key and no longer falls back to the shared PostHelp key.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Start from content, featured image link, reference image, and replace in media library.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Concept-based alt text, a site default image style, shared templates, and Last used settings.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Removed unused code.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>16:10 preset and a build script.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Generate AI images, resize and convert them to web-ready files, and place them in your media library with alt text already set - all inside wp-admin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/388198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=388198"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/estgelais"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=388198"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=388198"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=388198"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=388198"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=388198"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=388198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}