{"id":51035348,"url":"https://github.com/travelopia/wordpress-ai","last_synced_at":"2026-06-22T05:02:20.723Z","repository":{"id":360190770,"uuid":"1050902933","full_name":"Travelopia/wordpress-ai","owner":"Travelopia","description":"An extensible WordPress plugin that brings AI capabilities to your content workflows.","archived":false,"fork":false,"pushed_at":"2026-06-17T04:56:07.000Z","size":1152,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-17T06:25:38.667Z","etag":null,"topics":["ai","wordpress-plugin"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/travelopia/wordpress-ai","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Travelopia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-05T06:02:17.000Z","updated_at":"2026-05-26T09:39:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Travelopia/wordpress-ai","commit_stats":null,"previous_names":["travelopia/wordpress-ai"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Travelopia/wordpress-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Travelopia%2Fwordpress-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Travelopia%2Fwordpress-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Travelopia%2Fwordpress-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Travelopia%2Fwordpress-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Travelopia","download_url":"https://codeload.github.com/Travelopia/wordpress-ai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Travelopia%2Fwordpress-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34635038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","wordpress-plugin"],"created_at":"2026-06-22T05:02:17.957Z","updated_at":"2026-06-22T05:02:20.718Z","avatar_url":"https://github.com/Travelopia.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Travelopia WordPress AI\n\n![maintenance-status](https://img.shields.io/badge/maintenance-actively--developed-brightgreen.svg)\n\nAn extensible WordPress plugin that brings AI capabilities to your content workflows. Configure your preferred AI provider once, and unlock a growing set of features — starting with automatic image alt text generation.\n\n\u003ctable width=\"100%\"\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd align=\"left\" width=\"70%\"\u003e\n        \t\u003cp\u003eBuilt by the super talented team at \u003cstrong\u003e\u003ca href=\"https://www.travelopia.com/work-with-us/\"\u003eTravelopia\u003c/a\u003e\u003c/strong\u003e.\u003c/p\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd align=\"center\" width=\"30%\"\u003e\n\t\t\t\u003cimg src=\"https://www.travelopia.com/wp-content/themes/travelopia/src/assets/svg/logo-travelopia-circle.svg\" width=\"50\" /\u003e\n\t\t\u003c/td\u003e\n\t\u003c/tr\u003e\n\u003c/table\u003e\n\n## Installation\n\n```\ncomposer require travelopia/wordpress-ai\n```\n\n## AI Providers\n\nThe plugin supports multiple providers out of the box:\n\n- **AWS Bedrock** (default)\n- **OpenAI**\n\n### Provider Configuration\n\n**AWS Bedrock** (Claude 3.5 Sonnet) — set via `wp-config.php` or environment variable:\n\n```php\ndefine( 'AWS_BEDROCK_API_KEY', 'your-key-here' );\ndefine( 'AWS_BEDROCK_REGION', 'us-east-1' ); // optional, defaults to us-east-1\n```\n\n```bash\nexport AWS_BEDROCK_API_KEY=\"your-key-here\"\nexport AWS_BEDROCK_REGION=\"us-east-1\" # optional, defaults to us-east-1\n```\n\n**OpenAI** (GPT-4o Mini) — set via `wp-config.php` or environment variable:\n\n```php\ndefine( 'OPENAI_API_KEY', 'your-key-here' );\n```\n\n```bash\nexport OPENAI_API_KEY=\"your-key-here\"\n```\n\n## Features\n\n### Alt Text Generation\n\nAutomatically generates descriptive alt text for images — improving accessibility and SEO with zero manual effort.\n\n- **Auto-generate on upload** — alt text is filled in the moment an image hits the Media Library\n- **Generate for existing images** — click \"Generate Alt Text\" from the attachment edit screen\n- **Batch processing via WP-CLI** — backfill alt text for your entire media library\n- **Respects manual alt text** — never overwrites unless you explicitly regenerate\n- **Customizable prompt** — tailor the generation instructions from the settings page\n\nWP-CLI examples:\n\n```bash\nwp travelopia-wp-ai alt-text generate --missing                    # only images without alt text\nwp travelopia-wp-ai alt-text generate --all                        # every image\nwp travelopia-wp-ai alt-text generate --ids=1,2,3                  # specific attachments\nwp travelopia-wp-ai alt-text generate --all --batch-size=20        # smaller batches for memory-constrained envs\nwp travelopia-wp-ai alt-text generate --missing --limit=1000       # cost / quality sample — stop after 1000 attempts\nwp travelopia-wp-ai alt-text generate --missing --limit=5000       # chunked nightly backfill — re-runs continue naturally\n```\n\nThe `--limit=\u003cnumber\u003e` flag caps the total number of attempts in a single run (success or failure). It composes with `--missing`, `--all`, `--ids`, and `--batch-size`. With `--ids`, the supplied list is truncated to the first N entries. With `--all`, the run is **not resumable** — successive invocations reprocess the same first N images; use `--missing` for chunked backfills.\n\n## Hooks\n\n### Filters\n\n**`travelopia_wordpress_ai_provider`** — Switch the active AI provider.\n\n```php\nadd_filter(\n\t'travelopia_wordpress_ai_provider',\n\tfn() =\u003e 'openai'\n);\n```\n\n---\n\n**`travelopia_wordpress_ai_alt_text_generation_options`** — Override model, temperature, or system instruction for alt text generation.\n\n```php\nadd_filter(\n\t'travelopia_wordpress_ai_alt_text_generation_options',\n\tfunction ( array $options, int $attachment_id ): array {\n\t\t$options['model']              = 'anthropic.claude-3-5-sonnet-20241022-v2:0';\n\t\t$options['temperature']        = 0.5;\n\t\t$options['system_instruction'] = 'You are an accessibility expert.';\n\t\treturn $options;\n\t},\n\t10,\n\t2\n);\n```\n\n---\n\n**`travelopia_wordpress_ai_alt_text_include_context`** — By default, the plugin sends the image title and filename as additional context alongside the image to help the AI produce more accurate alt text. Set this to `false` to send only the image itself.\n\n```php\nadd_filter(\n\t'travelopia_wordpress_ai_alt_text_include_context',\n\t'__return_false'\n);\n```\n\n---\n\n**`travelopia_wordpress_ai_settings_capability`** — Control which user role can access the plugin settings page. Defaults to `manage_options` (Administrator).\n\n```php\nadd_filter(\n\t'travelopia_wordpress_ai_settings_capability',\n\tfn() =\u003e 'edit_posts'\n);\n```\n\n### Actions\n\n**`travelopia_wordpress_ai_alt_text_generated`** — Fired after alt text is successfully generated for an attachment.\n\n```php\nadd_action(\n\t'travelopia_wordpress_ai_alt_text_generated',\n\tfunction ( int $attachment_id, string $alt_text ): void {\n\t\t// Log, notify, or post-process.\n\t},\n\t10,\n\t2\n);\n```\n\n---\n\n**`travelopia_wordpress_ai_bedrock_error`** / **`travelopia_wordpress_ai_open_ai_error`** — Fired when a provider encounters an error during generation.\n\n```php\nadd_action(\n\t'travelopia_wordpress_ai_bedrock_error',\n\tfunction ( string $code, string $message, array $data ): void {\n\t\t// Handle error.\n\t},\n\t10,\n\t3\n);\n```\n\n## Local Development\n\nRequires [Docker](https://www.docker.com/products/docker-desktop/) to be installed and running.\n\n```bash\nnpm run start            # install deps and start the dev environment\nnpm run wp-env:start     # start the dev environment (without installing deps)\nnpm run wp-env:stop      # stop the dev environment\nnpm run test:php:setup   # install deps in container and run PHP tests (first run)\nnpm run test:php         # run PHP tests\n```\n\n## Privacy\n\nImages are sent to your configured AI provider for analysis when generating alt text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftravelopia%2Fwordpress-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftravelopia%2Fwordpress-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftravelopia%2Fwordpress-ai/lists"}