sajadsdi/laravel-seo-booster
Laravel package to help boost your site’s SEO by managing common on-page metadata like titles, descriptions and social tags. Designed to integrate into Laravel apps to improve search visibility and sharing previews with minimal setup.
Installation:
composer require sajadsdi/laravel-seo-booster
Publish the package configuration (if applicable):
php artisan vendor:publish --provider="Sajadsdi\SeoBooster\SeoBoosterServiceProvider"
First Use Case:
use Sajadsdi\SeoBooster\Facades\SeoBooster;
// In a controller or blade template
SeoBooster::setTitle('Page Title');
SeoBooster::setDescription('Page description for SEO');
SeoBooster::setKeywords(['keyword1', 'keyword2']);
SeoBooster::setCanonicalUrl(url()->current());
php artisan seo:sitemap
Where to Look First:
README.md for basic setup (if available).Sajadsdi\SeoBooster\SeoBoosterServiceProvider for bindings and boot logic.SeoBooster facade for quick meta tag management.php artisan list
Dynamic Meta Tags:
// app/Http/Middleware/SetSeoTags.php
public function handle(Request $request, Closure $next) {
SeoBooster::setTitle(config("seo.routes.{$request->route()->getName()}.title"));
return $next($request);
}
@inject('seo', 'Sajadsdi\SeoBooster\Facades\SeoBooster')
<title>{{ $seo->getTitle() }}</title>
<meta name="description" content="{{ $seo->getDescription() }}">
Sitemap Management:
// config/seo.php
'sitemap' => [
'priority' => 0.8,
'changefreq' => 'daily',
'routes' => [
'home' => '/',
'about' => '/about',
],
],
php artisan seo:sitemap
// app/Console/Kernel.php
protected function schedule(Schedule $schedule) {
$schedule->command('seo:sitemap')->daily();
}
Open Graph (OG) and Twitter Cards:
SeoBooster::setOgTitle('Open Graph Title');
SeoBooster::setOgDescription('Open Graph Description');
SeoBooster::setOgImage(url('images/og-image.jpg'));
SeoBooster::setTwitterCard('summary_large_image');
SEO Analytics:
Development Workflow:
php artisan seo:debug (if available) to inspect current SEO settings.# .github/workflows/deploy.yml
- name: Generate Sitemap
run: php artisan seo:sitemap
Content Management:
$seoData = SeoModel::where('slug', $slug)->first();
SeoBooster::setTitle($seoData->title);
Multi-Language SEO:
$locale = app()->getLocale();
SeoBooster::setTitle(__("seo.{$locale}.title"));
Middleware Integration:
Route::middleware(['set.seo.tags'])->group(function () {
// Routes with SEO tags
});
Blade Directives:
// app/Providers/BladeServiceProvider.php
Blade::directive('seo', function ($expression) {
return "<?php echo Sajadsdi\SeoBooster\Facades\SeoBooster::{$expression}(); ?>";
});
Usage:
<title>@seo('getTitle')</title>
Testing:
public function test_seo_tags_are_set() {
$response = $this->get('/');
$response->assertSee('<title>Page Title</title>');
$response->assertSee('<meta name="description" content="Page description for SEO">');
}
Performance Optimization:
$seoCacheKey = "seo:{$slug}";
$seoData = Cache::remember($seoCacheKey, now()->addHours(1), function () use ($slug) {
return SeoModel::where('slug', $slug)->first();
});
SeoBooster::hydrate($seoData);
Configuration Overrides:
php artisan vendor:publish --provider="Sajadsdi\SeoBooster\SeoBoosterServiceProvider" --tag=config
Middleware Conflicts:
$request globally).$request unless necessary.Sitemap Generation:
'sitemap' => [
'exclude' => [
'admin.*',
'login',
],
],
Database Dependencies:
Caching Issues:
php artisan cache:clear
php artisan view:clear
Facade vs. Direct Usage:
public function __construct(private SeoBooster $seoBooster) {}
SEO Debugging:
php artisan seo:debug to log current SEO settings.Sitemap Debugging:
sitemap.xml for correctness.Logging:
// config/logging.php
'channels' => [
'seo' => [
'driver' => 'single',
'path' => storage_path('logs/seo.log'),
'level' => 'debug',
],
],
\Log::debug('SEO Tags', [
'title' => SeoBooster::getTitle(),
'description' => SeoBooster::getDescription(),
]);
Missing Config:
php artisan vendor:publish --provider="Sajadsdi\SeoBooster\SeoBoosterServiceProvider" --tag=config
**
How can I help you explore Laravel packages today?