---
title: "Give the glossary its own page · Agent Wranglers"
url: https://agentwranglers.se/playbook/website/seo/glossary-page
updated: 2026-10-21
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Give the glossary its own page

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers). Updated 2026-10-21.

For AI agents: [llms.txt](https://agentwranglers.se/llms.txt) is a short guide that sends you to the rules your problem needs, and [rules.json](https://agentwranglers.se/playbook/website/rules.json) holds every rule of this playbook as JSON.

- Level: Recommended
- Chapter: [SEO](https://agentwranglers.se/playbook/website/seo)
- Rule: Put definitions on one glossary page with an anchor for each term. Never append a long list of terms to a hub or a landing page.
- How: A long glossary at the bottom of a hub buries what the hub is for and blurs its topic for search engines. Move it to its own address and link to it in one line from the hub. Give each term an `id`, so pages can link to one definition. Mark the page up as a schema.org `DefinedTermSet` with one `DefinedTerm` for each entry. Link each term to the standard or law that defines it, as [Cite the primary source for every rule](https://agentwranglers.se/playbook/engineering/documentation/cite-primary-sources) says.
- Check: The glossary answers 200 at its own address and is in the sitemap. Every term has a unique `id`. The hub has no more than 10 defined terms in its own text.
- Measured: On a reference site, moving 138 terms off the hub cut its source from about 2,600 to 200 words.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### HTML example

```html
<li id="csp"><strong>CSP</strong>: Content Security Policy. A header that tells browsers which scripts may load.</li>
<script type="application/ld+json">
{"@type": "DefinedTermSet", "hasDefinedTerm": [{"@type": "DefinedTerm", "name": "CSP", "description": "Content Security Policy."}]}
</script>
```

### JavaScript example

```js
const slug = term => term.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
const termAnchors = html => html.replace(/<li><strong>(.+?)<\/strong>:/g, (_, term) => `<li id="${slug(term)}"><strong>${term}</strong>:`);
```

### Python example

```python
import re

def term_anchors(html: str) -> str:
    slug = lambda term: re.sub(r"[^a-z0-9]+", "-", term.lower()).strip("-")
    return re.sub(r"<li><strong>(.+?)</strong>:", lambda m: f'<li id="{slug(m[1])}"><strong>{m[1]}</strong>:', html)
```

## Sources

- [Schema.org DefinedTermSet](https://schema.org/DefinedTermSet)

## Related rules

- [Cite the primary source for every rule](https://agentwranglers.se/playbook/engineering/documentation/cite-primary-sources) in Engineering

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/website/seo/glossary-page">Agent Wranglers website playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Link related pages both ways](https://agentwranglers.se/playbook/website/seo/two-way-related-links)
- Next: [Give paginated lists their own addresses](https://agentwranglers.se/playbook/website/seo/pagination)
- [SEO](https://agentwranglers.se/playbook/website/seo)
