=== OpptiAI Alt Text – AI Alt Text Generator for Image SEO ===
Plugin Name: OpptiAI Alt Text – AI Alt Text Generator for Image SEO
Contributors: beepbeepv2
Plugin URI: https://oppti.dev/plugins/alt-text
Author URI: https://oppti.dev
Tags: alt text, alt text generator, image seo, accessibility, woocommerce
Requires at least: 6.2
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 4.6.135
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: beepbeep-ai-alt-text-generator

Bulk-generate AI alt text for WordPress & WooCommerce images. Fix missing alt text, boost image SEO and accessibility — with full review control.

== Description ==

**OpptiAI Alt Text is an AI alt text generator for WordPress that fixes missing image alt text in bulk** — so your Media Library and WooCommerce products get the descriptions search engines and screen readers need, without you editing images one at a time.

Point it at your site and it scans the WordPress Media Library and WooCommerce product images, flags the ones with missing, generic, or weak alt text, and generates clear, descriptive alt text you review and approve. Scan, bulk-generate, review the handful that need a human touch, and save — a job that used to take an afternoon takes minutes.

Good alt text does two jobs at once: it tells Google Images and product search what each picture shows (real image-search traffic, especially for stores), and it gives screen-reader users the description they rely on. OpptiAI Alt Text is built for bloggers, publishers, WooCommerce stores, agencies, SEO teams, and accessibility-focused site owners who want that handled properly inside wp-admin.

**No separate OpenAI key to set up, no per-image busywork, and nothing published without your approval.**

= Why site owners choose OpptiAI Alt Text =

* **Bulk-generate WordPress alt text** so large media libraries get cleaned up in minutes, not image by image.
* **No OpenAI API key required** — generation runs through OpptiAI's backend, so you don't manage or pay for a separate AI key.
* **Fix missing image alt attributes** across posts, pages, WooCommerce products, and media attachments.
* **Improve image SEO with clearer descriptions** that help search engines understand posts, products, and category images.
* **Support accessibility and WCAG workflows** by finding missing alt text fast and reviewing AI suggestions before they go live.
* **Keep humans in control** with edit, review, regenerate, and approve actions built into the workflow — nothing overwrites your work automatically.
* **Optimise WooCommerce product images** across featured images and galleries without touching your theme or catalog.
* **Automate future uploads** with optional AI alt text for new media, so coverage never slips again.

= Features =

* **Bulk AI alt text generation for WordPress** — update many images in one action instead of editing the Media Library file by file.
* **One-click scan for missing alt text** to surface the images most likely to hurt accessibility and image SEO.
* **Alt tag and alt attribute cleanup** for images that are empty, generic, or ready for a better description.
* **Review, edit, and regenerate workflow** that keeps quality high when AI suggestions need extra context.
* **Image SEO-focused output** designed to help Google Images and product search understand what each image shows.
* **WooCommerce-ready optimisation** for product featured images, gallery images, and broader store content.
* **Automatic alt text for new uploads** so future media stays covered without repeating the cleanup.
* **Clear dashboard, usage, and coverage views** so you can track progress and prioritise the next fixes.
* **Native WordPress admin experience** that feels like a real wp-admin workflow, not an external tool bolted on.

= How it works =

1. **Scan your WordPress media library** to find missing alt text, weak descriptions, and optimisation opportunities.
2. **Generate AI alt text in bulk** for the images you want to improve.
3. **Review and edit suggestions** so the final text matches your content, products, and brand voice.
4. **Save approved alt text** back to WordPress and move your library toward full coverage.
5. **Turn on automatic optimisation** if you want new uploads to get AI alt text going forward.

= Use cases =

* **Bloggers and publishers** wanting faster image SEO across existing posts and future uploads.
* **WooCommerce stores** needing bulk alt text for product images, galleries, and category visuals.
* **Agencies and freelancers** managing multiple WordPress sites and large client media libraries.
* **SEO teams** improving image discoverability and consistency across content and commerce pages.
* **Accessibility-focused site owners** improving image descriptions as part of WCAG and content-quality work.

= Free plan and paid options =

Try 10 generations before you even create an account. The free plan then includes 25 AI alt text generations per month — enough to fix your highest-value images and see the workflow on your own site. Paid plans unlock more volume, faster processing, and higher-capacity workflows for growing sites and stores.

= A quick favour =

OpptiAI Alt Text is built and supported by an independent developer. If it saves you time, a short review genuinely helps other site owners find it — thank you.

= Learn more =

Weighing up options? [Compare AI alt text tools for WordPress](https://oppti.dev/alttext-ai-alternative), or [run a free image SEO audit](https://oppti.dev/image-seo-audit) to see how many of your images are missing alt text right now.

= Demo Video =

https://www.youtube.com/watch?v=VLP302GcMBs

== Installation ==

1. Go to WordPress Admin → Plugins → Add New.
2. Search for "OpptiAI Alt Text" (or "alt text generator").
3. Click Install Now, then Activate.
4. Open OpptiAI Alt Text → Dashboard (or ALT Library) and generate your first descriptions — no API key setup required.
5. Optional: enable auto-generation in Settings to process new uploads automatically.
6. Running a store? Run bulk generation to fix existing WooCommerce product images and galleries.

== Frequently Asked Questions ==

= Is there a free AI alt text generator for WordPress? =

Yes. OpptiAI Alt Text has a free plan: 10 generations to try before signing up, then 25 AI alt text generations per month. That's enough to fix your most important images and judge the quality on your own content before deciding on a paid plan.

= Do I need my own OpenAI API key? =

No. Generation runs through OpptiAI's backend, so you don't have to create, manage, or pay for a separate OpenAI key. Install, activate, and start generating.

= Can I bulk generate alt text in WordPress? =

Yes. Bulk generation is the core of the plugin. Scan large libraries, select the images that need work, generate AI suggestions in bulk, and review them before saving.

= Is this a good AltText.ai alternative? =

If you want bulk AI alt text with review control, WooCommerce support, and a free plan that doesn't require your own AI key, yes — OpptiAI Alt Text is a practical alternative. See a full [comparison of AI alt text tools for WordPress](https://oppti.dev/alttext-ai-alternative).

= Can it fix missing alt tags and image alt attributes? =

Yes. WordPress stores image descriptions as alt attributes (often called alt tags). OpptiAI Alt Text finds images with missing alt text and helps you generate clearer descriptions for media attachments, posts, pages, and WooCommerce products.

= Does this plugin help with accessibility and WCAG? =

Yes. It helps you add and review alt text at scale, which supports accessibility and WCAG-oriented workflows. It assists your judgment rather than replacing it.

= Does OpptiAI Alt Text work with WooCommerce product images? =

Yes. It supports WooCommerce featured images, gallery images, and standard WordPress media attachments used across product pages and shop content.

= Can it generate alt text automatically for new uploads? =

Yes. Turn on automatic optimisation so future WordPress media gets AI-generated alt text without repeating the manual cleanup.

= Will it overwrite my existing alt text? =

No — it's built around review and approval. You inspect, edit, regenerate, and approve suggested alt text before anything is saved back to WordPress.

== Screenshots ==
1. Dashboard overview showing missing ALT text, monthly usage, and the next best action for WordPress image SEO and accessibility.
2. Scan your WordPress media library to find missing ALT text and images that need review.
3. Generate AI alt text in bulk for WordPress and WooCommerce images from one review workspace.
4. Review, edit, and score AI alt text before saving it live.
5. Before and after example showing an image with missing ALT text transformed into descriptive AI-generated ALT text.
6. BeepBeep AI works inside WordPress so you can scan, review, and optimise images without leaving wp-admin.
7. WooCommerce image workflow for product featured images and gallery images.
8. Settings screen for automatic AI alt text on new uploads.

== External Services ==

This plugin connects to external APIs to generate image alt text and provide account/billing features.

Service: AltText AI Backend API (https://alttext-ai-backend.onrender.com)
Purpose: Generate alt text descriptions, perform alt text review checks, and handle authentication, license, usage, billing, and contact requests.
Privacy policy: https://oppti.dev/privacy

Service: OpenAI API (used by the backend service)
Purpose: Generate and review alt text descriptions.
Privacy policy: https://openai.com/privacy

Service: PostHog (optional product analytics)
Purpose: If the site owner opts in, send anonymous plugin usage analytics such as activation status, dashboard views, feature clicks, and upgrade funnel events. BeepBeep AI does not send ALT text, filenames, image content, API tokens, or license keys in analytics events.
Privacy policy: https://posthog.com/privacy

== Changelog ==

= 4.6.135 =
* Agency plan top banner now says You’re on OpptiAI Agency with one-subscription Alt Text + Titles subtext (no Pro wording).

= 4.6.134 =
* Upgrade modal: US request country (CF-IPCountry) uses USD Stripe Price IDs and dollar amounts; missing/non-US keeps GBP.

= 4.6.133 =
* In-plugin By line is now OpptiAI linked to https://oppti.dev.

= 4.6.132 =
* Added a quiet OpptiAI Titles cross-sell line at the bottom of the home Dashboard for signed-in Free, Starter, and Growth users.
* Show “Only X credits left this month” on the usage card only when remaining ≤ 5; otherwise show used/limit numbers.
* Added a quiet usage clarification: credits count generations (including retries and titles); images count what you saved.
* Added Settings Account Credit Wallet matching Titles (shared pool, per-plugin breakdown, Titles Open when installed, View Growth plan).

= 4.6.131 =
* Updated remaining user-facing BeepBeep chrome in wp-admin to OpptiAI Alt Text.
* Renamed Upgrade to Pro CTAs to Upgrade to Growth (billing id unchanged).

= 4.6.130 =
* Fixed: When OpptiAI Titles is installed first, Alt Text now adopts that site's `beepti_site_id` so both plugins share one credit wallet (Titles-first install order). Adoption only runs when Alt Text has no site id yet.

= 4.6.129 =
* Unified leftover Free/guest copy and shipped defaults to Free 25 / guest 10 (exhausted-guest messaging, local free-credit allocation, Free plan positioning).

= 4.6.128 =
* Rebranded visible wp-admin plugin name and sidebar menu label to OpptiAI Alt Text.

= 4.6.127 =
* Increased the free monthly AI allowance from 15 to 25 generations.
* Increased the guest/anonymous trial from 5 to 10 generations.
* Updated FAQ, dashboard upsell, trial meter, and Free pricing copy to match Free 25 / guest 10.

= 4.6.126 =
* Improved: Remove duplicate usage progress bars and keep limit notices text-only so daily/monthly status is easier to scan.

= 4.6.125 =
* Improved: Free-plan limit copy now matches the active blocker (daily vs monthly) so 15/15 no longer shows the daily-limit explanation.

= 4.6.124 =
* Fixed: Clarify free-plan daily (5/day) vs monthly (15/month) limits when today’s daily allowance is used.

= 4.6.123 =
* Fixed: Prevent PHP warning when billing info response omits the nested billing key on free accounts.

= 4.6.122 =
* Fixed the generation progress panel placement so it appears beneath the current visible dashboard actions rather than inside the hidden legacy runtime.
* Preserved the existing dashboard layout and only shows the panel while generation is active or has just completed.

= 4.6.121 =
* Restored the live generation progress panel beneath the existing logged-in dashboard actions.
* Kept the current dashboard layout and styling while showing processed images, total images, and completion percentage during background generation.

= 4.6.120 =
* Clarified that guests can generate up to five ALT texts free without signing up or entering card details.
* Added an impact-led signup modal after the fifth free generation, showing images improved and ALT coverage gained.
* Added explicit anonymous-generation properties and complete guest-trial conversion events for PostHog funnels.

= 4.6.119 =
* Added a live generation progress bar beneath the dashboard action buttons, including current image, total images, and completion percentage.

= 4.6.118 =
* Updated the guest trial dashboard immediately after successful generation, without requiring a page refresh.
* Strengthened the exhausted-trial prompt so guests can clearly create a free account and unlock 15 free generations each month.

= 4.6.117 =
* Fixed an activation fatal by restoring the required marketing attribution class to the release package.

= 4.6.116 =
* Fixed generation retry correlation, explicit non-retryable response handling, and terminal telemetry deduplication.

= 4.6.114 =
* Fixed telemetry validation gaps: batch_generation_started, upgrade_cta_clicked on NAI paywall paths, checkout_started before Stripe redirect, and auth funnel flush before redirect.
* Fixed undefined entitlement_state PHP warning and wp_localize_script warnings on library admin pages.

= 4.6.113 =
* Exposed trackFeatureUsed on the bbaiTelemetry client API.
* Normalized feature_used feature names and routed NAI dashboard calls through the telemetry wrapper when available.

= 4.6.111 =
* Fixed NAI dashboard client telemetry for generation_started and generation_completed on the legacy drawer generation path.
* Fixed feature_used emissions for NAI shell navigation (library, settings, dashboard, billing, statistics).
* Fixed per-run generation_run_id assignment so generation_completed is not dropped when the drawer opens before bbai-admin dispatches.

= 4.6.110 =
* Telemetry hardening: canonical property enrichment for all new events (plugin_slug, telemetry_version, normalized host, generation_type, quota_state, license_state).
* feature_used events now always require feature_name.

= 4.6.90 =
* Unified logged-out and logged-in dashboard rendering around the shared ALT coverage dashboard structure.
* Made ALT Coverage, progress ring, scanned/optimised/missing/review counts, and Next Recommended Action the primary dashboard model.
* Removed remaining Today's Pass, ALT Pass, workflow stepper, and duplicate accessibility metric language from dashboard surfaces.

= 4.6.14 =
* Refactored the nAi dashboard into smaller PHP components and focused JavaScript modules while preserving existing dashboard behaviour.
* Split ALT Library generation state helpers into focused legacy-compatible modules for locks, notices, bulk orchestration, API request construction, and row/count/filter state.
* Added regression coverage and release compliance cleanup for dashboard and ALT Library generation flows.

= 4.6.4 =
* Fixed background generation persistence so progress survives page navigation, refreshes, and multi-tab sessions across all plugin pages.
* Fixed in-browser background jobs so progress syncs correctly via the shared bbaiJobState subscription, removing duplicate polling and stale state.
* Fixed the ALT Library pagination so approving all items on a filtered page automatically reloads to show remaining items from other pages, instead of leaving an empty view.
* Fixed the floating job widget so the Review images button is visible after generation completes (was invisible due to a WordPress admin CSS conflict).
* Removed the misleading "Review suggestions." suffix from the generation-complete widget status; the button label already communicates the next action.
* Fixed Plugin Check warnings by adding translator comments to all i18n calls with printf placeholders across the plugin.
* Aligned the dashboard insight card layout so the main value heading and CTA buttons sit at the same vertical position across all three cards regardless of the optional success badge.

= 4.6.3 =
* Updated the WordPress.org large and small banners with correctly sized Better Alt Text, Better Accessibility artwork.
* Refreshed the WordPress.org thumbnail icon and improved readme SEO coverage for AI alt text, image SEO, accessibility, WooCommerce, and missing alt attributes.
* Polished the dashboard insight cards with clearer outcome copy, proof badges, stronger visual hierarchy, and aligned refreshed-state values.
* Fixed manual Re-scan library feedback so scan completion or failure is shown inline and persists after dashboard refreshes.
* Fixed scan feedback timing so completion messaging is reattached if a dashboard render replaces the re-scan link.
* Improved all-optimised dashboard presentation, retention-strip copy, and state consistency after generation, review, approval, and polling.
* Fixed upgrade CTA and modal stacking edge cases around generation-complete and automation prompts.

= 4.6.2 =
* Replaced the WordPress.org banner and thumbnail icon with refreshed Better Alt Text, Better Accessibility artwork.
* Improved generation button loading states with one spinner, one clear Generating ALT text label, hard disabled buttons, and duplicate-click protection.
* Made dashboard polling idempotent so unchanged state no longer flickers, replays completion animations, or replaces stable DOM.
* Fixed dashboard state sync after generation and approval so the donut, right card, credits card, and progress CTA stay aligned without a refresh.
* Fixed stale all-optimised, Done, and review-ready state leaks after approving or generating images.
* Fixed monthly credit usage display and progress bars so usage updates from backend truth after generation.
* Added clear dashboard feedback after manual library re-scans complete or fail.
* Added contextual first-success, review, credit, and upgrade prompts without interrupting generation or review flows.
* Made automatic optimisation CTAs clickable, trackable, and connected to the existing upgrade modal.
* Improved the bulk generation modal with dynamic steps, real progress, live feed entries, compact layout, and clearer completion actions.
* Fixed upgrade modal stacking from the generation-complete automation link so pricing opens above the dismissed progress modal.
* Polished dashboard spacing, CTA alignment, retention-strip copy, and completion/review states.

= 4.6.1 =
* Maintenance release.

== Upgrade Notice ==

= 4.6.111 =
Telemetry-only hotfix: restores NAI client generation and navigation feature_used events.

= 4.6.110 =
Telemetry-only release: canonical PostHog property enrichment for new events.

= 4.6.90 =
Dashboard UX now uses one ALT coverage-first structure for logged-out and logged-in states.

= 4.6.14 =
Dashboard and ALT Library architecture cleanup with preserved generation, review, quota, and telemetry behaviour.
