Essentials
Schema
Automatic JSON-LD schema emission for posts and listings.
The package emits JSON-LD schema automatically for blog content. Each schema type can be toggled in config/ink.php.
What's emitted by default
| Schema | Where | Toggle |
|---|---|---|
BlogPosting | Post pages | Always on (via Post::getDynamicSEOData()) |
BreadcrumbList | Post pages | Always on |
FAQPage | Post pages with ## FAQ section | schema.faq_auto (default true) |
HowTo | Post pages with ## Steps section | schema.howto_auto (default false) |
Blog | /blog index | Always when public-routes mode is on |
CollectionPage | /blog, /blog/category/{slug}, /blog/tag/{slug} | Always when public-routes mode is on |
FAQPage conventions
To trigger FAQPage emission, include a ## FAQ heading followed by ### Question? and a paragraph answer:
## FAQ
### Does the package auto-emit schema?
Yes — FAQ schema is on by default.
### Can I turn it off?
Set `schema.faq_auto` to `false`.
HowTo conventions
To trigger HowTo emission, opt in via schema.howto_auto = true and write a ## Steps section with ### Step Name headings:
## Steps
### Install the package
Run `composer require relaticle/ink`.
### Publish the config
Run `php artisan vendor:publish --tag=ink-config`.
Each ### heading becomes a HowToStep with auto-incremented position.
Disabling auto-detection
'schema' => [
'faq_auto' => false,
'howto_auto' => false,
],
The BlogPosting + BreadcrumbList schemas remain on regardless — they're considered baseline for any blog.
Validate your schema
After publishing, paste a post URL into Google Rich Results Test or the Schema.org Validator to confirm zero errors.