> ## Documentation Index
> Fetch the complete documentation index at: https://na-36-merge-docs-v2-dev-draft-into-docs-v2-20260603.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Solutions Platform Integrations

> Secrets and environment variables required by the solutions social data pipeline — the automated system that fetches YouTube, blog, Discord, GitHub, and forum data for each product page under v2/solutions/.

# Solutions Platform Integrations

## Pipeline Overview

The solutions social data pipeline fetches live content from external platforms and writes static JSX data modules into `snippets/data/social-feed-solutions/{product}/`, plus shared feed modules under `snippets/data/social-feeds/`. These files are imported by product community pages under `v2/solutions/{product}/`.

```
External APIs (YouTube, Ghost, Discord, GitHub, RSS)
        │
        ▼
GitHub Actions workflows (scheduled cron)
        │
        ▼
Fetch scripts (.github/scripts/fetch-*.js)
        │  read product-social-config.json
        ▼
Static JSX data files (snippets/data/social-feed-solutions/{product}/*.jsx + snippets/data/social-feeds/*.jsx)
        │
        ▼
React display components → MDX product pages
```

Each fetch script reads `operations/scripts/config/product-social-config.json` to determine which products have which channels configured, then writes per-product data files that are auto-committed by the workflow.

## Secrets Required

These must be configured in **GitHub Settings → Secrets and variables → Actions → Secrets**.

| Secret                  | Script                                                    | Workflow                                              | Schedule               | How to Obtain                                                                                                                                                                    |
| ----------------------- | --------------------------------------------------------- | ----------------------------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `YOUTUBE_API_KEY`       | `fetch-youtube-data.js`                                   | `update-youtube-data.yml`                             | Weekly (Sun 00:00 UTC) | [Google Cloud Console](https://console.cloud.google.com/apis/credentials) — enable YouTube Data API v3                                                                           |
| `GHOST_CONTENT_API_KEY` | `fetch-ghost-blog-data.js`                                | `update-ghost-blog-data.yml`                          | Daily (00:00 UTC)      | Ghost Admin → Integrations → Custom integration → Content API Key. Instance: `livepeer-studio.ghost.io`                                                                          |
| `DISCORD_BOT_TOKEN`     | `fetch-discord-announcements.js`                          | `update-discord-data.yml`                             | Daily (01:00 UTC)      | [Discord Developer Portal](https://discord.com/developers/applications) — create app → Bot → Token. Requires "Read Message History" permission in target announcements channels. |
| `DOCS_V2`               | Ghost blog + forum workflows                              | `update-ghost-blog-data.yml`, `update-forum-data.yml` | Daily                  | GitHub [Personal Access Token](https://github.com/settings/tokens) (Classic) with `repo` scope. Needed because `GITHUB_TOKEN` cannot trigger downstream workflows.               |
| `GITHUB_TOKEN`          | `fetch-github-discussions.js`, `fetch-github-releases.js` | `update-github-data.yml`                              | Daily (02:00 UTC)      | Auto-provided by GitHub Actions. No setup needed for CI. For local dev, create a [fine-grained PAT](https://github.com/settings/tokens) with public repo read access.            |

## RSS Blog Pipeline (No Secret Required)

| Script                   | Workflow                   | Schedule          | Notes                                                                                                                                    |
| ------------------------ | -------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `fetch-rss-blog-data.js` | `update-rss-blog-data.yml` | Daily (03:00 UTC) | Fetches public RSS feeds (Daydream Ghost RSS, Streamplace Leaflet RSS). No API key needed. Skips products that use the Ghost API script. |

## Products and Their Active Pipelines

| Product             | YouTube                                     | Blog                                         | Discord                                           | GitHub Discussions             | GitHub Releases             | Forum                            |
| ------------------- | ------------------------------------------- | -------------------------------------------- | ------------------------------------------------- | ------------------------------ | --------------------------- | -------------------------------- |
| **Daydream**        | Own channel (needs `YOUTUBE_API_KEY`)       | Ghost RSS (no key)                           | Needs `DISCORD_BOT_TOKEN` + channel IDs in config | GraphQL (needs `GITHUB_TOKEN`) | REST (needs `GITHUB_TOKEN`) | —                                |
| **Embody**          | —                                           | —                                            | Needs manual Discord config                       | Needs verification             | REST                        | Livepeer Forum (existing script) |
| **Frameworks**      | —                                           | —                                            | Needs `DISCORD_BOT_TOKEN` + channel IDs           | GraphQL (0 posts currently)    | REST (active, 8 releases)   | Own Discourse + Livepeer Forum   |
| **Livepeer Studio** | Shared channel (existing `YOUTUBE_API_KEY`) | Ghost API (existing `GHOST_CONTENT_API_KEY`) | Existing n8n → migrating to `DISCORD_BOT_TOKEN`   | GraphQL (minimal)              | REST (active)               | Livepeer Forum (existing script) |
| **Streamplace**     | —                                           | Leaflet RSS (no key)                         | Needs `DISCORD_BOT_TOKEN` + channel IDs           | GraphQL                        | — (tags only)               | Livepeer Forum                   |

## Configuration

All fetch scripts read from a central config file:

```
operations/scripts/config/product-social-config.json
```

This file maps each product to its social channels (YouTube channel ID, Discord server/channel IDs, blog RSS URL, GitHub org/repo, forum URL). Scripts skip products where the relevant field is `null` or missing.

## Setup Checklist for New Deployment

1. [ ] Add `YOUTUBE_API_KEY` to GitHub Secrets
2. [ ] Add `GHOST_CONTENT_API_KEY` to GitHub Secrets
3. [ ] Add `DISCORD_BOT_TOKEN` to GitHub Secrets — invite bot to each product Discord with "Read Message History" permission
4. [ ] Add `DOCS_V2` PAT to GitHub Secrets (for auto-commit workflows)
5. [ ] Verify `product-social-config.json` has correct channel IDs for each product
6. [ ] Enable workflow dispatch on each `update-*.yml` and trigger a manual run to verify

## Related

* `docs-guide/repo-ops/config/.env.example` — full repo env var reference (grouped by pipeline)
* `operations/scripts/config/product-social-config.json` — central product social config
* `workspace/plan/active/SOLUTIONS-SOCIAL-DATA/plan.md` — implementation plan
* `workspace/plan/active/SOLUTIONS-SOCIAL-DATA/_workspace/research/socials-research.md` — research audit
* `docs-guide/features/data-integrations.mdx` — broader data integrations map
