Skip to main content

Developer recipe

Send a weekly AI visibility report to Slack

Schedule Foglift's read-only brand health recipe in GitHub Actions, then post its tier, prompt, competitor, sentiment, and next-action evidence to a Slack channel.

The workflow reads existing monitoring history. It makes one API request, starts no new AI query, and preserves the complete JSON response as a build artifact.

weekly-ai-visibility-slack.yml
# .github/workflows/weekly-ai-visibility-slack.yml
name: Weekly AI visibility report

on:
  schedule:
    - cron: "0 9 * * 1"
  workflow_dispatch:

permissions:
  contents: read

jobs:
  report:
    runs-on: ubuntu-latest
    steps:
      - name: Build the weekly report
        env:
          FOGLIFT_API_KEY: ${{ secrets.FOGLIFT_API_KEY }}
          FOGLIFT_BRAND_ID: ${{ secrets.FOGLIFT_BRAND_ID }}
        run: |
          npx --yes foglift-scan@1.0.3 \
            recipe run weekly-brand-health-report \
            --workspace="${FOGLIFT_BRAND_ID}" \
            --json > weekly-report.json

      - name: Post the report to Slack
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
        run: |
          report="$(jq -er '.markdown' weekly-report.json)"
          jq -n --arg text "${report}" '{text: $text}' \
            | curl --fail-with-body --silent --show-error \
                -H "Content-Type: application/json" \
                --data-binary @- \
                "${SLACK_WEBHOOK_URL}"

      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: weekly-ai-visibility-report
          path: weekly-report.json

Ten-minute setup

Three secrets and one scheduled workflow

Create a Slack incoming webhook for the destination channel. In the GitHub repository, add the API key, brand UUID, and webhook URL as Actions secrets.

  1. 1. FOGLIFT_API_KEY. Create it from the developer settings surface. Developer access begins on Launch.
  2. 2. FOGLIFT_BRAND_ID. Pin the workspace explicitly so a multi-brand account cannot report on the wrong brand.
  3. 3. SLACK_WEBHOOK_URL. Store the Slack URL as a secret. Never commit it into the workflow.
Preview the report locally
export FOGLIFT_API_KEY=sk_fog_your_api_key
export FOGLIFT_BRAND_ID=your_brand_uuid

npx --yes foglift-scan@1.0.3 \
  recipe run weekly-brand-health-report \
  --workspace="$FOGLIFT_BRAND_ID" \
  --json \
  | jq -r '.markdown'

Report contract

Movement, evidence, and one next action

weekly-brand-health-report compares the current week with the prior week using stored evidence. Sparse sections remain explicit, so the Slack post does not present missing data as a measured zero.

Tier + prompt movement

See what changed

The paid report surfaces meaningful AI Visibility tier movement and prompt-level mention-rate changes in percentage points.

Competitors + sentiment

Keep the context

Competitor mention changes and net sentiment movement explain whether a visibility shift belongs to the brand or the category.

Recommended action

End with a decision

The final section gives the team one evidence-backed action instead of leaving a channel full of disconnected metrics.

Choose the delivery contract

Scheduled snapshot or native change alert

This recipe and the native Slack connection solve different jobs. Use the workflow for a predictable weekly review. Use the native connection when the team needs change-triggered delivery after monitoring runs.

Comparison of the scheduled Slack recipe and native Slack connection
WorkflowTriggerEvidence deliveredPlan boundary
This GitHub Actions recipeMonday at 09:00 UTC, or manual dispatchWeekly tier, prompt, competitor, sentiment, and action reportLaunch+ developer access
Native Slack connectionOrganic Mention Rate changes by at least 10 points after a completed runPrevious and current rate, prompt count, mention count, and timestampGrowth+

Pricing and request limits

One scheduled report uses one API request

The recipe reads stored evidence, so it does not consume model tokens. The API request still counts against the selected plan's daily and monthly request allowances.

Developer plan pricing and API request limits
PlanMonthly priceRequests per dayRequests per monthNative Slack
launch$49/mo501,000No
growth$129/mo2005,000Yes
enterpriseCustomCustomCustomYes

Tracked capability prompt

How to monitor AI search visibility programmatically

This recipe is the scheduled reporting answer to that job. Foglift exposes the underlying report as a named CLI, REST API, and MCP recipe, while GitHub Actions owns the clock and Slack owns the destination.

Questions

Weekly Slack report FAQ

Does the weekly Slack workflow run new AI queries?

No. For Launch and higher, weekly-brand-health-report reads stored AI Visibility tier, prompt, competitor, and sentiment evidence. Running the recipe uses an API request but does not start a new model query or spend monitoring tokens.

What does the weekly brand health report include?

For paid workspaces, the report can include AI Visibility tier movement, prompt mention-rate movement, competitor changes, sentiment movement, and one recommended next action. Sections without enough material evidence say so instead of inventing a change.

Why use a Slack incoming webhook instead of the native Slack connection?

This recipe sends a scheduled weekly snapshot through a webhook you control and works with Launch developer access. The native Slack connection begins on Growth and sends change summaries after a completed monitoring run moves Organic Mention Rate by at least 10 percentage points.

Which plan supports the weekly Slack recipe?

Developer access starts on Launch at $49 per month. Launch includes 50 API requests per day and 1,000 per month. Growth includes the native Slack connection plus 200 API requests per day and 5,000 per month.

What happens when the report has too little evidence?

The recipe returns an explicit no-material-content message and still preserves the structured JSON artifact. The workflow posts that state to Slack rather than turning missing evidence into a false decline or improvement.

Run the reporting loop

Turn stored AI visibility evidence into a weekly team decision.