Presenting you with AI Slop by Andriy Buday and Gemini: https://aislop.andriybuday.com 

I was recently challenged on why my weekly blog posts are not written by AI. I do have my strong opinions on this and arguments against it but before I delve into them I wanted to accept the challenge. So in about 3 hours of vibe coding I built an automated GitHub and Google Gemini powered workflow that picks either an idea from ideas.md file or one of my older blog posts on this website and (re-)writes a new blog post based on that and then uploads it to my dedicated aislop subdomain.

Solution based on GitHub Actions, FTP, Google Gemini

The entire project took about 3 hours from initial concept to deployment. This was pure vibe coding of ~40 git commits, a bit of setup in my bluehost, and some setup on github.

I learned about GitHub Actions fairly recently, but basically you can build a workflow based on yaml definition that would be triggered on a periodic basis. Additionally you can put your secrets into GitHub repo configuration. I placed my Gemini API key into secrets as well as I then placed my FTP access details (yes, I know it’s insecure and old school, but this is a 3-hour hack project). For FTP I created a dedicated account and only allowed a specific folder on my bluehost, where I also created a subdomain.

How it works: The workflow and Tech Specs

I asked Claude to summarize the technical details because this is what AI shines at:

Workflow:

  • GitHub Actions → triggers workflow daily → Python script picks unprocessed blog post or idea from ideas_tracking.json or blog_posts.json → load content and prompt Gemini via API with custom prompt → postprocess text to HTML → create HTML file and update blog_posts.json (database) → connect to FTP and upload files → git push changes for tracking and backup

Core Development Phases

  • Scaffolding & Engine (75m): Establishing the repository and building the Python script to handle web scraping via BeautifulSoup4 and AI integration.
  • Automation & Queueing (35m): Configuring GitHub Actions for CI/CD and implementing a JSON-based status tracker to manage 370+ URLs.
  • Refinement & UI (80m): Enhancing Gemini’s prompting for authoritative content, fixing Markdown-to-HTML rendering bugs, and building a responsive progress dashboard.

Technical Stack Highlights

  • AI & Logic: Python 3.9+, Google Generative AI (Gemini 2.0 Flash), and markdown2
  • Infrastructure: GitHub Actions for scheduling, Bluehost via FTP, and GitHub Secrets for API key management
  • Frontend & Data: Vanilla HTML/CSS/JS for the dashboard, with JSON and CSV files handling all state-tracking without a database

Thoughts (Why I am against AI generated content)

Is this the future of blogging? Maybe. Is it a future I’m excited about? Not entirely. I am definitely not going to share my AI Slop sub-blog unless that is purely to prove the point. I can barely stand all of these huge walls of text that are clearly written by AI but presented as if humans had written it. Why would you read it? You can just prompt your favorite LLM to give you answers you really need. I almost want to vomit from all this clearly AI generated text with no personal substance or real opinions. Sorry for being this vivid, but again: AI would not write that it wants to vomit because of the text it has written. 

And just to be clear, I do use LLM as a tool to help with my writing, but just not to write instead of me: Don’t Outsource Your Thinking: Why I Write Instead of Prompt

So where does the value of blog posts come from?

In my opinion the value comes from giving your own perspective, from sharing your opinions, driving your own arguments, and, yes, while bloggers can and do use LLM to find blind spots and to arrive at a stronger argument, the arguments should still come from the author, otherwise it is all just crappy AI Slop (unless that was the intention originally).

My ‘AI Slop’ bot can publish 100 posts a day, but it can’t build its own perspective. It can only synthesise perspective based on data it has received before.

My concluding argument is that efficiency in generating text does not equal value in reading text.