Page content and AI
Page content and suggestions
MetaCraft 1.3 can read each entry's rendered page and suggest values for its SEO fields and structured data. Every suggestion is reviewed by a person; nothing is applied on its own, including in bulk.
Reading pages
MetaCraft reads an entry's public page with an ordinary GET request to your own site (user agent MetaCraft-Capture/1.3). It keeps the page's main text, any page marks and what it recognised in the HTML. It never reads pages during a page view or while an entry is being saved: saving only notes that the page has changed.
Pages are read:
-
when you click Re-read (or Read the page) in the editor, or ask for a suggestion and the page has changed;
-
from the command line, for entries changed since they were last read:
php system/ee/eecli.php metacraft:capture # changed entries php system/ee/eecli.php metacraft:capture --all # every entry in enabled channels php system/ee/eecli.php metacraft:capture --entry=12 # one entry (also --channel=N, --site=N)Run it from cron (for example every 15 minutes) so pages are ready before anyone asks.
Only public entries are read: closed, future-dated and expired entries are skipped, and so are entries without a URL. Redirects, error responses and pages over 5 MB aren't read, and the editor says why (Troubleshooting).
If the server can't fetch its own pages by their public URL (basic auth on staging, a CDN that blocks the server, a different internal host), set Settings › AI › Page capture: a Capture URL that replaces the base URL for reading only, and a basic auth username and password (stored encrypted). Test capture reads the last page read successfully with those settings. The capture URL is never used in canonical or sitemap URLs.
Where suggestions come from
| Source | What | Applied |
|---|---|---|
| Page marks | data-schema-prop / data-schema attributes (Marking page content) |
Used directly, shown with a Marked badge |
| Page HTML | phone and email links, <address>, <time datetime>, FAQ-style questions |
Suggested for review |
| AI (when on) | titles, descriptions and structured data written from the page text | Suggested for review |
Structured data values resolve in this order: a value used on the entry → a page mark → the channel's mapped field → MetaCraft's automatic value.
In the editor

A suggestion card on the SEO title, and structured data suggested from the page: marked values are used, the rest wait for review.
- Suggest next to the SEO title, description and Open Graph title and description (with AI on), or Suggest N empty fields above the sections. A suggestion card shows the text and what it replaces, with Use, Edit and Dismiss. Use fills the field; it's saved with the rest of the form.
- If the page hasn't changed since the last suggestion, the earlier one is shown and nothing is sent. Suggest again (sends a request) asks anew.
- The Structured data tab lists Suggested from the page: marked values, and suggestions from the page HTML and AI with Use / Dismiss (and Undo after using). Suggest with AI asks for structured data. Used values are saved straight away and the JSON-LD updates.
Bulk jobs
With AI on, MetaCraft admins get a bulk job on Content SEO's Missing description and Schema incomplete views ("Suggest descriptions for 48 entries…"), and from the Overview's Needs attention card.

A bulk job says what will be sent and roughly what it costs before anything is sent.
- Confirm: how many entries will be sent, how many are skipped because their page hasn't changed, how many pages haven't been read yet, and an estimated cost range. Nothing is sent until you click Start.
- Running: entries go 5 at a time. Stop, or closing the drawer or tab, pauses the job; Content SEO then offers Resume. Entries already done aren't sent again.
- Review: current value and suggestion side by side, with Use, Edit, Dismiss and Undo, or Use all shown. Failed entries say why.
- Done: a summary of what was applied, dismissed and failed.
Suggestions you don't review stay on each entry, for review in its editor.
Privacy
- What is sent, and where: when someone asks for a suggestion or starts a bulk job, MetaCraft sends that entry's title, URL and the main text of its page (up to 24,000 characters; longer pages are trimmed and the editor says so), plus the list of fields or properties wanted, to Anthropic's API (
api.anthropic.com), using your API key. Nothing else from the entry, other entries, members or settings is sent. - When: only on Suggest, Suggest N empty fields, Suggest again, Suggest with AI, or a bulk job's Start / Resume. Never on page views, entry saves or captures. Test key sends no content.
- With AI off: nothing is sent to any AI provider. The only requests MetaCraft makes are page captures to your own site.
- Stored on your server: each entry's captured text, marks and findings (
metacraft_page_content), suggestions and their status (metacraft_suggestions), and monthly totals of requests and tokens (metacraft_ai_usage). An entry's page content and suggestions are deleted with the entry. - The key is stored encrypted with EE's encryption key (or kept in
config.php), is never written to logs, and is never sent to the browser. - Anthropic's handling of API data is covered by your agreement with Anthropic. MetaCraft doesn't ask the provider to keep or train on anything.
Costs
Requests are billed to your Anthropic account at its list prices (October 2026: Claude Haiku 4.5 $1 in / $5 out, Claude Sonnet 5.5 $2 / $10 per million tokens). A typical page is 2,000–7,000 input tokens and a description about 60 output tokens, so a description costs well under a cent with Haiku. Bulk jobs show an estimate before anything is sent, Settings › AI shows this month's usage, and unchanged pages are never sent twice.
Settings → AI
AI suggestions are off until an admin turns them on here. While they're off, MetaCraft never contacts an AI provider and no AI controls appear anywhere. Page capture, page marks and suggestions from page HTML still work.

Settings → AI: the switch, your key, models and usage.
- Enable AI suggestions: the switch. The disclosure below it says what is sent and when (Privacy).
- Provider: Anthropic (the only one in 1.3).
- API key: your own Anthropic key, from the Anthropic Console. It's stored encrypted and never shown again; the screen shows only its last four characters. Replace or Remove it, or Test key (a free call that checks the key, nothing is generated or charged). To keep the key out of the database, set it in
config.phpinstead:$config['metacraft_anthropic_key'] = 'sk-ant-…';. The screen then shows it as locked. - Models: one for titles and descriptions, one for structured data. Claude Haiku 4.5 is the default for both; Claude Sonnet 5.5 costs twice as much and is better with long or messy pages.
- Usage: requests, tokens and estimated cost for this month and last month, counted by MetaCraft. Your Anthropic invoice is the final word.
- Page capture (advanced): see Reading pages.