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

1

Install it

Laravel discovers the provider; there is nothing to register.

composer require rankveo/laravel
2

Add your key

A blog key, available on every plan. Server-side only.

# .env
RANKVEO_BLOG_API_KEY=rk_...
3

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>.