Welcome. This repo is a Grok Bot virality desk plus a starter for your own public dashboard.
You pick the accounts. The desk reads original posts that already cleared your view floor, mines the keywords and patterns, and hands you an English draft and a video tip. You stay the publisher. Nothing posts, likes, or replies on its own.
Each day it can:
- Scan your watchlist (Profiles → original posts).
- Keep posts at or above
min_views, and mark ★ posts at or abovestar_views. - Run a keyword / pattern pass on those hits and on ~20 outsider AI posts from the last ~48 hours.
- Write a full English draft from that pattern brief, plus a
video_tip. - Deliver a digest you can open before noon in your timezone.
- Refresh your GitHub Pages board: X Score, Day Target (DONE / NOT DONE), per-hit chips, Night/Day themes, and charts.
| You provide | Where it goes |
|---|---|
Your X handle (with or without @) |
board/data.json → brand_handle and operator |
Watchlist handles, without @ |
config/watchlist.json → accounts |
Timezone, min_views, star_views |
same watchlist file |
| A GitHub account for Pages | your own public repo, for example x-virality-board |
| A logged-in X session on the machine that scrapes | read-only. Never commit cookies, tokens, or API keys |
Copy the starters. Your real files stay local:
cp config/watchlist.example.json config/watchlist.json
cp board/data.example.json board/data.jsonconfig/watchlist.json, board/data.json, and board/leaderboard_ledger.json are gitignored so a later pull does not overwrite them.
Your live board is a URL you publish:
https://<your-github-user>.github.io/<your-repo>/
Example: https://ada.github.io/x-virality-board/
That URL is the only board the daily loop refreshes. Step-by-step: docs/first-run.md. Publishing details: board/SETUP.md.
https://monkeyteamvip.github.io/kiosa-board/ is a demo / example (case study and screenshots). It is someone else's board. A fork, a clone, and a marketplace import each get their own Pages URL.
| Stage | What happens | What you do | Result you should see |
|---|---|---|---|
| 1. Welcome | You learn this is a read-only desk, and you remain the publisher. | Read this page, or start a Grok Bot chat that has AGENTS.md. |
You know the output is a digest plus your own board. |
| 2. Watchlist | The desk needs accounts, a timezone, and view floors. | cp config/watchlist.example.json config/watchlist.json and replace example_account / another_handle. |
config/watchlist.json lists your handles and is not committed. |
| 3. Board identity | The starter UI reads brand_*, operator, and ui.default_theme from data.json. |
cp board/data.example.json board/data.json and set your handle and name. |
Local data.json shows @you, not a demo operator. |
| 4. Publish | GitHub Pages serves index.html + data.json from a repo you own. |
Follow board/SETUP.md or board/publish-pages.example.sh. |
https://<you>.github.io/<repo>/ loads your board. |
| 5. Daily loop | The desk scrapes, drafts, and refreshes that URL. | Run docs/daily-loop.md. Pick 1–2 drafts and post them yourself. | Noon digest in chat. Board shows today's X Score and Day Target. |
Marketplace bots should follow docs/marketplace-first-run.md on the first chat and ask for your handle and watchlist before writing any files.
- Optional morning culture check.
- Read-only watchlist scrape of original posts.
- Keyword / pattern pass, including ~20 outsiders from the last ~48 hours.
- English drafts +
video_tipwritten from those patterns. - Digest by 12:00 in your configured timezone.
- You edit and publish 1–2 posts yourself.
- Refresh
board/data.jsonand push it to your Pages repo.
Full timing: docs/daily-loop.md.
config/watchlist.json (create it from the example; do not commit it):
timezone— when "yesterday" is calculated (example file usesEurope/Moscow)min_views— floor for a hit (example:5000)star_views— highlight threshold (example:10000)accounts— handles without@. A string, or{"handle","notes"}, both work.
Anyone can fork this and track a different niche (AI tools, design, local news). The scout logic stays the same.
AGENTS.md # role card for the desk agent
README.md # you are here
ARTICLE.md # operator case study (English)
config/watchlist.example.json # starter watchlist (placeholders)
docs/first-run.md # human setup, stage by stage
docs/marketplace-first-run.md # first chat for a marketplace import
docs/daily-loop.md # how a day runs
docs/public-board.md # personal Pages vs the demo
board/index.html # single-file dashboard
board/data.example.json # schema the UI expects
board/enrich_leaderboards.py # week/month ledger (uses your operator)
board/publish-pages.example.sh # publish helper (no secrets inside)
board/SETUP.md # Pages + targets + themes
templates/ # digest shape + draft rules
examples/ # redacted sample digest
assets/ # screenshots for the article
- Experimental personal tooling. No warranty.
- The board does not collect visitor data. Theme choice stays in
localStorageon the visitor's browser. - X is read through the operator session on the machine that runs the desk. Visitor accounts are never used.
- This project is not affiliated with X Corp / Twitter, Inc.
- Third-party posts remain owned by their authors.
- View and collect only. Likes, replies, follows, DMs, and posts wait for an explicit yes for that exact action.
- Never store secrets in git.
MIT. See LICENSE. Example digests are redacted placeholders. Replace them with your own scrapes.