SuperAPI AI Directory

seo-weekly-report

Data & analytics

View repository

Updated 10-24 17:11

About this skill

SEO Weekly Report · General Engine

What it is: The complete SEO weekly report entry point for Open Analytics. Prefer the data entry points already authorized in the current working environment: GA4 can be read via Analytics MCP, while GSC and Bing Webmaster Tools can be operated via Codex's built-in browser; API scripts and platform exports are optional data retrieval paths, not prerequisites for completing the weekly report. The Agent generates a Markdown weekly report based on the evidence obtained. Python weekly-organic-performance is only a single-period page summary, not another complete weekly report.

What it is not:

  • Not a real-time dashboard (WorkBuddy, etc. read bundle JSON and build separately)
  • Not full Google Ads / social media attribution (see references/extensions.md)
  • Not a GTM/GA4 installation tutorial (the site must already have measurement connected)

Progressive loading: By default, only this file is read. When retrieving data, read references/portable/evidence-intake.md, and when drafting, read references/portable/report-template.md; other reference materials are read selectively based on the question, not mechanically loaded in full. Client configuration is provided externally; do not write client facts into this repository.

Data retrieval method: First confirm the MCPs, browser login state, APIs or exports available for this run, as well as the project's properties and permissions on each platform. When using GA MCP / the built-in browser, the client directory .envis not required to exist. Only when choosing this Skill's API collector should you set OPEN_ANALYTICS_PROJECT_ROOT and execute commands from scripts/ ; client configuration, credentials and data remain in the client directory. Do not copy client facts into public repositories.


§0 How to use

Trigger phrases

按 seo-weekly-report/SKILL.md 执行:
- 项目根:./(本文件夹)
- 报告周结束日:2026-08-23(周日,可选;默认上周日)
- 取数方式:connected(GA MCP + GSC/Bing 内置浏览器)| api | export;按实际可用来源组合
- 项目执行记录:有则提供,不强制套四个文本块
- 上周报告(可选):reports/{project-id}-seo-weekly-{prev}.md

Inputs

Input Required Description
Project properties and page scope ✅ May come from client configuration or verified project documentation; confirm the GSC, GA4 and Bing properties and the production hostname item by item
config/project-config.yaml API mode Site ID, GA4 hostname, optional thresholds and event configuration read by the collector
config/brand-query-registry.yaml When splitting by brand Brand term rules; if missing, do not report brand share
scripts/.env API mode For local API collector use only; not required in MCP / browser mode
data/seo-report-bundle-*.json API mode npm run fetch-all output; in connected and export modes, verifiable evidence can be used directly
templates/*.txt Optional Content, backlinks, observations, project status; may also be provided by project execution records
Last week's report Optional Week-over-week narrative and follow-up actions
backlink-registry.yaml + current-period Referral evidence Optional Load only when backlink Referral analysis is requested; evidence may come from MCP, the interface, exports or an API bundle

Outputs

# Deliverable Path
1 Data evidence and source records; API mode also has a merged data package Project data directory or platform records; the API package is data/seo-report-bundle-{YYYY-MM-DD}.json
2 Weekly report Markdown reports/{project-id}-seo-weekly-{YYYY-MM-DD}.md
3 Health check summary Written into report §1 + quote at the top of the document

Weekly data retrieval and drafting

  1. Confirm the report subject, page ownership, time zone, current/comparison periods, and each platform's properties. Do not mistakenly refer to full-site data as data for a particular repository page.
  2. Choose GA MCP, the logged-in Codex built-in browser, user exports, or API based on actual availability; different sources may be mixed, with no fixed priority. Record the actual date window, filters, data freshness, and unavailable items for each. When permissions are lacking or interface data is not yet fully processed, degrade honestly.
  3. When the API is configured and suitable for batch reruns, the collectors of this Skill may be run to form a bundle; when choosing other methods, this step is not required. It cannot be determined that the weekly report cannot be executed just because the project has no .env .
  4. Align the windows and page ranges of each source, verify project launch records and the previous report; every number must be traceable to current-period platform data, exports, or the bundle, then drafted according to the report template. Real data and private credentials do not enter public repositories.

For the common evidence requirements of each data retrieval method, see references/portable/evidence-intake.md; read only when the API collector is selected references/portable/api-setup.md。

Agent execution order

确认项目属性、页面范围与本次可用的取数方式
→ 读取 MCP/浏览器当期证据,或 API bundle/导出;不得只凭手动执行块写数据周报
→ 按 D0–D5 独立核对每个来源的实际周期、过滤器、维度和新鲜度;有 bundle 时读取 healthCheck 与 inputs.fetchedAt,不能把 merge 时间当来源新鲜度
→ 读取项目执行记录与可用的手动块
→ 可选读上周 reports/*.md
→ 按 references/portable/report-template.md 先建立事实与证据链,再生成 reports/*.md
→ 不编造任何当期证据中不存在的数字

All GA4 page and channel conclusions should be checked against the production hostname; in API mode, config/project-config.yaml provides the filter values, while in MCP/interface mode the actual filter conditions must be recorded to avoid localhost, preview domains, or other sites contaminating the weekly report.

Optional override

If there is project-skill-overlay.mdin the same directory, read it after finishing this file (tone, baseline, extra sections).ProhibitedReferencing paths outside the folder.


§1 Data bundle

The API collection mode is named data/seo-report-bundle-{YYYY-MM-DD}.json(date = Sunday of the current week). MCP/browser mode does not require first creating an isomorphic JSON.

Schema:references/portable/report-bundle-schema.md(schemaVersion: 1.0.0)

Validation:

python tools/validate_bundle.py data/seo-report-bundle-YYYY-MM-DD.json
python tools/week_period.py --week-end 2026-08-23

Key blocks

Block Purpose
gsc Search clicks, branded/non-branded, top queries/pages
ga4 Channels, landing pages, Key events,aiAssistant
bing Second search engine, crawl issues
content.weeklyNewPosts From content-catalog.yaml(optional)
healthCheck D0–D5 of the API bundle; when there is no bundle, manually verify the same questions and list them in the report
extensions Reserved for Ads / Social / landing×conversion (currently null)

§2 Health checks D0–D5

Detailed table:references/portable/health-check.md

Must be handled before generating the report:

ID Agent behavior on failure
D0 Label each source as MCP, browser, API, or export; for missing sources, skip only the dependent sections; a missing Bing does not invalidate the entire GSC+GA4 report
D1 false Stop unconditional week-over-week comparison; correct the period or retain the platform's actual window and clearly state that direct comparison is not possible
D2 missing dimension Mark the corresponding GSC section as "data unavailable"
D3 no GA4/Bing Skip §3 or §5
D4 below project threshold ⚠️ low page alignment rate at the top of the document; §4 cross-interpretation is conservative; unknown when there is no dual-source data
D5 false ⚠️ click volume at the top of the document exceeds the project-defined range, verify property and period; unknown when no range is configured

§3 Branded term breakdown

Rules are in config/brand-query-registry.yaml; for the logic explanation see references/portable/brand-query-split.md。

Report §2.2 uses gsc.branded / gsc.nonBranded, do not use the sum of queries to impersonate overall (anonymous queries are hidden by GSC).


§4 Report structure and writing

Drafting and acceptance specification:references/portable/report-template.md. It determines the analysis depth and dynamic sections; the page comparison summary of weekly-organic-performance cannot be treated as the complete weekly report of this Skill.

Path:reports/{project.id}-seo-weekly-{period.current.end}.md

Principles:

  • Chinese body text; URLs, event names, and English channel names are retained
  • Every number must be traceable to the current period's MCP/browser records, platform exports, or bundle; execution blocks are not a substitute for platform metrics
  • Newly collected GSC overall comes from property-level queries without dimensions and is not summed from page/query rows; when the project analyzes only some pages, the property overview cannot stand in for the project page-family total. If an old data pack is marked legacy-page-row-sum-unverified, it must be re-pulled or interpreted only against the page sample. Brand terms match only visible queries; before publishing, spot-check short brand terms for misclassification.
  • Page/query candidates retain rows from the current period, the previous period, and large changes alike; URLs/queries that were present previously but not returned this period must be retained for verification, but "not returned" is not a real 0 for this period and cannot be used to directly claim a decline.
  • The report must give specific changes, main contributors and offsets, data boundaries, and verifiable actions; a table of numbers without judgment does not count as a completed weekly report.
  • Early-stage site with 0 clicks: write "base is low, look at trend not absolute values"
  • Period-over-period comparisons only compare current / previous from the same source, of equal length, and aligned; when strict alignment is impossible, present the windows and limitations separately and do not fabricate a week-over-week comparison. When the previous period is 0, write the absolute change, not a percentage

Manual block mapping

Template file Report section Description
templates/content-weekly-block.txt Launch and observation window ===CONTENT=== interval
templates/backlinks-weekly-block.txt Conditional referral analysis ===BACKLINKS===
templates/observations-block.txt Anomaly explanations and items to be verified ===OBSERVATIONS===
templates/project-status-block.txt Decisions and next-period review ===PROJECT_STATUS===

For the format see references/portable/manual-blocks.md。


§5 Metric glossary

When Agent explains metrics, read references/portable/metrics-glossary.md(GSC clicks vs GA4 sessions, etc.).


§6 Optional extensions

Extensions load by status; do not pretend the project already provides the corresponding data just because documentation exists:

Module Status and documentation
Paid Ads Not connected;references/extensions.md §1
Social Not connected; §2
Landing page × conversion Not connected; §3
Automated reconciliation of external link registry When the project provides registry and Referral data, read references/portable/referral-analysis.md; in automatic mode, run from this Skill's scripts/ Run npm run fetch-referral-all
Dashboard Not connected; §5, read-only bundle, this package does not build a UI

Modules that are not connected may be mentioned as "to be connected". Referral mode is enabled only when the project inputs are complete,do not pretend that current-period data from any source already exists。


§7 Connection status and export mode (executable even without project API credentials)

When using GA MCP, a logged-in GSC/Bing built-in browser, or platform exports,merge does not automatically generate data packs for these sources:

  1. Directly read the current-period overview, page, and query samples of available platforms; export XLSX/CSV when precise calculation or retention is needed. For each source, record the property, actual date, search type/channel, hostname, filters, and data completion status. When there are only execution blocks and no platform metrics, only an execution record can be written.
  2. The Agent independently verifies the overview against dimension samples, does not sum visible top rows to pass them off as sitewide totals, and does not treat last week's report as this week's raw data. When dimensions are missing, trim the related sections.
  3. At the top of the document, mark the actual sources and limitations respectively, such as "GA MCP", "GSC built-in browser", "Bing built-in browser", "platform export"; do not write the entire report as just because one of the sources uses the API api-auto。

§8 Optional API Collector Commands

In the scripts/ directory:

Command Purpose
npm run fetch-gsc data/gsc-weekly-*.json
npm run fetch-ga4 data/ga4-weekly-*.json
npm run fetch-bing data/bing-weekly-*.json
npm run merge data/seo-report-bundle-*.json
npm run fetch-all All of the above

Environment variable REPORT_WEEK_END=YYYY-MM-DD(Sunday) can fix the report week.


§9 Self-check before sending to the client

See the checklist at the end of references/project-skill-contract.md :

  • No other repository paths, no client names, no internal URLs
  • .env Not in the package (only .env.example)
  • data/、reports/ desensitized or cleared
  • This SKILL + references/portable/ can run offline

§10 File Index

Path Audience
README.md Human overview
SKILL.md Agent main workflow (this file)
references/portable/api-setup.md Human API configuration
references/portable/evidence-intake.md Common evidence entry point for MCP, browser, export, and API
references/portable/report-bundle-schema.md Agent / integration
references/portable/report-template.md Agent drafting
references/portable/referral-analysis.md Optional external-link Referral attribution and special report contract
references/extensions.md Future Ads/Social/dashboard
config/*.example.yaml Rename after copying

§11 Troubleshooting

Symptom Possible cause Handling
GSC 403 / 404 The service account was not granted Full permission;GSC_SITE_URL does not match the property Check the Search Console user list and URL prefix (including trailing slash)
GA4 403 The service account was not granted Property Viewer GA4 Admin → Property access
Bing HTTP 401 API Key is invalid or the site is not verified Regenerate API Key
fetch-all Skip Bing Not set BING_API_KEY Optional; when GSC and GA4 are both available, d0_dataSource=api-auto
d1_periodAligned=false REPORT_WEEK_END is not Sunday Change it to the Sunday of that week, e.g., 2026-08-23
d4 too low GSC page path does not match GA4 landingPage Check trailing slash and multiple domains; see landing-page-rules
GSC clicks are 0 New site / wrong property URL / data delay of 2–3 days Confirm the property; for early-stage sites, look at trends
merge cannot find the file fetch was not run or REPORT_WEEK_END does not match the file name suffix Unify the environment variables and rerun
All brand terms are non-brand Not copied brand-query-registry.yaml Copy from example and fill in patterns