diff --git a/CHANGELOG.md b/CHANGELOG.md index 88b07d6..c66cb6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - LinkedIn social preview card in article/menu editor alongside Facebook and Twitter/X previews (#61) - `og:video` meta tag support with per-article video URL field, auto-detect MIME type for YouTube/Vimeo/direct files (#59) - Pinterest rich pin tags: `article:tag` from Joomla content tags, `product:availability` from MokoSuiteShop stock (#60) +- FAQ JSON-LD schema with auto-detection from article h3/h4 headings (#62) +- HowTo JSON-LD schema with auto-detection from ordered lists (#63) +- Event JSON-LD schema with per-article event fields (dates, venue, tickets) (#64) +- LocalBusiness JSON-LD schema with global plugin configuration (#65) +- Recipe JSON-LD schema with per-article fields (times, ingredients, nutrition) (#66) +- VideoObject JSON-LD schema for articles with video URLs (#67) +- SEO content scoring panel with 7 checks and pass/fail indicators (#68) +- Discord, Mastodon, and Slack social preview cards in editor (#69) +- Custom JSON-LD schema builder — per-article textarea for any schema.org type (#70) +- AI-powered meta tag generation with Claude and OpenAI API support (#71) +- XML sitemap generation on article save, respects noindex directives (#72) +- OG coverage dashboard in tag manager with coverage percentage (#73) +- Per-platform image resizing: Twitter 1200x600, Pinterest 1000x1500, WhatsApp 400x400 (#74) +- PHPUnit test suite with 16 unit tests for JsonLdBuilder (#75) +- OpenAPI 3.0 specification for REST API (#80) - Site-wide default OG title and description plugin parameters - Discord embed color via `theme-color` meta tag (color picker in plugin config) - LinkedIn article tags: `article:published_time`, `article:modified_time`, `article:author` @@ -45,6 +60,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - Facebook App ID and Telegram channel support - Database table `#__mokoog_tags` with multilingual unique key +### Fixed +- Add exception logging to BatchController batch skip (#76) +- Align form maxlength attributes with DB schema limits (#77) +- Add `strip_tags()` input sanitization on OG text fields (#79) +- Only emit `og:video:secure_url` for HTTPS URLs +- Only emit `og:video:width/height` for direct files, not embeds +- Consolidate duplicate MokoSuiteShop product blocks +- Fix stale `com_virtuemart` reference in SQL comment +- Use component language keys for og_video field in tag.xml + ### Changed - Consolidated article DB queries into single cached lookup — 5 queries reduced to 1 (#38) - Dynamic `og:image:width`/`og:image:height` from actual image dimensions instead of hardcoded (#39) diff --git a/README.md b/README.md index 744c839..c9d5117 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,9 @@ MokoSuiteOpenGraph gives you full control over how your Joomla content appears w - **LinkedIn** — `article:published_time`, `article:modified_time`, `article:author` - **Discord** — Custom embed color via `theme-color` meta tag - **Telegram** — `telegram:channel` for link previews +- **Mastodon/Fediverse** — `fediverse:creator` for author attribution (first extension on any CMS) +- **Pinterest** — Rich pin tags: `article:tag`, `product:availability`, `product:price` +- **og:video** — Per-article video URLs with auto MIME type detection (YouTube/Vimeo/direct) - **Facebook** — `fb:app_id` support, `og:image:width`/`og:image:height` for instant previews ### Content Management @@ -31,7 +34,8 @@ MokoSuiteOpenGraph gives you full control over how your Joomla content appears w - **Meta description** — Per-page meta description control - **Robots directive** — Per-page noindex/nofollow settings - **Canonical URL** — Custom canonical URL overrides -- **JSON-LD structured data** — Article, Product, WebPage, BreadcrumbList, Organization schemas +- **JSON-LD structured data** — Article, Product, WebPage, BreadcrumbList, Organization, FAQ, HowTo, Event, Recipe, LocalBusiness, VideoObject, and custom schemas +- **SEO content scoring** — 7-check analysis panel with pass/fail indicators in the editor ### Admin Tools - **Tag manager dashboard** — View and manage all OG records centrally @@ -39,13 +43,20 @@ MokoSuiteOpenGraph gives you full control over how your Joomla content appears w - **CSV import/export** — Bulk manage OG data via CSV files - **SEO health badges** — Visual indicators for missing descriptions, long titles, noindex - **Debug links** — Quick links to Facebook Debugger, LinkedIn Inspector, Google Rich Results -- **Live preview** — Real-time Facebook and Twitter/X card preview in the editor +- **Live preview** — Real-time Facebook, Twitter/X, LinkedIn, Discord, Mastodon, and Slack card previews in the editor +- **Character count indicators** — Green/yellow/red warnings on OG and SEO text fields +- **OG coverage dashboard** — Coverage percentage and missing field counts +- **AI meta generation** — Generate OG titles and descriptions with Claude or OpenAI ### Developer Features - **REST API** — Full CRUD via Joomla Web Services (`/api/v1/mokoog/tags`) - **MokoSuiteShop integration** — Auto-generated OG/JSON-LD for product pages with pricing meta - **Plugin event** — `onMokoOGAfterRender` for third-party plugins to add custom social tags - **OG image generator** — Text overlay on template backgrounds with auto-resize to 1200x630 +- **Per-platform image resizing** — Twitter 1200x600, Pinterest 1000x1500, WhatsApp 400x400 +- **XML sitemap** — Auto-generates sitemap.xml on article save, respects noindex +- **OpenAPI spec** — Full REST API documentation at `openapi.yaml` +- **PHPUnit tests** — 16 unit tests for JsonLdBuilder schema outputs ## Installation @@ -63,6 +74,11 @@ Navigate to **Extensions → Plugins → System - MokoSuiteOpenGraph** to config - Facebook App ID - Discord embed color - Telegram channel +- Fediverse/Mastodon creator handle +- LocalBusiness schema (address, phone, hours, geo) +- XML sitemap generation +- AI meta generation (Claude/OpenAI API key) +- Per-platform image resizing - Auto-generation, image resize, JSON-LD, and description length settings ## License