dev.to-post-tracker

May 15, 2026 · View on GitHub

Profile: https://dev.to/tizwildin

Markdown draft tracker and automation control plane for DEV.to outreach posts across the TizWildin / ARC / Synth ecosystem.

This repo now has three jobs:

  1. Keep clean Markdown drafts for DEV.to publishing.
  2. Plan and host a Cloudflare Worker that detects newly published DEV.to posts and syndicates them safely.
  3. Optionally archive campaign receipts into MongoDB Atlas through a small collector API for long-term SEO/discovery tracking.

Current draft files

  • AI_DESK_METER_DEVTO_POST.md — AI Desk Meter / MuseMeter foundation
  • ARC_LANGUAGE_MODULE_DEVTO_POST.md — ARC Language Module
  • ARC_STREAMMEMORY_DEVTO_POST.md — ARC-StreamMemory
  • ARC_TURBO_OS_DEVTO_POST.md — ARC Turbo OS
  • INSTRUDIO_STUDIO_VIOLIN_DEVTO.md — Instrudio / Studio Violin
  • LLMBUILDER_DEVTO_POST.md — ARC-Neuron LLMBuilder
  • PROTO_SYNTH_GRID_ENGINE_DEVTO_POST.md — Proto-Synth Grid Engine
  • SEEDED_UNIVERSE_RECREATION_ENGINE_DEVTO_POST.md — Seeded Universe Recreation Engine

Automation plan

DEV.to article published

Cloudflare Worker Cron Trigger

Fetch latest public DEV.to article

KV duplicate check

Format post by project family

Auto-post / draft / discovery lane

Optional MongoDB Atlas archive collector

Auto-post lane

These are safe first because they are controlled feeds or API-friendly destinations. v0.4.0 defaults live posting to Mastodon only until the first deployment is proven:

  • Mastodon
  • Discord webhook
  • Telegram channel
  • Bluesky planned next through AT Protocol

Draft-only lane

These should generate copy for manual approval instead of blind posting:

  • Reddit
  • Facebook groups/pages
  • LinkedIn
  • Hacker News
  • GitHub Discussions until repo/category routing is explicit

SEO/discovery lane

These are not normal social-post targets. They are directory/listing/submission targets:

  • LibHunt
  • SaaSHub
  • AlternativeTo
  • curated awesome lists
  • editorial/review outlets
  • GitHub Topics and public IO/HUB routing

Key files

FilePurpose
cloudflare-worker/src/index.jsCloudflare Worker starter for scheduled DEV.to polling and syndication
wrangler.tomlCloudflare Worker config with hourly cron and KV binding placeholder
data/syndication-targets.jsonMachine-readable target matrix
docs/CLOUDFLARE_AUTOPOSTER_PLAN.mdSetup plan and deployment instructions
docs/MASTODON_AUTOPUBLISH_SETUP.mdMastodon-specific Cloudflare setup and smoke-test guide
docs/SYNDICATION_TARGETS.mdSocial/platform target strategy
docs/LIBHUNT_AND_DISCOVERY_LANE.mdLibHunt and directory-submission strategy
docs/MONGODB_ATLAS_ARCHIVE_LAYER.mdOptional Atlas archive/campaign database plan
data/schemas/mongodb-receipt.schema.jsonReceipt payload schema for archive collector
server/mongodb-archive-api/Optional Node/Express collector that writes receipts to Atlas
docs/DEVTO_POST_AUTOMATION_ROADMAP.mdVersioned automation roadmap
Tools/DEVto-CLI.mdExisting DEV.to CLI helper notes

Quick setup

npm install
npm run check

Create Cloudflare KV namespaces:

npx wrangler kv namespace create DEVTO_AUTOPUBLISH_STATE
npx wrangler kv namespace create DEVTO_AUTOPUBLISH_STATE --preview

Paste the returned IDs into wrangler.toml, then add secrets only for the enabled targets:

npx wrangler secret put RUN_TOKEN
npx wrangler secret put MASTODON_INSTANCE
npx wrangler secret put MASTODON_TOKEN
# Optional: only after Mastodon is proven
npx wrangler secret put DISCORD_WEBHOOK_URL
npx wrangler secret put TELEGRAM_BOT_TOKEN
npx wrangler secret put TELEGRAM_CHAT_ID

# Optional Atlas archive collector webhook
npx wrangler secret put ARCHIVE_WEBHOOK_URL
npx wrangler secret put ARCHIVE_WEBHOOK_TOKEN

Test locally without posting first:

npx wrangler dev cloudflare-worker/src/index.js --test-scheduled
curl http://localhost:8787/health
curl -H "Authorization: Bearer $RUN_TOKEN" http://localhost:8787/preview
curl -H "Authorization: Bearer $RUN_TOKEN" "http://localhost:8787/run?dry_run=1"

Live manual run after the preview looks right:

curl -H "Authorization: Bearer $RUN_TOKEN" http://localhost:8787/run

Deploy:

npx wrangler deploy

Mastodon autopublish quick path

The Worker uses the Mastodon status API with a user token that has write:statuses scope. The main safety controls are:

  • /preview — formats the latest DEV.to post without posting or changing KV.
  • /run?dry_run=1 — runs the target loop but returns dry-run drafts for live targets.
  • /run?force=1 — intentionally reprocesses the latest post if you need to repost.
  • Mastodon Idempotency-Key — derived from the DEV.to article key to reduce duplicate-post risk.
  • Cloudflare KV — stores lastArticleUrl, lastRun, and stable per-article receipts.

See docs/MASTODON_AUTOPUBLISH_SETUP.md for the exact setup flow.

Optional MongoDB Atlas archive mode

For v1, Cloudflare KV is enough. Use MongoDB Atlas when you want the bigger promotion brain: searchable post history, per-platform receipts, LibHunt/submission tasks, manual-approval queues, and project-level SEO tracking.

Cloudflare KV = duplicate protection and last-run state
MongoDB Atlas = campaign archive, dashboard data, and discovery/task history

The Worker does not require MongoDB. When ARCHIVE_WEBHOOK_URL is set, it sends a receipt to the optional collector in server/mongodb-archive-api/.

cd server/mongodb-archive-api
npm install
MONGODB_URI="mongodb+srv://..." \
MONGODB_DB="tizwildin_syndication" \
ARCHIVE_WEBHOOK_TOKEN="same-token-as-worker" \
npm start

See docs/MONGODB_ATLAS_ARCHIVE_LAYER.md for collections, indexes, secrets, and security baseline.

Start with:

AUTOPOST_TARGETS = "mastodon"

Why: prove the Mastodon lane first. After that, expand to mastodon,discord,telegram,libhunt; LibHunt remains a discovery checklist receipt instead of a blind post.

Seeded Universe ecosystem update

The Seeded Universe draft includes a related-repos section linking the wider ARC/Synth stack:

  • ARC-Neuron LLMBuilder
  • ARC-Core
  • Proto-Synth Grid Engine
  • Neo-VECTR Solar Sim NASA Standard
  • TT-101 Handbook
  • ARC Language Module
  • ARC-StreamMemory

Publishing flow

  1. Write or update the Markdown draft.
  2. Publish the final article on DEV.to.
  3. Cloudflare Worker detects the latest article on schedule.
  4. Worker checks KV state to avoid duplicate reposts.
  5. Worker sends safe auto-posts and records draft/discovery tasks.
  6. Manual approval handles Reddit, Facebook, LinkedIn, HN, and GitHub Discussions when needed.
  7. Directory/discovery actions are tracked through the LibHunt/discovery lane.

Safety

  • Do not store DEV.to, Mastodon, Discord, Telegram, Bluesky, GitHub, or Meta credentials in this repo.
  • Use wrangler secret put or environment variables only.
  • Do not blind auto-post into Reddit, Facebook groups, LinkedIn, or Hacker News.
  • Keep duplicate protection enabled through KV before turning on public posting.
  • Keep DEV.to as the canonical source so SEO signals point back to one stable long-form article.