Framework integration
Rankveo for Laravel
Publish in rankveo, render the blog on your Laravel site. Composer require, add a key, and the blog is live at /blog - with a real cache to invalidate.
rankveo/laravel Installation
Install the package in your existing Laravel project.
terminal
composer require rankveo/laravel Two steps
Install it
Laravel discovers the provider; there is nothing to register.
composer require rankveo/laravel Add your key
A blog key, available on every plan. Server-side only.
# .env
RANKVEO_BLOG_API_KEY=rk_... Read it yourself, if you want
The facade, for pages you write by hand.
use Rankveo\Laravel\Facades\Rankveo;
$articles = Rankveo::getArticles(
page: 0, limit: 10,
); Seconds, not a rebuild
A static site generator has to rebuild and redeploy to show a new article. Laravel has a real cache, so rankveo just tells it to forget what it knows.
- Takedowns are fast too Unpublishing clears the page rather than leaving it served from cache.
- Verified in constant time The bearer check ships in the package, so nobody reimplements it wrong.
- No secret, no route The endpoint is not registered at all until you set one - an open cache-buster is a free way to hammer the API.
# .env
RANKVEO_REVALIDATE_SECRET=$(openssl rand -hex 32)
# rankveo then calls, on every change:
POST /blog/rankveo/revalidate
Authorization: Bearer ...
{"revalidated": true, "slug": "..."} Worth knowing before you start
Blade you can publish
vendor:publish --tag=rankveo-views puts the templates in
your repo. Point the layout at your own and the blog sits inside
your existing site chrome.
Http::fake() works
Requests go through Illuminate’s HTTP client, so your own tests can
fake the blog without knowing anything about this package.
Cached as arrays, not objects
Since Laravel 11 the cache unserializes no classes by default, so a
cached DTO would come back as
__PHP_Incomplete_Class.
Objects are rebuilt on read instead.
Sitemap with image entries
Google will not index an image it has to find by crawling the page.
Generic sitemap packages emit only
<loc>.