drupal/geo_starter
Composer 安装命令:
composer require drupal/geo_starter
包简介
A Drupal CMS site template for a governed, GEO-friendly migration foundation with sourceable content for humans and retrieval systems.
README 文档
README
GEO Starter is a Drupal CMS site-template scaffold for teams moving from headless/composable or legacy page/post CMS stacks into a governed foundation for Generative Engine Optimization (GEO). It provides sourceable services, answers, articles, and evidence records designed to be readable by humans and inspectable by retrieval systems.
This scaffold is intentionally lean. The Starter Kit/DDEV spike proved that drush site:export can generate a valid site template after a Drupal CMS site is installed, but raw export output from the default non-interactive Starter template was too broad to ship as a lean recipe. This package starts from the verified type: Site and drupal-recipe shape instead.
Status
Stable (1.1.0). Not Marketplace-ready.
Stability contract
From 1.0.0, the 1.x line promises discipline, not in-place upgrades:
- Fresh install is the only supported path. Recipes are apply-once
configuration artifacts; no
hook_update_Nmigration ships. This is the Drupal CMS site-template posture, not a project deficiency. - Content-model freeze, additive-only. Within 1.x: no field deletions,
no field-type or storage changes, no vocabulary restructuring, no changes
to the
@idscheme or entity-type set. New optional fields and bundles may be added. Breaking changes force2.0.0. - Breaking-change documentation duty. If rule 2 must be broken (security
or data-integrity only), the release notes carry an explicit manual
migration note — as the
1.0.0-alpha4office_hourschange did. - Sample content is exempt — demo content in
content/may change freely within 1.x.
A stable-floor Composer project (default minimum-stability) can require
this recipe without any stability override. The companion module
drupal/geo_starter_jsonld carries its own parallel contract (see its README).
Current Scope
- Drupal CMS recipe package shape.
- Core modules needed for content modeling, moderation, JSON:API retrieval proof, media, taxonomy, paths, and views.
- Drupal CMS admin, media, privacy, and basic SEO recipes.
- Required package dependencies for Canvas and Paragraphs authoring lanes.
- Schema.org JSON-LD emission via the required companion module
drupal/geo_starter_jsonld(its own composer package — a recipe cannot bundle a module):Servicewith providerContactPoint/PostalAddress/hoursAvailable,Question/Answer,Article,CreativeWorkevidence records with resolvable cross-pagecitation@ids, and gatedFAQPage,HowTo, andItemListfrom section content. Full canonical published pages only; never beyond what the visible page renders. - A ten-bundle section library attached to Service, Answer, and Article nodes via
field_sections:geo_starter_section,section_faq(+_item),section_step_list(+_item),section_card_grid,section_contact_panel(structuredoffice_hours),section_cta,section_alert,section_media_text. - Four component-composed Canvas sample pages (homepage, migration landing, topic hub, campaign) plus the front-page Canvas shell, all built from stock Mercury SDCs.
- Mercury as the public frontend theme, with
geo_starter_jsonld_markupsemantic templates for the ten section bundles. - MVP content model config for Service, Answer, Article, Evidence Source, Audience and Topic.
- Public-service sample content: 4 Services, 8 Answers, 3 Articles, 6 Evidence Sources, seeded taxonomy terms, and worked FAQ, step-list, card-grid, and contact-panel sections that exercise the JSON-LD path on install.
- Planning docs frame the starter as a migration destination for headless/composable and page/post CMS patterns; importer automation is not included.
- Representative
screenshot.webpcaptured from the composed homepage on a fresh install.
GEO Readiness
This section shows what the 1.x stable line supports now, what is partial, and what remains open. It focuses on capabilities a content platform needs when search engines and AI systems decide what to cite.
Content structure and operations
| Capability | Status | What proves it today |
|---|---|---|
| Structured content model | Yes | Typed Service, Answer, Article, and Evidence Source entities with shared fields and controlled Topic and Audience vocabularies. |
| Composable content operations | Yes | Typed content, taxonomy, entity references, moderation, JSON:API, the ten-bundle section library, four component-composed Canvas pages, and an editorial dashboard View at /admin/content/geo. |
| Editorial governance | Yes | Draft → needs-review → published → archived moderation workflow across all four content types, with reviewed-date provenance. |
Retrieval and rendering output
| Capability | Status | What proves it today |
|---|---|---|
| Rendered semantic HTML | Partial | Section bundles render through geo_starter_jsonld_markup semantic templates (h2/h3 hierarchy, <dl> FAQ, <ol> steps, <address> contact, accented CTA/alert, card grid, media/text) on top of Mercury's stock styling. The node field-stack above the sections still renders through core's classless field template — a grouped provenance footer and visual de-emphasis are documented future work. A GEO-specific design system is not included. |
| Schema.org / metadata from fields | Yes, with a validation boundary | drupal/geo_starter_jsonld emits one parity-correct schema.org @graph per full canonical published page, from the same fields the page renders. Covered by PHPUnit suites in Drupal.org CI, a full-surface acceptance probe (23/23 on a fresh install), an offline schema.org domain-correctness check, and a hosted schema.org validator pass (zero errors/warnings, all four node types). Google Rich-Results findings are still pending (URL-mode run required), so no rich-result eligibility is claimed. |
| Structured API access | Yes | JSON:API (core) with published/draft access proven on a fresh install. This is a machine-readable integration surface — not, by itself, the channel through which answer engines form citations (those read rendered pages and the public web). |
Agent and ownership readiness
| Capability | Status | What proves it today |
|---|---|---|
| Agent-facing docs & machine-readable model | Yes (1.1.0) | docs/AGENT_GUIDE.md (example-first install → inspect → modify → verify loop) plus versioned, fetchable references in docs/api/ — content-model.schema.json (generated from config/, drift-guarded) and openapi.yaml (JSON:API read surface) — so agents resolve the model without stale training data. No new dependency. |
| One-command scaffolding | Yes (1.1.0) | ddev geo-install (or tools/quickstart.sh) stands up a working site in one command; timing verified on a live stack (docs/VALIDATION.md). |
| Agent write / MCP tool protocol | Planned (optional opt-in) | No write-capable agent workflow ships in the recipe. A programmatic MCP introspection/write surface is an experimental manual opt-in only (docs/OPTIONAL_MCP.md), pending a stable drupal/mcp_server release; the recipe's clean stable-floor install is never affected. |
| AI provider choice | Open | The recipe configures no AI provider; provider choice stays an open Drupal AI integration decision, with no proprietary runtime. |
| Open ownership / no lock-in | Yes | Distributed as an open Drupal recipe with no proprietary runtime dependency. |
Migration readiness
| Capability | Status | What proves it today |
|---|---|---|
| Migration destination for headless/composable and page/post stacks | Partial | A destination content model and migration map exist; turnkey importer automation is not included. |
Scope and honest limits
- AI citation, ranking, rich results, and answer-engine placement are never guaranteed. This recipe builds the structural foundation that helps; it does not promise outcomes.
- AI engines do not behave identically, so "AI visibility" is not a single switch. GEO Starter strengthens the rendered-HTML, structured-content, and cited-source path that documentation- and answer-citing engines favor. It does not, by itself, address community/forum or homepage-led citation patterns. Identify the engines your audience actually uses and measure per engine.
Provenance
This repository contains the starter package only. It does not vendor the externally hosted Drupal modules that were present in the broader research workspace. See docs/PROVENANCE.md.
Install
Fresh install only. Site templates are not served by the packages.drupal.org Composer facade, so the recipe tree is placed from its release tag.
Quick start — the wrapper script runs the verified steps below as one command (SQLite by default, for a local trial):
git clone --branch 1.1.0 https://git.drupalcode.org/project/geo_starter.git
./geo_starter/tools/quickstart.sh my-site 1.1.0
Manual path (what the script does):
composer create-project drupal/cms my-site
cd my-site
# Require the recipe's dependencies at the project root (the Drupal CMS
# installer adds these at install time; the manual path must require them):
composer require 'drupal/geo_starter_jsonld:^1.0' \
'drupal/canvas:>=1.4 <1.6' 'drupal/mercury:>=1.0.5 <1.1' \
'drupal/paragraphs:^1.20' 'drupal/entity_reference_revisions:^1.14' \
'drupal/office_hours:^1.29' 'drupal/simple_sitemap:^4.2' \
'drupal/drupal_cms_admin_ui:^2' 'drupal/drupal_cms_media:^2' \
'drupal/drupal_cms_privacy_basic:^2' 'drupal/drupal_cms_seo_basic:^2'
# Place the recipe at the release tag:
git clone --branch 1.1.0 https://git.drupalcode.org/project/geo_starter.git recipes/geo_starter
rm -rf recipes/geo_starter/.git
# Install (or use the Drupal CMS installer and select GEO Starter):
drush site:install "$(pwd)/recipes/geo_starter" \
--account-pass="$(openssl rand -base64 18)" -y
drush cron # populates /sitemap.xml
Full instructions, post-install checks, and what a successful install looks
like: docs/INSTALL.md.
Install And Release Readiness
docs/INSTALL.mddocs/LIMITATIONS.mddocs/PUBLISHING_AND_ACCEPTANCE_PLAN.mddocs/TECHNICAL_ACCEPTANCE_PLAN.mddocs/PROJECT_PAGE_DRAFT.mddocs/MARKETPLACE_SUBMISSION_PACKET.mddocs/RELEASE_CHECKLIST.mddocs/DEPENDENCIES.mddocs/CONTENT_LICENSES.mddocs/AUTHORING_MODEL.mddocs/MIGRATION_MAP.mddocs/SCHEMA_MAP.mddocs/AGENT_GUIDE.md— agent-facing install → inspect → modify → verify loopdocs/api/— versioned machine-readable content model + JSON:API OpenAPIdocs/OPTIONAL_MCP.md— experimental, opt-in MCP add-on (not shipped/required)
Validation
See docs/VALIDATION.md for the current smoke-test evidence and the helper scripts used to reproduce the sample-content and JSON:API checks.
Not In This Scaffold Yet
- GEO-specific theme/design-system implementation. The section bundles have
lightly-styled semantic rendering via
geo_starter_jsonld_markup; the node field-stack above them and a full visual design system are not included. - Google Rich-Results check on the emitted JSON-LD (schema.org hosted validator passed; URL-mode rich-results run is still pending — required before any rich-result eligibility claim).
- Turnkey source-CMS import automation.
- Marketplace submission metadata, final support commitments, or preview URL.
- Required AI provider, agent, or credential setup. (A programmatic MCP
introspection/write surface is an experimental manual opt-in only — see
docs/OPTIONAL_MCP.md— never a recipe dependency.) - An
llms.txt/agent manifest on the installed site — a recipe cannot ship docroot files; tracked as a candidatedrupal/geo_starter_jsonldfeature.
drupal/geo_starter 适用场景与选型建议
drupal/geo_starter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 drupal/geo_starter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 drupal/geo_starter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 drupal/geo_starter 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This module allows drag & drop grouping of items in a GridField
Adds text size controls and text-to-speech controls to Flarum discussion content.
Native Blade date, datetime, and date range pickers.
Symfony and Flysystem integration for the maintained KCFinder continuation.
Laravel integration for the maintained KCFinder continuation.
PHPStan rules shared across KnpLabs organization projects
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 35
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-2.0-or-later
- 更新时间: 2026-05-29