Skip to main content
Lesson 12 of 12 · Grok for Marketing & Competitive Intelligence

Integrated Marketing Dashboard

Lesson 12 of 12 Updated July 30, 2026 Intermediate
On this page
  1. Centralize all your marketing intelligence
  2. Dashboard architecture
  3. Implementing the dashboard
  4. Tracking API costs
  5. Orchestrating everything with a scheduler
  6. Sample configuration
  7. Course recap
  8. Key takeaways
  9. Test your knowledge

Centralize all your marketing intelligence

You’ve learned to monitor X, analyze sentiment, generate content, produce visuals and videos, and automate your competitive reports. This final lesson ties all these elements together into an integrated marketing dashboard: a single system that gives you a real-time overview of your marketing environment.

Dashboard architecture

The integrated marketing dashboard relies on four interconnected modules:

Module 1: Monitoring and signals

Aggregates alerts from X Search, industry monitoring, and competitive monitoring. Filters and prioritizes signals by business impact.

Module 2: Sentiment and reputation

Tracks sentiment evolution for your brand and your competitors. Detects potential crises and speaking opportunities.

Module 3: Content production

Manages the creation pipeline: briefs, writing, visuals, videos, multichannel variations. Tracks the status of each production asset.

Module 4: Performance and ROI

Measures the impact of published content, Grok API usage costs, and the return on investment of your monitoring efforts.

Implementing the dashboard

Core class

from datetime import datetime, timedelta
import json

class DashboardMarketing:
    def __init__(self, client, config):
        self.client = client
        self.config = config
        self.historique = []

    def brief_matinal(self):
        """Generates the morning marketing brief."""
        today = datetime.now().strftime("%Y-%m-%d")
        yesterday = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")

        response = self.client.responses.create(
            model="grok-4.20-0309-reasoning",
            input=f"""Prepare the morning marketing brief for
            {self.config['marque']} — {today}.

            1. TODAY'S NEWS relevant to our sector
            ({self.config['secteur']})
            2. COMPETITOR ACTIVITY since yesterday on X
            3. BRAND SENTIMENT over the last 24h
            4. EMERGING TRENDS to monitor
            5. CONTENT OPPORTUNITIES for today
            6. Any ALERTS

            Format: bullet points, max 2 lines per item.
            Prioritize by business impact.""",
            tools=[
                {
                    "type": "x_search",
                    "allowed_x_handles": self.config.get(
                        "handles_concurrents", []
                    ),
                    "from_date": yesterday,
                    "to_date": today,
                    "enable_image_understanding": True
                },
                {"type": "web_search"}
            ]
        )
        return response.output_text

    def rapport_hebdomadaire(self):
        """Generates the complete weekly marketing report."""
        end = datetime.now().strftime("%Y-%m-%d")
        start = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")

        response = self.client.responses.create(
            model="grok-4.20-0309-reasoning",
            input=f"""Weekly marketing report for
            {self.config['marque']} — Week of {start} to {end}.

            SECTION 1: COMPETITIVE MONITORING
            Competitors: {', '.join(self.config.get('concurrents', []))}
            - Strategic moves detected
            - Launches and announcements
            - Positioning changes

            SECTION 2: SENTIMENT AND REPUTATION
            - Sentiment score for our brand
            - Evolution vs previous week
            - Dominant positive and negative themes
            - Comparison with competitors

            SECTION 3: INDUSTRY TRENDS
            Sector: {self.config['secteur']}
            - Emerging trends
            - Notable innovations
            - Regulations to follow

            SECTION 4: RECOMMENDATIONS
            - Top 3 priority actions
            - Content to produce this week
            - Risks to anticipate

            Structured format, quantitative data where possible.""",
            tools=[
                {
                    "type": "x_search",
                    "from_date": start,
                    "to_date": end
                },
                {"type": "web_search"}
            ]
        )
        return response.output_text

Content production module

    def pipeline_contenu(self, brief):
        """Complete content production pipeline."""
        # Step 1: Research and context
        contexte = self.client.responses.create(
            model="grok-4.20-0309-reasoning",
            input=f"""Research the current context for this brief:
            {brief}
            Find relevant data, trends, and news.""",
            tools=[
                {"type": "web_search"},
                {"type": "x_search"}
            ]
        ).output_text

        # Step 2: Multichannel writing
        contenu = self.client.responses.create(
            model="grok-4.20-0309-reasoning",
            input=f"""Brief: {brief}
            Context: {contexte}
            Brand: {self.config['marque']}

            Produce:
            1. X Post (280 chars, 1-2 hashtags)
            2. LinkedIn Post (3-5 paragraphs)
            3. Email (subject + 200-word body)

            Tone: {self.config.get('ton', 'professional')}"""
        ).output_text

        # Step 3: Visual
        visuel = self.client.images.generate(
            model="grok-imagine-image",
            prompt=f"""Marketing visual for: {brief}.
            Style: {self.config.get('style_visuel', 'modern corporate')}.
            No text in the image.""",
            extra_body={"aspect_ratio": "16:9", "resolution": "2k"},
        )

        return {
            "contexte": contexte,
            "contenu": contenu,
            "visuel": visuel.data[0].url
        }

Tracking API costs

Managing your API budget is an integral part of the dashboard:

    def estimer_couts(self, periode_jours=30):
        """Estimates Grok API usage costs."""
        couts = {
            "x_search": {
                "appels_estimes": (
                    self.config.get("scans_quotidiens", 10)
                    * periode_jours
                ),
                "cout_unitaire": 0.005,  # $5/1000
            },
            "web_search": {
                "appels_estimes": (
                    self.config.get("recherches_web_quotidiennes", 5)
                    * periode_jours
                ),
                "cout_unitaire": 0.005,
            },
            "images": {
                "appels_estimes": (
                    self.config.get("images_quotidiennes", 3)
                    * periode_jours
                ),
                "cout_unitaire": 0.02,
            },
            "videos": {
                "secondes_estimees": (
                    self.config.get("secondes_video_quotidiennes", 10)
                    * periode_jours
                ),
                "cout_unitaire": 0.05,
            }
        }

        total = sum(
            v["appels_estimes"] * v["cout_unitaire"]
            for v in couts.values()
        )

        return {
            "detail": couts,
            "total_mensuel": round(total, 2),
            "budget_quotidien": round(total / periode_jours, 2)
        }

Orchestrating everything with a scheduler

def orchestrer_dashboard(config):
    client = OpenAI(
        api_key=config["api_key"],
        base_url="https://api.x.ai/v1"
    )

    dashboard = DashboardMarketing(client, config)

    # Morning brief (every day at 8 AM)
    brief = dashboard.brief_matinal()
    envoyer_email(config["email_equipe"], "Marketing Brief", brief)

    # Weekly report (Monday morning)
    if datetime.now().weekday() == 0:
        rapport = dashboard.rapport_hebdomadaire()
        envoyer_email(
            config["email_direction"],
            "Weekly Marketing Report",
            rapport
        )

    # Cost tracking (1st of the month)
    if datetime.now().day == 1:
        couts = dashboard.estimer_couts()
        envoyer_email(
            config["email_finance"],
            "Marketing API Costs",
            json.dumps(couts, indent=2)
        )

Sample configuration

Here is an example configuration to initialize your dashboard:

CONFIG_MARKETING = {
    "marque": "Your Brand",
    "secteur": "B2B SaaS",
    "ton": "expert and accessible",
    "style_visuel": "minimalist tech, blue and black",
    "concurrents": ["Competitor A", "Competitor B", "Competitor C"],
    "handles_concurrents": [
        "competitor_a", "competitor_b", "competitor_c"
    ],
    "scans_quotidiens": 10,
    "recherches_web_quotidiennes": 5,
    "images_quotidiennes": 3,
    "secondes_video_quotidiennes": 10,
    "email_equipe": "[email protected]",
    "email_direction": "[email protected]",
    "email_finance": "[email protected]",
    "api_key": "your-xai-key"
}

Course recap

Over these 12 lessons, you’ve built a complete marketing system based on the Grok API:

  • X Monitoring: targeted search, competitor monitoring, trend detection, automated alerts
  • Content creation: multichannel writing, image and video generation, platform adaptation
  • Analysis: sentiment, competitive reports, industry monitoring, integrated dashboard

This system transforms Grok from a simple chatbot into a complete, automated, and cost-effective marketing infrastructure.

Pricing as of August 5, 2026 — prices change regularly: before any budget calculation, check the current rate card on the official xAI models and pricing page.

Key takeaways

  • An integrated marketing dashboard connects monitoring, sentiment, production, and performance
  • The automated morning brief gives your team a head start every day
  • The weekly report compiles all competitive and industry intelligence
  • Track your API costs to master your budget (often less than $50/month for a complete system)
  • Scheduler orchestration automates the whole process without manual intervention
  • Grok combines real-time search, writing, visual generation, and analysis in a single ecosystem

Test your knowledge

X monitoring and marketing production: the winning duo, verified.

1. What does X Search enable for marketing?

Answer: Track competitors, detect buzz and trends, analyze sentiment—with handle and date filters to target: the pulse of the market in real time.

2. How do you automate monitoring?

Answer: Through recurring thematic queries and competitive reports generated at fixed intervals—structured monitoring replaces scrolling.

3. What does Grok produce on the creation side?

Answer: Posts, newsletters, and landing pages, promotional images and videos (Grok Imagine)—then multichannel adaptation tailors each message to the codes of each platform.

4. How do you connect monitoring and creation?

Answer: Monitoring signals (trends, sentiment, competitor angles) feed content briefs: you publish on what’s rising, informed by what others are doing.

5. What does the integrated marketing dashboard assemble?

Answer: Automated monitoring, sentiment analysis, competitive reports, and content production—the complete observe → decide → produce → measure cycle, tooled end-to-end.

Observe the market in real time and produce immediately: that’s the competitive advantage this course has installed—the final dashboard makes it daily routine.