AI/Blogfor Laravel

Changelog

Updated

Unreleased

  • Breaking: the package moved to the byteminus organisation. Install byteminus/laravel-ai-blog instead of hawkforge/laravel-ai-blog, and change use AiBlog\... to use ByteMinus\AiBlog\... in your code. Published config files need the same change.
  • Fix: the AI features now work with laravel/ai 1.x. The assistant looked for a Laravel\Ai\Facades\Ai class that laravel/ai does not have, so every AI call failed with "need the laravel/ai SDK" even when it was installed. It now sends each request through Laravel\Ai\AnonymousAgent.
  • Docs: the migrations publish tag is ai-blog-migrations (the README said laravel-ai-blog-migrations, which publishes nothing), and MCP tool names are written the way clients see them, in kebab-case (list-posts, schedule-post).
  • Website with docs, a 107-question FAQ, diagrams and an AI-readable layer (llms.txt, Markdown copies of every page): https://byteminus.github.io/laravel-ai-blog/

0.1.1 - 2026-10-14

  • SEO: post pages now send a canonical URL by default (the post's own address), og:url, og:site_name, article:modified_time, an absolute og:image and twitter:image, and a robots tag that allows large image previews; empty description tags are no longer sent
  • SEO: BlogPosting JSON-LD now includes the page url, the publisher and an absolute image
  • SEO: index, category and tag pages send a description, canonical URL, prev/next links, an RSS link and a distinct title per page of results; new ai-blog.seo.description option
  • Feed: RSS now declares its language and last build date and marks permalink GUIDs
  • Docs: README says Laravel 10 to 13 throughout, lists what the pages send to search engines and answers common questions

0.1.0 - 2026-10-14

  • Headless core: Post, Category, Tag; draft/scheduled/published lifecycle; HasBlogSeo trait for existing models
  • SEO: on-page score with fixes, TF-IDF internal-link suggestions, stale-post detection, BlogPosting + FAQPage JSON-LD
  • AI (laravel/ai): brief → draft, enrich SEO fields, rewrite, refresh suggestions, translate; FakeAssistant for tests and no-AI mode
  • MCP (laravel/mcp): BlogServer with list/get/create/update/draft-from-keyword/score/suggest-links/schedule tools and a style-guide resource
  • Commands: ai-blog:publish-scheduled, ai-blog:audit
  • Opt-in public routes, RSS feed, Blade components
  • Safe fetching: SafeFetcher with URL and IP policy, DNS pinning, robots.txt, size and time caps; RSS/Atom/RDF/JSON Feed parser; text extraction that marks fetched content as untrusted
  • Command bus: abilities, idempotency keys, dry runs and an audit trail (commands and audit_events tables)
  • Requires PHP 8.2 to 8.5 and Laravel 10 to 13; tested at the newest and the oldest dependency versions
  • Text extraction uses PHP 8.4's HTML5 parser where available and libxml2's HTML parser on older PHP

Edit on GitHubView as Markdown