CI/CD Integration Example

Run GTM Toolkit automatically on every pull request to keep marketing assets production ready.

GitHub Actions Workflow
Copy-and-paste job for linting and file generation
name: gtm-toolkit
on:
  pull_request:
    branches: [main]
    paths:
      - 'content/**'
      - 'gtm.config.js'

jobs:
  seo-quality:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - run: npx gtm-toolkit lint content/blog --format json --fail-on-error > lint-report.json
      - run: npx gtm-toolkit generate --all
      - uses: actions/upload-artifact@v4
        with:
          name: seo-artifacts
          path: |
            public/robots.txt
            public/sitemap.xml
            lint-report.json
Required Secrets
Only needed if you enable optional integrations
  • CLAUDE_API_KEY (repository secret) for `gtm-toolkit analyze` or `suggestions` steps.
  • GSC_CLIENT_EMAIL and GSC_PRIVATE_KEY for Google Search Console reporting.
  • • Consider separate environments for staging vs production keys.
Pull Request Comments
Surface lint results in reviewer-friendly format
# Example summary output
SEO Summary (8 files)
- PASS: content/blog/2025-08-05-content-linting-matters.md
- WARN: content/blog/2025-03-23-go-t-market-shifting-focus.md [SEO-004]
- ERROR: content/blog/2025-03-10-First-steps-in-AI-search-optmization.md [SEO-018] Missing alt text
Other Runners
Adapt the same workflow to other CI providers
  • • **Vercel / Netlify:** add GTM Toolkit commands to build hooks or pre-deploy checks.
  • • **GitLab CI:** run npm ci and `npx gtm-toolkit lint` inside a Node 20 image.
  • • **CircleCI:** use the cimg/node:20.11 container and persist generated files as workspace artifacts.