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

SchemaWhereToggle
BlogPostingPost pagesAlways on (via Post::getDynamicSEOData())
BreadcrumbListPost pagesAlways on
FAQPagePost pages with ## FAQ sectionschema.faq_auto (default true)
HowToPost pages with ## Steps sectionschema.howto_auto (default false)
Blog/blog indexAlways 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.