{"id":226725,"date":"2025-04-20T06:01:21","date_gmt":"2025-04-20T06:01:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/oneclickcontent-image-detail-generator\/"},"modified":"2026-07-21T22:37:00","modified_gmt":"2026-07-21T22:37:00","slug":"occidg","status":"publish","type":"plugin","link":"https:\/\/pl.wordpress.org\/plugins\/occidg\/","author":21075238,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.4","stable_tag":"2.0.4","tested":"7.0.2","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"OneClickContent - Image Detail Generator","header_author":"James Wilson","header_description":"Boost images with OneClickContent AI: auto titles, descs, captions & alt text!","assets_banners_color":"011c39","last_updated":"2026-07-21 22:37:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/jwilson529\/oneclickcontent-images","header_author_uri":"https:\/\/github.com\/jwilson529","rating":0,"author_block_rating":0,"active_installs":0,"downloads":846,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.10":{"tag":"1.1.10","author":"jwilson529","date":"2025-04-20 06:00:05"},"1.1.11":{"tag":"1.1.11","author":"jwilson529","date":"2025-04-25 04:10:37"},"1.1.12":{"tag":"1.1.12","author":"jwilson529","date":"2025-04-25 04:19:44"},"1.1.13":{"tag":"1.1.13","author":"jwilson529","date":"2025-04-29 23:17:22"},"1.1.14":{"tag":"1.1.14","author":"jwilson529","date":"2025-07-13 18:32:12"},"1.1.15":{"tag":"1.1.15","author":"jwilson529","date":"2025-07-13 18:57:49"},"1.2.1":{"tag":"1.2.1","author":"jwilson529","date":"2026-04-24 20:34:00"},"1.2.2":{"tag":"1.2.2","author":"jwilson529","date":"2026-04-24 21:01:43"},"1.2.3":{"tag":"1.2.3","author":"jwilson529","date":"2026-05-22 01:22:21"},"2.0.4":{"tag":"2.0.4","author":"jwilson529","date":"2026-07-21 22:37:00"}},"upgrade_notice":{"2.0.4":"<p>Major workflow upgrade with safe previews, selected-image background batches, review, history, rollback, and reliable processing on hosts with WP-Cron spawning disabled. Existing metadata is preserved by default; test a small preview before the first production batch.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3277450,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3277450,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3277450,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3277450,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.10","1.1.11","1.1.12","1.1.13","1.1.14","1.1.15","1.2.1","1.2.2","1.2.3","2.0.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3617764,"resolution":"1","location":"assets","locale":"","width":1585,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3617764,"resolution":"2","location":"assets","locale":"","width":1585,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3617764,"resolution":"3","location":"assets","locale":"","width":1600,"height":909},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3617764,"resolution":"4","location":"assets","locale":"","width":1600,"height":909},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3617764,"resolution":"5","location":"assets","locale":"","width":1585,"height":900}},"screenshots":{"1":"<strong>Dashboard:<\/strong> Review library coverage and configure a safe preview or background batch.","2":"<strong>Image Library:<\/strong> Filter images, select exactly what to process, edit metadata, and generate or review suggestions.","3":"<strong>Batches:<\/strong> Monitor durable background work with live totals and pause, resume, cancel, retry, or restore controls.","4":"<strong>History:<\/strong> Audit generated changes and restore individual metadata fields when needed.","5":"<strong>Settings:<\/strong> Configure safe review controls, metadata fields, providers, and defaults."}},"plugin_section":[],"plugin_tags":[17214,224606,163,194533,186],"plugin_category":[34,50],"plugin_contributors":[230575],"plugin_business_model":[],"class_list":["post-226725","plugin","type-plugin","status-publish","hentry","plugin_tags-alt-text","plugin_tags-gemini","plugin_tags-images","plugin_tags-openai","plugin_tags-seo","plugin_category-accessibility","plugin_category-media","plugin_contributors-jwilson529","plugin_committers-jwilson529"],"banners":{"banner":"https:\/\/ps.w.org\/occidg\/assets\/banner-772x250.png?rev=3277450","banner_2x":"https:\/\/ps.w.org\/occidg\/assets\/banner-1544x500.png?rev=3277450","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/occidg\/assets\/icon-128x128.png?rev=3277450","icon_2x":"https:\/\/ps.w.org\/occidg\/assets\/icon-256x256.png?rev=3277450","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/occidg\/assets\/screenshot-1.png?rev=3617764","caption":"<strong>Dashboard:<\/strong> Review library coverage and configure a safe preview or background batch."},{"src":"https:\/\/ps.w.org\/occidg\/assets\/screenshot-2.png?rev=3617764","caption":"<strong>Image Library:<\/strong> Filter images, select exactly what to process, edit metadata, and generate or review suggestions."},{"src":"https:\/\/ps.w.org\/occidg\/assets\/screenshot-3.png?rev=3617764","caption":"<strong>Batches:<\/strong> Monitor durable background work with live totals and pause, resume, cancel, retry, or restore controls."},{"src":"https:\/\/ps.w.org\/occidg\/assets\/screenshot-4.png?rev=3617764","caption":"<strong>History:<\/strong> Audit generated changes and restore individual metadata fields when needed."},{"src":"https:\/\/ps.w.org\/occidg\/assets\/screenshot-5.png?rev=3617764","caption":"<strong>Settings:<\/strong> Configure safe review controls, metadata fields, providers, and defaults."}],"raw_content":"<!--section=description-->\n<p><strong>OneClickContent - Image Detail Generator<\/strong> is a free, bring-your-own-key plugin for enhancing existing WordPress images with AI-generated metadata.<\/p>\n\n<p>Use your own <strong>OpenAI<\/strong> or <strong>Gemini<\/strong> API key to generate:\n- alt text\n- image titles\n- captions\n- descriptions<\/p>\n\n<p>This plugin is focused on metadata generation for images already in your Media Library. It does not create images.<\/p>\n\n<p>SVG attachments remain available for audits and manual editing. AI generation skips them without making a provider request.<\/p>\n\n<p><strong>Key Benefits:<\/strong>\n- Improve SEO for image search and content relevance\n- Improve accessibility with descriptive alt text\n- Save time on repetitive metadata writing\n- Use your own provider account and models\n- Bulk-generate metadata across your library\n- Control which fields get updated\n- Run preflight counts and dry runs before making provider requests\n- Review, edit, approve, reject, or defer field-level suggestions\n- Process resumable batches with pause, resume, cancel, and retry controls\n- Restore individual fields or complete batches from immutable change history<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Bring-your-own-key support for OpenAI and Gemini<\/li>\n<li>Single-image generation inside the Media Library<\/li>\n<li>Bulk generation for existing image attachments<\/li>\n<li>Auto-generate on upload<\/li>\n<li>Multilingual output based on plugin settings<\/li>\n<li>Manual editing after generation<\/li>\n<li>Forward-compatible OpenAI model filtering for GPT-5.6 API model IDs when OpenAI exposes them to API accounts<\/li>\n<li>Safe fill-missing, suggestion, overwrite-confirmation, and dry-run modes<\/li>\n<li>Confidence-aware review with decorative-image decisions<\/li>\n<li>Custom capabilities, CSV exports, environment-managed API keys, and WP-CLI commands<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects directly to the AI provider you configure.<\/p>\n\n<h4>OpenAI<\/h4>\n\n<ul>\n<li>Model-list endpoint: <code>https:\/\/api.openai.com\/v1\/models<\/code><\/li>\n<li>When used: when an administrator validates an OpenAI API key and loads compatible model choices<\/li>\n<li>Data sent for model listing: the configured OpenAI API key in the authorization header; no image or site content is sent<\/li>\n<li>Generation endpoint: <code>https:\/\/api.openai.com\/v1\/chat\/completions<\/code><\/li>\n<li>When used: when an authorized user requests image metadata generation, including upload processing, single-image generation, or a batch<\/li>\n<li>Data sent for generation: the configured OpenAI API key, image data, filename, existing title\/description\/alt text\/caption, site name, configured organization and editorial guidance, and the parent content title\/excerpt\/type when available. Published parent context is included by default; draft or private parent context is included only when the corresponding administrator opt-in is enabled.<\/li>\n<li>Purpose: validate credentials, provide compatible model choices, and generate title, description, alt text, and caption<\/li>\n<li>Terms: https:\/\/openai.com\/policies\/terms-of-use\/<\/li>\n<li>Privacy: https:\/\/openai.com\/policies\/privacy-policy\/<\/li>\n<\/ul>\n\n<h4>Gemini<\/h4>\n\n<ul>\n<li>Model-list endpoint: <code>https:\/\/generativelanguage.googleapis.com\/v1beta\/models?key={api_key}<\/code><\/li>\n<li>When used: when an administrator validates a Gemini API key and loads compatible model choices<\/li>\n<li>Data sent for model listing: the configured Gemini API key; no image or site content is sent<\/li>\n<li>Generation endpoint: <code>https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/{model}:generateContent?key={api_key}<\/code><\/li>\n<li>When used: when an authorized user requests image metadata generation, including upload processing, single-image generation, or a batch<\/li>\n<li>Data sent for generation: the configured Gemini API key, image data, filename, existing title\/description\/alt text\/caption, site name, configured organization and editorial guidance, and the parent content title\/excerpt\/type when available. Published parent context is included by default; draft or private parent context is included only when the corresponding administrator opt-in is enabled.<\/li>\n<li>Purpose: validate credentials, provide compatible model choices, and generate title, description, alt text, and caption<\/li>\n<li>Terms: https:\/\/ai.google.dev\/terms<\/li>\n<li>Privacy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h3>Third-party Libraries<\/h3>\n\n<ul>\n<li><strong>DataTables (with Buttons and HTML5 Export)<\/strong>: (v2.2.2, Buttons v3.2.2) used for table display and export functionality.\nSources:\n\n<ul>\n<li><a href=\"https:\/\/github.com\/DataTables\/DataTablesSrc\/releases\/tag\/2.2.2\">DataTables GitHub<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/DataTables\/Buttons\/releases\/tag\/3.2.2\">Buttons GitHub<\/a><\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h3>Source Code<\/h3>\n\n<p>Full source code and unminified JavaScript are available on <a href=\"https:\/\/github.com\/jwilson529\/oneclickcontent-images\">GitHub<\/a>.<\/p>\n\n<h3>Quick Start<\/h3>\n\n<ol>\n<li>Keep overwrite disabled for the safest starting point.<\/li>\n<li>Open <strong>Image Metadata &gt; Image Library<\/strong>.<\/li>\n<li>Find an image and click <strong>Preview<\/strong>.<\/li>\n<li>Compare the current and suggested values. Preview does not change the image.<\/li>\n<li>Edit a suggestion if needed, then click <strong>Use this suggestion<\/strong> for each value you approve.<\/li>\n<li>Use <strong>Generate<\/strong> when you want the current plugin rules applied automatically. With the recommended defaults, Generate fills empty selected fields and preserves existing metadata.<\/li>\n<\/ol>\n\n<p>Whitespace-only fields are treated as empty. SVG attachments can be edited manually, but AI generation skips them.<\/p>\n\n<h3>How to Process a Batch<\/h3>\n\n<ol>\n<li>Open <strong>Image Metadata &gt; Dashboard<\/strong> and review what is missing.<\/li>\n<li>Under <strong>Choose what to run<\/strong>, select the fields and a small starting batch such as 10 or 25 images.<\/li>\n<li>Leave the mode on <strong>Preview only - change nothing<\/strong>, then click <strong>Run Preview<\/strong>.<\/li>\n<li>Review the estimated images, fields, provider requests, and cost.<\/li>\n<li>Open <strong>Advanced batch options<\/strong> and choose one of these modes:\n\n<ul>\n<li><strong>Create suggestions for review<\/strong> saves proposed values without changing attachments.<\/li>\n<li><strong>Fill missing fields<\/strong> applies values only where selected fields are empty.<\/li>\n<li><strong>Overwrite selected fields<\/strong> replaces existing values only when overwrite is enabled and immediately confirmed.<\/li>\n<\/ul><\/li>\n<li>Run the batch, then open <strong>Image Metadata &gt; Batches<\/strong> to monitor it.<\/li>\n<\/ol>\n\n<p>Batches run in the background. The Batches screen provides pause, resume, cancel, and retry controls, so the original browser page does not need to remain open.<\/p>\n\n<p>Your field, batch-size, mode, ordering, and missing-field choices are remembered when you run the form. Overwrite confirmation is never remembered.<\/p>\n\n<h3>How to Review and Restore<\/h3>\n\n<p>Open <strong>Image Metadata &gt; Image Library<\/strong> and filter for images with suggestions ready. Each suggestion can be approved, edited before approval, rejected, or left for later.<\/p>\n\n<p>The plugin records metadata before applying a workflow change:<\/p>\n\n<ul>\n<li>Open <strong>Image Metadata &gt; History<\/strong> to restore an individual field.<\/li>\n<li>Open <strong>Image Metadata &gt; Batches<\/strong> to restore a completed batch.<\/li>\n<\/ul>\n\n<p>A normal restore protects values that someone edited after the recorded plugin change. An individual field can be force-restored only after explicit confirmation.<\/p>\n\n<h3>Recommended First Run<\/h3>\n\n<ol>\n<li>Enable only Alternative text and Title.<\/li>\n<li>Keep overwrite disabled.<\/li>\n<li>Preview 10 images.<\/li>\n<li>Check several results against the images and page context.<\/li>\n<li>Run Fill missing fields on a small batch.<\/li>\n<li>Confirm the results in the Image Library before increasing the batch size.<\/li>\n<\/ol>\n\n<p>Advanced workflow settings contain processing limits, request ceilings, retry behavior, editorial guidance, context controls, overwrite permissions, history retention, reports, capabilities, and WP-CLI support. Most sites can leave these settings at their defaults.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In WordPress, go to <strong>Plugins &gt; Add New Plugin &gt; Upload Plugin<\/strong>.<\/li>\n<li>Choose the plugin ZIP and click <strong>Install Now<\/strong>.<\/li>\n<li>Activate <strong>OneClickContent - Image Detail Generator<\/strong>.<\/li>\n<li>Open <strong>Image Metadata<\/strong> in the WordPress admin menu.<\/li>\n<li>Choose OpenAI or Gemini, add the matching API key, select a model and language, and choose the metadata fields to generate.<\/li>\n<li>Save the settings, then open <strong>Image Metadata &gt; Image Library<\/strong>.<\/li>\n<\/ol>\n\n<p>For a manual installation, upload the plugin folder to <code>\/wp-content\/plugins\/occidg\/<\/code>, then activate it from the Plugins screen.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20create%20images%3F\"><h3>Does this plugin create images?<\/h3><\/dt>\n<dd><p>No. It generates metadata for images that already exist in the Media Library.<\/p><\/dd>\n<dt id=\"does%20ai%20metadata%20generation%20support%20svg%20files%3F\"><h3>Does AI metadata generation support SVG files?<\/h3><\/dt>\n<dd><p>No. SVG attachments can be audited and edited manually, but AI generation skips them without making a provider request.<\/p><\/dd>\n<dt id=\"do%20i%20need%20my%20own%20api%20key%3F\"><h3>Do I need my own API key?<\/h3><\/dt>\n<dd><p>Yes. This is a bring-your-own-key plugin. Add your OpenAI or Gemini API key in the plugin settings.<\/p><\/dd>\n<dt id=\"which%20ai%20providers%20are%20supported%3F\"><h3>Which AI providers are supported?<\/h3><\/dt>\n<dd><p>OpenAI and Gemini.<\/p><\/dd>\n<dt id=\"does%20this%20support%20gpt-5.6%3F\"><h3>Does this support GPT-5.6?<\/h3><\/dt>\n<dd><p>The model dropdown uses the models returned for your API key. Compatible GPT-5.6 model IDs appear when OpenAI makes them available to your account.<\/p><\/dd>\n<dt id=\"which%20fields%20can%20it%20generate%3F\"><h3>Which fields can it generate?<\/h3><\/dt>\n<dd><p>The plugin can generate titles, alt text, captions, and descriptions.<\/p><\/dd>\n<dt id=\"can%20i%20choose%20which%20fields%20to%20generate%3F\"><h3>Can I choose which fields to generate?<\/h3><\/dt>\n<dd><p>Yes. Use the metadata field settings and override controls in the admin screen.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%20product%20images%3F\"><h3>Does it work with WooCommerce product images?<\/h3><\/dt>\n<dd><p>Yes. It works with image attachments in the WordPress Media Library, including WooCommerce product images stored there.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20enable%20automatic%20generation%20on%20upload%3F\"><h3>What happens if I enable automatic generation on upload?<\/h3><\/dt>\n<dd><p>Newly uploaded images will trigger metadata generation according to your configured settings.<\/p><\/dd>\n<dt id=\"what%20languages%20are%20supported%3F\"><h3>What languages are supported?<\/h3><\/dt>\n<dd><p>The plugin supports the language options currently provided in the admin settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Added preflight metrics, missing-field filters, safe batch presets, and exportable dry runs with request and cost estimates.<\/li>\n<li>Added fill-missing, suggestion, explicitly confirmed overwrite, and dry-run processing modes.<\/li>\n<li>Added selected-image background batches with live progress, pause, resume, cancel, retry, and a lock-protected browser fallback when normal WP-Cron spawning is disabled.<\/li>\n<li>Added field-level suggestion review, history, audit records, decorative decisions, and conflict-aware field or batch rollback.<\/li>\n<li>Added OpenAI\/Gemini provider abstraction, environment-key constants, masked key fields, privacy disclosure, and credential-redacted logging.<\/li>\n<li>Fixed caption generation for uploads, single-image requests, and bulk workflows, honored the low-confidence review setting, preserved masked API keys during normal saves, and improved the Image Library, Batches, and History interfaces.<\/li>\n<li>Added custom role capabilities, CSV reports, safe uninstall controls, and <code>wp occ-idg<\/code> operational commands.<\/li>\n<\/ul>","raw_excerpt":"Free AI-powered image metadata generation for existing Media Library images using your own OpenAI or Gemini API key.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/226725","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=226725"}],"author":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jwilson529"}],"wp:attachment":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=226725"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=226725"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=226725"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=226725"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=226725"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=226725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}