> ## Documentation Index
> Fetch the complete documentation index at: https://docs.filarank.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Structured data

> Emit a multi-node JSON-LD @graph with Organization, WebSite, BreadcrumbList, Article, FAQPage, and Product.

`<x-filarank::tags />` renders JSON-LD as a multi-node `@graph` instead of a single type. Toggle node types in config or from **SEO Settings**:

```php theme={null}
'render' => [
    'schema_types' => [
        'organization' => true,
        'website' => true,
        'breadcrumb' => true,
        'article' => true,
        'faq' => true,
        'product' => false,
    ],
],
```

## FAQ and Product nodes

Models can contribute their own schema data by implementing a contract:

```php theme={null}
use Usamamuneerchaudhary\FilaRank\Schema\Contracts\HasFaqSchema;

class Post extends Model implements HasFaqSchema
{
    /** @return list<array{question: string, answer: string}> */
    public function getFaqItems(): array
    {
        return $this->faqs->map(fn ($faq) => [
            'question' => $faq->question,
            'answer' => $faq->answer,
        ])->all();
    }
}
```

```php theme={null}
use Usamamuneerchaudhary\FilaRank\Schema\Contracts\HasProductSchema;

class Product extends Model implements HasProductSchema
{
    /** @return array<string, mixed> */
    public function getProductSchema(): array
    {
        return [
            'name' => $this->name,
            'sku' => $this->sku,
            'offers' => [
                '@type' => 'Offer',
                'price' => $this->price,
                'priceCurrency' => 'USD',
            ],
        ];
    }
}
```

FAQ structure in the body also feeds the `faq-structure` GEO check. See [GEO / AEO scoring](/geo-aeo).
