尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证⬡⏣⬢ community-curated archive of chainlink memes ⬢⏣⬡
翻译准备中
正在加载完整 README。
查看完整 README ↗⬢ A community-curated archive of Chainlink memes — chainlinkme.me.
Browse, search, favorite, and react. Every meme has a permalink that unfurls beautifully in Discord, Twitter, and Telegram. The memeverse flies you through the whole archive as a 3D galaxy and can rebuild your face out of it; a tag constellation maps the archive as a cosmos; weekly snapshots preserve the top 7 memes each week; a Discord slash command pulls memes into any server on demand.
GitHub repo ─► jsDelivr (image CDN, automatic)
│
│
├──► GitHub Pages (Astro, 100% pre-rendered)
│
└──► Cloudflare Worker ─► D1 (/api/reactions · /discord/interactions)
Everything else is derived at build time. The live site can be rebuilt from scratch with git clone && pnpm install && pnpm build — the only external state is the D1 reactions table, which is allowed to be lossy.
memes/ # source of truth: one .jpg/.gif/.png/.webp + one .toml per meme
site/ # Astro frontend (GitHub Pages)
worker/ # Cloudflare Worker + D1 (reactions + Discord bot)
scripts/ # build-time + one-off tooling
.github/workflows/ # CI: validate PRs, deploy on merge, weekly snapshot
/verse)Every meme in the archive as a hex tile in one WebGL 2 galaxy.
/ lights up a tag, r warps to a random meme, t starts an autopilot tour (good on a TV), ? shows the keys.#m=<slug> (every permalink has a "find it in the memeverse" button), #tag=pepe, #tour, #assemble, and #callsign=rory-clippy-fud, which flies a ccip.dev LinkMarine through the three dog-tag tags their callsign was drawn from./verse/#assemble)Drop in a photo (or take a selfie, or pick a meme, or the chainlink mark) and the galaxy pours out of its orbits to rebuild it as a honeycomb portrait made of the archive. Download it as a hex PFP or a poster, share it, or record a clip of the galaxy assembling it (MP4 where the browser can encode it, WebM otherwise; filmed straight off the canvas, no UI).
site/src/lib/tag-rail.ts); one tap filters the wall/m/<slug>) with full OG + Twitter cardsr for a random meme; / to focus search; j/k to navigate; f to favorite; i to copy the image; ? for the full keymapprefers-color-scheme)atlas/hero.webp, ~145 KB) is rendered by scripts/build-verse-og.ts/api/reactions, edge-cachedlikes table preserved so pre-migration hearts still count/map)/week)site/src/data/weekly/YYYY-Www.jsonSummon any meme in your Discord server with /clmeme <tag>:
/clmeme sergey → a random sergey meme/clmeme moon wagmi → a meme matching either tag (weighted by score)/clmeme → a random meme from the archiveServer admins only need applications.commands scope — no bot user, no gateway, no ongoing permissions. Every invocation hits the Cloudflare Worker, which verifies Discord's Ed25519 signature and embeds the meme inline.
Summon any meme in Telegram with either entry point:
@chainlinkmemebot sergey in any chat. A picker appears; tap a thumbnail to send the meme. Works in DMs, groups, channels, and comment threads — no install step, no bot permissions./clmeme sergey. Empty query returns a random meme.Like the Discord bot, there's no gateway or polling — Telegram POSTs each update to the Cloudflare Worker (/telegram/webhook), which verifies the secret-token header and replies with the send-photo action inline.
Once a day at 14:00 UTC, /tweet-daily posts the meme-of-the-day — the same meme the site's hero shows — as a native image (the GIF itself for animated memes) with its tags. The post carries no link on purpose: a URL-free post bills at X's $0.015 Post: Create rate instead of the $0.200 Content: Create with URL rate, and native media out-reaches link posts on X anyway.
Secrets (X_API_KEY / X_API_SECRET / X_ACCESS_TOKEN / X_ACCESS_SECRET) live in GitHub Actions.
Each permalink has a save as sticker button that exports to Signal-spec 512×512 — WebP for static memes, APNG for animated (≤300 KB, ≤3s loop). The APNG branch runs UPNG quantization entirely in-browser, adaptively dropping the color palette until it fits the 300 KB budget; the whole encoder bundle is lazy-loaded (~95 KB) and only ships when someone actually clicks the button. Drop the output straight into Signal, Telegram, Discord, or Slack.
Every meme has a pre-rendered 1200×630 OG card (baked by scripts/build-og-images.ts with Satori + Resvg, CI-cached by content hash). The home page has a custom 77-meme honeycomb mosaic. The memeverse's card (og/_verse.png) is the real galaxy layout, projected and composited by scripts/build-verse-og.ts.
/grid)Every meme in the archive, at once, as a single hex tessellation. Wheel to zoom, drag to pan, click any tile to open. Zoomed out, tiles come from the memeverse's sprite sheets (two images for the whole archive); full images take over as you zoom in.
Press s anywhere on the site for fullscreen one-meme-at-a-time mode. Space / → for next, ← for previous, Esc to exit. Unlisted — find it in the ? help dialog.
The canonical data source is manifest.json — the full archive, CORS-open, regenerated on every deploy. Worker endpoints on top of it:
| Endpoint | Description |
|---|---|
GET /api/random | JSON for a random meme. ?tag=xxx filters by tag. ?redirect=1 returns a 302 to the permalink. |
GET /api/search?q=... | Tag + synonym + title/description search. &limit=N (default 24, max 100). |
GET /api/tags | Every tag with its meme count, sorted by popularity. |
GET /api/reactions | Bulk { slug: { heart, laugh, bolt, diamond } } map (edge-cached 60s). |
Worker base URL: https://chainlinkmeme-api.pilgrim.workers.dev.
Each permalink has a copy embed button that gives you an <iframe> snippet you can drop into blogs, Notion, Discord embeds, etc. The embed page lives at /embed/:slug.
pnpm install
pnpm --filter site dev # site at http://localhost:4321
pnpm --filter worker dev # worker at http://localhost:8787
pnpm --filter site build # pre-render every meme page (~1,800 pages, ~5s)
Useful workspace scripts:
pnpm manifest # regenerate site/public/manifest.json from memes/*.toml
pnpm og # rebuild OG images (cache-friendly)
pnpm atlas # pack the memeverse's sprite sheets + mosaic features, render its OG card
pnpm validate # PR-style schema + vocab + uniqueness checks
pnpm weekly # compute this week's top-7 snapshot
pnpm tweet:daily -- --dry-run # preview today's daily post
pnpm discord:register # (re)register the /clmeme slash command
pnpm telegram:register # (re)register Telegram webhook + bot commands
Drop yourfile.jpg + yourfile.toml into memes/, open a PR.
title = "short display title" # optional
tags = ["sergey", "moon"] # required, must exist in memes/_vocab.toml
description = "context or lore" # optional
credit = "@someone" # optional
source_url = "https://..." # optional
nsfw = false # default false
# submitted_by + date_added are auto-filled by CI
See CONTRIBUTING.md for the full walkthrough.
main → deploy.yml runs three jobs:
backfill-meta — auto-fills submitted_by and date_added on new TOMLs, commits backbuild-and-deploy — builds manifest, renders OG images, packs the memeverse atlas, runs astro build, publishes to GitHub Pagesdeploy-worker — ships the Worker via wrangler deployweekly.yml writes the new snapshot and commits it to mainD1 migrations under worker/migrations/ are applied with pnpm wrangler d1 migrations apply chainlinkmeme --remote.
LICENSE)