agenciafmd / laravel-social-meta
Social Meta for those who doesn't know for what it for
Requires
- ext-fileinfo: *
- intervention/image: ^3.11
- laravel/framework: ^12.0|^13.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-29 20:25:35 UTC
README
Gera as meta tags de SEO / Open Graph / Twitter com um único componente Blade e, quando nenhuma imagem é informada, cria automaticamente a imagem de compartilhamento (Open Graph) com o logo, o título e a URL da página.
Requisitos
- Laravel ^12.0 | ^13.0
- intervention/image ^3.11
- ext-fileinfo
- ext-imagick (a imagem é gerada com o driver Imagick do Intervention)
Instalação
composer require agenciafmd/laravel-social-meta:dev-master
O service provider e o alias OpenGraphImage são registrados automaticamente (package discovery).
Configuração
Publique o arquivo de configuração (config/social-meta.php):
php artisan vendor:publish --tag=social-meta:config
Nele ficam as dimensões e cores do card, a posição do logo e as fontes do título e da URL. As chaves de facebook sobrescrevem as de default.
| Chave | Padrão |
|---|---|
default.card |
600 x 314, fundo #f7f7f7, cor #191919 |
default.logo.path |
resource_path('images/logo.png') |
default.title.font.file |
open-sans-semi-bold.ttf do pacote, tamanho 24 |
default.title.maxlength |
48 caracteres por linha (quebra em várias linhas) |
default.url.font.file |
open-sans-regular.ttf do pacote, tamanho 14 |
O logo em
resources/images/logo.pngprecisa existir na aplicação.
Para customizar as fontes, publique-as em storage/social-meta/fonts:
php artisan vendor:publish --tag=social-meta:assets
Não esqueça de ajustar os paths das fontes em
config/social-meta.php.
Uso
Dentro do seu master.blade.php (obrigado Blade UI Kit):
<x-social-meta title="{{ $__env->yieldContent('title', 'A cultura come a estratégia no café da manhã.') }} | {{ config('app.name') }}" description="{{ $__env->yieldContent('description') }}" />
Nas views filhas:
@extends('agenciafmd/frontend::master') @section('title', 'A cultura come a estratégia no café da manhã.') @section('description', 'Esta é uma frase de Peter Drucker, considerado o pai da administração moderna.')
Atributos do componente
| Atributo | Padrão | Descrição |
|---|---|---|
title |
— (obrigatório) | Usado no <title> e no og:title |
description |
'' |
description e og:description (omitidos quando vazio) |
type |
website |
og:type |
card |
summary_large_image |
twitter:card |
image |
'' |
og:image; quando vazio, a imagem é gerada automaticamente |
url |
url()->current() |
og:url e texto impresso na imagem gerada |
author |
Agência F&MD |
author |
Saída
<title>A cultura come a estratégia no café da manhã | Laravel</title> <meta name="twitter:card" content="summary_large_image" /> <meta property="og:type" content="website" /> <meta property="og:title" content="A cultura come a estratégia no café da manhã | Laravel" /> <meta name="description" content="Esta é uma frase de Peter Drucker, considerado o pai da administração moderna." /> <meta property="og:description" content="Esta é uma frase de Peter Drucker, considerado o pai da administração moderna." /> <meta property="og:image" content="http://starternovo.local/storage/open-graph/facebook/a-cultura-come-a-estrategia-no-cafe-da-manha.png" /> <meta property="og:url" content="http://starternovo.local" /> <meta property="og:locale" content="pt_BR" /> <meta property="og:site_name" content="Laravel" /> <meta name="author" content="Agência F&MD" />
Imagem Open Graph
A imagem é gerada com o título (a parte antes do último |) e gravada uma única vez em open-graph/{type}/{slug-do-titulo}.png no disco padrão. Para gerar uma nova versão, apague o arquivo.
Também é possível usar o serviço diretamente:
use Facades\Agenciafmd\SocialMeta\Services\OpenGraphImage; $url = OpenGraphImage::generate('Título do artigo', 'https://fmd.ag/blog');
Debug
Coloque no routes/web.php e acesse /debug para visualizar o card sem gravá-lo:
use Facades\Agenciafmd\SocialMeta\Services\OpenGraphImage; Route::get('/debug', function () { return OpenGraphImage::render(); });
Testes
Os testes ficam em tests/ e usam o Tests\TestCase da aplicação, então são executados de dentro do projeto que instala o pacote:
vendor/bin/pest packages/agenciafmd/laravel-social-meta/tests
Licença
Este pacote é software livre e está disponível nos termos da licença MIT.
