tahericreate/glossary
Composer 安装命令:
composer require tahericreate/glossary
包简介
AI-powered Glossary Bundle for Contao 5 — keyword pool, multi-step generation, SEO-focused content engine
README 文档
README
AI-powered glossary content engine for Contao 5 — keyword pool management, multi-step generation, SEO-focused entries, internal linking, and full backend control.
Status: Phase 2 (Data layer). Schema + Models + live KPIs in the dashboard. Generation pipeline comes in Phase 3+.
Requirements
- PHP 8.2+
- Contao 5.3+
- Symfony 6.4 / 7.0+
Install
composer require tahericreate/glossary
vendor/bin/contao-console contao:migrate # creates the 4 tables
vendor/bin/contao-console cache:clear --env=prod
After install, the Glossary entry appears under Content in the Contao backend.
Data model (Phase 2)
Four DCA tables, all defined with full sql specs so contao:migrate creates
them automatically:
| Table | Purpose | Key indexes |
|---|---|---|
tl_glossary_keyword |
Keyword pool with lifecycle (pending → approved → generated → published / skipped / archived) | alias (unique), status, batchId, semanticHash |
tl_glossary_entry |
The actual glossary articles (title, content, SEO meta, FAQ data, schema JSON-LD, internal links, CTA) | alias (unique), status, letter, (language, status) |
tl_glossary_job |
Generation jobs (queue, progress, tokens, cost, step tracking) | uuid (unique), status, (status, tstamp) |
tl_glossary_log |
Verbose per-job logs (closed = append-only in backend) | (jobId, tstamp) |
Status fields are backed by typed PHP enums:
Tahericreate\Glossary\Keyword\KeywordStatusTahericreate\Glossary\Entry\EntryStatusTahericreate\Glossary\Job\JobStatusTahericreate\Glossary\Job\JobType
Phase 2 file additions
| File | Purpose |
|---|---|
contao/dca/tl_glossary_keyword.php |
Keyword DCA + schema |
contao/dca/tl_glossary_entry.php |
Entry DCA + schema (versioning enabled) |
contao/dca/tl_glossary_job.php |
Job DCA + schema |
contao/dca/tl_glossary_log.php |
Log DCA (append-only) |
contao/languages/en/tl_glossary_*.php |
English labels for backend UI |
contao/config/config.php |
Registers $GLOBALS['TL_MODELS'] |
src/Keyword/KeywordStatus.php |
Lifecycle enum |
src/Entry/EntryStatus.php |
Lifecycle enum |
src/Job/JobStatus.php |
Lifecycle enum (with isTerminal(), isActive()) |
src/Job/JobType.php |
Job type enum |
src/Model/GlossaryKeywordModel.php |
Contao Model |
src/Model/GlossaryEntryModel.php |
Contao Model |
src/Model/GlossaryJobModel.php |
Contao Model |
src/Model/GlossaryLogModel.php |
Contao Model |
src/Service/KpiAggregator.php |
Aggregates COUNT-by-status for dashboard |
src/Service/SlugGenerator.php |
URL-safe, collision-free alias generation |
The dashboard now displays live counts from the database. On a fresh
install before contao:migrate runs, the aggregator tolerates missing tables
and shows zeros instead of crashing.
Roadmap
- Phase 3 — AI Client abstraction (
AiClientInterface,OpenAiClient,ClaudeClient) + Prompt Builder with Global / Dynamic layer separation - Phase 4 — Keyword Management UI: Pool generation, status workflow,
Duplicate Detection (using
semanticHashfrom Phase 2 schema) - Phase 5 — Job/Step Pipeline: Research → Prompt Assembly → AI Generation → Post-Process → Internal Linking → Publish
- Phase 6 — Scheduler + Cron
- Phase 7 — Frontend Modules (Alphabet nav, search, entry layout, related)
- Phase 8 — SEO + Schema generation + Internal Linking engine
Architecture notes
- Settings storage — JSON file in
var/glossary/config.json. API keys never touch the database. - Data storage — DCA tables (Phase 2 ✓). Status fields use string columns backed by enum classes in PHP.
- Aliases —
SlugGeneratorproduces ASCII-folded, collision-free slugs cross-table. Falls back to a random suffix in the (very rare) case of 1000 collisions. - KPIs — Read directly from DB via Doctrine DBAL (no model hydration). Tolerates missing tables on fresh installs.
- Admin-only — Every backend controller calls
assertAdmin()at the top.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: LGPL-3.0-or-later
- 更新时间: 2026-06-15