Skill · Sales and Marketing · Product Engineering

AEO Publish-to-Index Pipeline

Check newly shipped pages each afternoon for crawler visibility, metadata, schema and discovery coverage. Report fixes; indexing submissions for owned sites are optional and off by default.

Sam ClaassenCreated by Sam Claassen from type.com

At a glance

AEO Publish-to-Index Pipeline is an AI skill for sales & marketing and product & engineering teams that you can use in Claude Code, Codex, or type.com. It works with Google Search Console.

Updated

What it does

  • Map merged content changes to public URLs and verify deployment.
  • Check Googlebot/GPTBot content, canonical, metadata, schema, sitemap and llms.txt.
  • Reuse existing indexing workflows and distinguish submitted URLs from confirmed indexed pages.

Before you start

  • Read-only content repository, routing conventions and custom User-Agent web fetch.
  • Owned domains, brand spelling, sitemap/llms.txt URLs and shared AEO master doc.
  • Report channel, owner label and timezone.
  • Optional verified Search Console property and existing IndexNow mechanism; explicit submit_to_index opt-in.

See an example

Example output from a sample run. Company names and figures are sample data.

Real dry run on type.com's own site and tracking, Oct 22, 2026. Nothing was posted. Some names and contact details are redacted.

Daily at 5:30pm: no channel post that day; the run thread received:

No public URLs changed since Oct 21 17:30 PT; nothing to index.

Format on a day with content merges (template, not a real run):

*Publish-to-index — <Mon D>* · <n> URLs live from <n> PRs · <n> indexed · <n> need a fix
*Do next*
1. Eng: add FAQPage schema to <URL> (PR #<n>) · <link>
*Why*
• <URL> · PR #<n> · Googlebot pass/fail · GPTBot pass/fail · schema <types> · sitemap pass/fail · llms pass/fail · IndexNow <code|skipped|report-only> · GSC <status>
Details → <master doc Changelog link>

How to use AEO Publish-to-Index Pipeline

  1. type.com: Choose Use Skill to add AEO Publish-to-Index Pipeline to your type.com workspace.
  2. Claude Code: Download the skill and extract it into ~/.claude/skills/aeo-publish-to-index-pipeline/ (or .claude/skills/aeo-publish-to-index-pipeline/ in a project). Then ask Claude to use AEO Publish-to-Index Pipeline.
  3. Codex: Download the skill and extract it into ~/.agents/skills/aeo-publish-to-index-pipeline/ (or .agents/skills/aeo-publish-to-index-pipeline/ in a repository). Then ask Codex to use AEO Publish-to-Index Pipeline.

AI agents can read this page as Markdown or fetch the raw SKILL.md.

Frequently asked questions

What is AEO Publish-to-Index Pipeline?

AEO Publish-to-Index Pipeline is an AI skill for sales & marketing and product & engineering teams that you can use in Claude Code, Codex, or type.com. It works with Google Search Console.

What does AEO Publish-to-Index Pipeline do?

Check newly shipped pages each afternoon for crawler visibility, metadata, schema and discovery coverage. Report fixes; indexing submissions for owned sites are optional and off by default.

What do I need to use AEO Publish-to-Index Pipeline?

Read-only content repository, routing conventions and custom User-Agent web fetch; Owned domains, brand spelling, sitemap/llms.txt URLs and shared AEO master doc; Report channel, owner label and timezone; Optional verified Search Console property and existing IndexNow mechanism; explicit submit_to_index opt-in.

Can I use AEO Publish-to-Index Pipeline in Claude Code or Codex?

Yes. AEO Publish-to-Index Pipeline is a standard Agent Skills folder with a SKILL.md file. Download it and extract it into ~/.claude/skills/ for Claude Code or ~/.agents/skills/ for Codex.

Who created AEO Publish-to-Index Pipeline?

Sam Claassen from type.com created AEO Publish-to-Index Pipeline. The type.com team reviews every skill before it is published in the Skills Library.

  • AEO Crawler Visibility MonitorCheck public pages daily as AI crawlers and search bots. Post regressions, save a baseline and send a Monday all-clear so hidden content gets a concrete fix.
  • AEO Lost-Citation AlertCompare yesterday's AI answers with the prior week to find lost citations, competitor takeovers and wins. Get a daily action list, referral traffic and owner-only escalation.
  • AEO Daily StandupTurn yesterday's AEO work into a daily priorities post. On Mondays, open a weekly thread with shipped work, citation changes and the oldest open actions.
  • Reddit AEO Engagement + Citation TrackingEach weekday, find up to three fresh Reddit discussions, draft helpful comments, and report which threads AI engines cite. The owner reviews and posts manually.
  • Weekly AEO & SEO ReportEach Monday, combine AI-answer visibility, AI referrals and search performance into three tracked actions. DM the owner a draft and publish to the weekly thread after approval.
  • AI Citation Target HuntEach Tuesday, rank new cited pages and fresh articles, verify existing listings, and post a 12-line action summary. Queue outreach for human review without contacting third parties.

AI for marketing teams: a practical guide

Browse the technical files
---
name: aeo-publish-to-index-pipeline
description: Check newly published pages for crawler visibility, metadata, schema, sitemap and llms.txt coverage each afternoon, then report fixes and optional owned-site indexing submissions.
---

# AEO Publish-to-Index Pipeline

Verify that newly shipped public content can be read and discovered by search and AI crawlers. Marketing and engineering teams get a short checklist, with report-only behavior by default and explicitly enabled indexing submissions for their own sites. Part of the [Answer Engine Optimization (AEO) skillset](https://type.com/library/skills/answer-engine-optimization).

## When it runs
- Recommended schedule: daily at 5:30pm in `timezone`, after publishing work and before the next morning's monitors.
- Covers changes since the previous run; default last 24 hours.
- Posts to `report_channel` only when public URLs changed; otherwise records one run-log line and stops.
- Appends URL-level results to the master doc Changelog. No DMs.

## Inputs
| Input | What it is | Example |
|---|---|---|
| `brand_name`, `brand_exclusions` | Exact brand spelling and excluded look-alikes | `example.com`, `example.ai` |
| `site_url`, `docs_url`, `owned_domains` | Your public sites and verified allowlist for indexing | `https://example.com`, `docs.example.com` |
| `content_repo`, `content_paths` | Read-only repo and paths that map to public content | `example-org/website`; marketing, posts, docs |
| `sitemap_urls`, `llms_txt_urls` | Discovery files, including child sitemap indexes | `https://example.com/sitemap.xml`, `https://example.com/llms.txt` |
| `search_console_property` | Verified property covering the owned URLs | `https://example.com/` |
| `submit_to_index` | Explicit opt-in to owned-site submissions; default false | `false` |
| `existing_indexnow_schedule` | Whether deploy/scheduled automation already submits URLs | `true` |
| `master_doc`, `report_channel`, `owner`, `timezone` | Shared log, report destination, owner label and schedule timezone | AEO master doc; `#aeo`, `@owner`, `America/Los_Angeles` |

## Before you start
- Connect GitHub read-only, web fetch with custom User-Agent support, the report channel and shared docs.
- Optional Search Console connection: read inspection data for a verified property; submission needs an interface that actually supports requesting indexing. URL Inspection alone does not submit an indexing request.
- If submissions are enabled, verify ownership of every allowed domain and use only the site's existing IndexNow mechanism and key. Never ask the owner to paste a key into chat or include it in reports.
- Find the AEO master doc, creating it with `## Changelog` on first run if missing; create a missing Changelog section without changing other existing sections. Tell the owner where it is. Docs may be type.com docs, Google Docs or Notion pages.

## Steps

### 1. Find what went live
List PRs merged in `content_repo` since the previous run, default the last 24 hours in `timezone`. Keep public-content changes: marketing pages, blog posts, guides, comparisons/alternatives, docs, llms.txt, sitemaps, schema, the skills library and trust/security pages. Ignore unrelated product/engineering PRs.

Derive added/changed public URLs from each diff and the site's routing conventions. If a PR touches shared templates, include the homepage. When deploy status is available or the site deploys on merge, wait up to 20 minutes for deployment before checking. Record pending deployment honestly.

If no public URLs changed, record one line in the run log (in type.com, the run's thread) and stop without a channel post.

### 2. Verify each URL
Fetch as Googlebot and GPTBot:
- Googlebot: `Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)`
- GPTBot: `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.2; +https://openai.com/gptbot`

Check:
- HTTP 200 and no noindex in meta robots or X-Robots-Tag.
- Self-referencing canonical; title and description present and under approximately 60/160 characters.
- Exactly one H1; parseable JSON-LD: Article/BlogPosting for posts, FAQPage where an FAQ exists, SoftwareApplication/Organization for product pages.
- OG image resolves 200; GPTBot gets more than 1,500 visible-text characters; internal links resolve.
- Brand written exactly as `brand_name` in title, metadata and structured data; schema dates match visible publish dates.
- URL appears in `sitemap_urls` or child sitemaps; marketing pages/posts appear in `llms_txt_urls`.

Some docs platforms serve `/sitemap-index.xml` rather than `/sitemap.xml`; try both before reporting a missing sitemap.

### 3. Inspect and optionally submit
Default `submit_to_index=false`: do not submit anything. Read available Search Console inspection status and report checks, existing submission evidence and remaining fixes.

When `submit_to_index=true`, only submit URLs whose final host is explicitly in `owned_domains` and covered by verified ownership. Skip redirects to other hosts and URLs with failed visibility/indexability checks; list their fixes instead.
- IndexNow/Bing: first inspect the existing site mechanism. If IndexNow already runs on deployment or a schedule, skip a duplicate submission and confirm sitemap membership. Otherwise reuse the existing mechanism/key and endpoint with host, key, keyLocation and urlList. If no existing key is found, record that and skip; never create one.
- Google: inspect each URL through the configured Search Console property. Request indexing only through a connected interface that supports that action and only within available quota. If unsupported, list a manual request for the owner; never claim inspection submitted a request. Stop at the quota and record how many remain.
- Record submission response codes and inspection statuses. Accepted submissions are not proof a page was indexed; count "indexed" only when inspection confirms it.

### 4. Report and log
Post one message using the template below. Append one dated line per URL under Changelog:
`- <YYYY-MM-DD> published <URL> (PR #<n>); indexing: IndexNow <code|skipped|report-only>, GSC <inspection/submission status>`

Use scoped appends only. Full per-URL details belong here. Confirm the required channel post succeeded before finishing.

## What it posts

One channel message, maximum 12 lines:
```text
*Publish-to-index — <Mon D>* · <n> URLs live from <n> PRs · <n> indexed · <n> need a fix
*Do next*
1. Eng: add FAQPage schema to <URL> (PR #<n>) · <link>
2. Eng: add <URL> to llms.txt (PR #<n>) · <link>
3. <owner>: resolve <exact blocker> for <URL> (PR #<n>) · <link>
*Why*
• <URL> · PR #<n> · Googlebot pass/fail · GPTBot pass/fail · schema <types> · sitemap pass/fail · llms pass/fail · IndexNow <code|skipped|report-only> · GSC <status>
Details → <master doc Changelog link>
```
At most 3 actions and 5 evidence bullets. For more than 5 URLs, show failures first and summarize passing URLs in one line: "<n> more passed all checks".

If all checks pass, exactly 3 lines: headline, "Do next: nothing.", then a URL summary/count. Include submission-disabled status if it affects an action. When quota is reached, use one action line: "agent: request GSC indexing for <n> URLs tomorrow, quota hit", with the affected URL-list link and PR reference.

## Output rules
- Do next comes before evidence. Every action has owner, verb, exact URL/file and PR, with a link.
- Use numbers and check statuses, not adjectives. No preamble, "I checked", task restatement or caveats unless they change the action.
- Hard cap: 12 channel lines; one idea per line. Details belong in the master doc.
- Distinguish live, submitted and confirmed indexed. Never inflate indexed counts from accepted submissions.

## Safety
- Read-only on every third party. Never submit forms, send email/outreach, sign up, or comment, vote or post on Reddit, X, LinkedIn or any social/community site.
- Exception: owned-site IndexNow submissions and supported owned-property indexing requests only when `submit_to_index=true`. Default is report-only. Never submit third-party URLs.
- Never change tracker prompts, monitors, personas, models or schedules. Never open PRs or edit the repo.
- Only other writes: posts to `report_channel`, creation of the missing named master doc/Changelog, and scoped Changelog appends. No DMs; any separate DM workflow must address only its configured owner.
- Never @-mention anyone or expose credentials, tokens, passwords or IndexNow keys in posts, docs or DMs.

## Example configuration
How type.com configures this skill (example).
- Owned sites: type.com and docs.type.com; brand spelling type.com, excluding type.ai; daily 5:30pm America/Los_Angeles; #b-aeo; owner Sam.
- It covers marketing, blog, guides, comparisons, docs, structured data, the public skills library and security/trust pages.
- The Oct 22, 2026 dry run found no public URLs changed. IndexNow already ran every 3 hours from live sitemap differences, so duplicate submissions were unnecessary.
- Docs discovery uses https://docs.type.com/sitemap-index.xml; its /sitemap.xml returned 404. These observations are example deployment context, not assumptions for another company.