relaticle/ink
Filament-native content publishing for Laravel: Eloquent models, full admin for posts/categories, SEO + JSON-LD, RSS, search, Blade UI components, and 13 MCP tools for AI agents. Headless by default with optional public blog routes.
Installation
composer require relaticle/ink
php artisan migrate
Register the plugin in AppPanelProvider.php:
->plugin(\Relaticle\Ink\InkPlugin::make())
First Use Case: Headless Blog
<x-ink::post-header :post="$post" />
<x-ink::post-body :post="$post" />
Post model is passed to the view (e.g., via a controller or route model binding).First Use Case: Public Routes (Opt-in)
config/ink.php:
'features' => [
'public_routes' => true,
],
/blog immediately without writing controllers.config/ink.php for feature flags and customization.Headless Integration
use Relaticle\Ink\Models\Post;
$posts = Post::published()->latest()->get();
@push('head')
<x-ink::meta-tags :post="$post" />
<x-ink::structured-data :post="$post" />
@endpush
BlogSearch Livewire component:
<livewire:ink.blog-search />
Public Routes Mode
/blog, /blog/{slug}, etc.php artisan vendor:publish --tag=ink-views
'features' => ['feed' => true],
Filament Admin Workflow
published_at in the future for scheduling.MCP Tools for AI
$post = Post::createMcpContext([
'title' => 'AI-Generated Post',
'content' => '# Hello from AI!',
]);
MediaLibrary: Enable for featured images:
'features' => ['media_library' => true],
Requires spatie/laravel-medialibrary and migrations.
Tags Taxonomy: Enable with:
'features' => ['tags' => true],
Adds TagResource to Filament and /blog/tag/{slug} routes.
Sitemap: Integrate with spatie/laravel-sitemap:
use Relaticle\Ink\Facades\Ink;
return Ink::sitemap()->getSitemap();
Custom Post Model: Extend the base Post model for additional fields/methods:
class BlogPost extends \Relaticle\Ink\Models\Post
{
protected $casts = [
'custom_field' => 'boolean',
];
}
Public Routes Conflicts
Route::get('/blog', ...)), disable public_routes to avoid conflicts:
'features' => ['public_routes' => false],
MediaLibrary Migration
media_library to true without installing spatie/laravel-medialibrary is a no-op but may cause confusion. Ensure the package is installed:
composer require spatie/laravel-medialibrary
Slug Freezing
Feature Flag Dependencies
How can I help you explore Laravel packages today?