Twitter bot
@cowsay_farm posts developer quotes as cowsay images. The content is automated end-to-end: we pick a random quote, render it through cowsay, turn it into an image, and post to Twitter. All of that is driven by our tweeter and GitHub Actions cron jobs.
The tweeter pipeline
The tweeter is a Node/Bun script that runs in CI. For each run it:
- Picks a random quote from a community-specific text file (e.g.
quotes_general.txt,quotes_js.txt,quotes_rust.txt). - Renders cowsay ASCII using the classic cowsay program, then applies lolcat-style rainbow coloring.
- Converts to an image (PNG) via headless browser (Puppeteer) and image conversion.
- Posts to Twitter via the Twitter API: image-only tweet on the main timeline and/or in a specific Twitter Community, depending on which workflow ran.
Build in Public runs use the same pipeline but prepend Day X of building the cowsay ecosystem in public: to the tweet. Each workflow is wired to a quotes file and a target (timeline or community).
Cron jobs (GitHub Actions)
We use 15 GitHub Actions workflows, each on a schedule (cron). All times are in CET. In total we post 15β21 tweets per day.
- Main timeline β 3Γ/day (08:51, 13:41, 18:21) from
quotes_general.txt. - Cowsay farm (our community) β 3Γ/day (09:30, 14:30, 19:30), same quotes.
- External communities β JavaScript, JavaScript Web Devs, softwareWithMemes, Build in Public, React, React/NextJS, Next.js, Rust, Open Source, Data & Analytics, C and Assembly, Cybersecurity, DevOps/SRE. Each has its own workflow, schedule, and quotes file. Some run every day, some every other day (odd), Open Source every 5 days.
Workflows live under .github/workflows/ and can be triggered manually via Actions β [workflow name] β Run workflow. The
schedule, community IDs, and quote-file mapping are documented in
docs/TWEET_SCHEDULE.md.
Communities we post on
We actively post developer quotes and cowsay content across these Twitter/X communities:
C and Assembly Developers.jpeg
Low-level systems programming with C and Assembly
Posts: Every 3β4 days
cowsay farm.jpeg
Our home community on Twitter/X
Posts: 2/day
Cybersecurity.jpeg
Security practitioners and ethical hackers
Posts: Every other day
Data & Analytics.jpeg
Data scientists and analytics professionals
Posts: Every 2 days
Degens.jpeg
Crypto and degen culture community
Posts: 1/day
DevOps | SRE.jpeg
DevOps engineers and site reliability engineers
Posts: Every 2β3 days
JavaScript Developers.jpeg
JavaScript developers across the ecosystem
Posts: 1/day
JavaScript Web Devs.jpeg
JavaScript web development community
Posts: Every other day
Next.js.jpeg
Next.js React framework community
Posts: Every 2β3 days
Open Source Software.jpeg
Open source contributors and maintainers
Posts: Every 5β6 days
React : NextJS Devs.jpeg
React and Next.js full-stack developers
Posts: Every 2β3 days
React.jpeg
React framework community
Posts: Every 2β3 days
Rust Programming Language.png
Rust systems programming community
Posts: Every 3β4 days
softwareWithMemes.jpeg
Developer humor and tech memes
Posts: 1/day
Solana meme coins.jpeg
Solana and meme coin crypto community
Posts: 1/day
Want us to post on your community?
Hit us up and we'll setup the bot to add some energy and engagement in your community π€
Why it matters for the ecosystem
The bot is the content engine for Cowsay: it keeps @cowsay_farm active, attracts developers into the community, and feeds the same quote culture that shows up in our NFTs and shop. Revenue from NFTs and merch goes to token buybacks and burns; the bot helps grow the audience that benefits from that loop.