Public wiki

Social media & SEO

Canonical source: docs/wiki in the repository (mirrored to GitHub Wiki).

Social media & SEO

Last updated: 2026-09-17 Tasks: DC-08/09, SOCIAL-01–05, SEO-01–03, DEPLOY-02/03, GH-06, INT-01

---

Notifications (Discord + CI/CD)

TaskWhat
DC-08Success card when ci-cd.yml completes — jobs, duration, markets published, changelog excerpt, release URL
DC-09Failure card — failed job/step, Actions logs link, changelog context, rollback hint
DC-06/07Lorapok-branded embed templates + Settings preview (prerequisite)

All webhook URLs configured in Settings → Discord (not Deployments — DEPLOY-02 removes duplicate UI there).

---

Multi-platform social (SOCIAL-01)

Same template pattern as Discord, configurable per platform:

PlatformConfig in admin
DiscordSettings → Discord (existing)
X (Twitter)Settings → Social
LinkedInSettings → Social
Mastodon / BlueskySettings → Social
TelegramSettings → Social (bot token)

INT-01 (done) — Settings → Services Integrations hub panes configure Discord, social, image AI, GitHub webhooks, mail, and cred sync; dedicated tabs remain for deep links.

---

On each successful deploy:

  1. Parse CHANGELOG.md for release section → caption
  2. Generate Lorapok-themed image (SOCIAL-04 provider)
  3. Store in R2/KV gallery tagged by feature/version
  4. Admin Social Studio — preview, edit caption/hashtags, publish

SOCIAL-03 — one-click publish to all active channels with correct dimensions (feed, story, square).

SOCIAL-05 — short video (Reels/Shorts/Stories) from carousel template + optional changelog voiceover.

---

AI image providers (SOCIAL-04)

---

SEO system (SEO-01–03)

LayerImplementation
On-pageTitle/description, canonical, Open Graph, Twitter cards
Structured dataOrganization (Lorapok Labs), SoftwareApplication, WebSite
Ecosystem linksAll Lorapok product URLs in footer, JSON-LD sameAs, semantic nav
Alt / accessibilityProduct names in alt, aria-label; no keyword stuffing
Admin hub SEO-02Google Search Console, Cloudflare Web Analytics, Azure, Bing — tokens in Settings
Policies SEO-03robots.txt, sitemap, noindex admin, align LEGAL-01

Pipeline: npm run site:seo + site:seo:validate in CI.

---

GitHub webhook (GH-06)

Repo events (push, release, workflow_run) → POST /api/webhooks/github (HMAC) → Mission Control ingest → fan-out:

DestinationEventsNotes
DiscordAll enabled eventsCommunity webhook first, deployment webhook fallback
Socialrelease onlyEnabled platforms in Settings → Social (avoids push/workflow spam)

Configurable event list in Settings → GitHub.

Repo webhook setup (canonical — CLI)

Preferred: headless bootstrap from repo root (cred vault + gh; no browser console, no manual GitHub form):

npm run github:webhook:bootstrap --prefix website/admin

This saves the Mission Control webhook secret, creates or updates the repo hook (application/json, push/release/workflow_run), and runs a signed probe. Auth uses cred vault (firebase_service_account_json + admin_master_email) unless ADMIN_ID_TOKEN or ADMIN_EMAIL/ADMIN_PASSWORD is set.

Re-probe only: npm run github:webhook:probe --prefix website/admin.

Agent policy: .cursor/rules/github-webhook-bootstrap.mdc.

Manual fallback (UI only when CLI unavailable)

  1. Mission Control → Settings → GitHubSave (generates webhook secret + ingest URL).
  2. GitHub repo → Settings → Webhooks → Add webhook — URL, secret, application/json.
  3. Events: Pushes, Releases, Workflow runs.
  4. Confirm Recent webhook events in Mission Control and Discord community card.

---

Cred sync (CRED-02)

Every Settings save that touches secrets must:

  1. Write cred vault (if applicable)
  2. Sync GitHub Actions secrets + Pages secrets
  3. Confirm via health badge — never silent miss

---

Live email audit (MAIL-16)

Mission Control audits product, support, and identity addresses (format, transport, domain routing). When TESTMAIL_API_KEY + TESTMAIL_NAMESPACE are on Pages, product and support addresses also get a live outbound send + testmail inbox poll.

npm run mail:probe-deliverability --prefix website/admin

Failures log to system events and post a Discord deployment/community alert embed.

Addresses covered:

---