Homelab: n8n - Automating Income: A Blog Experiment


N8n

N8n can be installed in several ways. I installed it using Docker Compose on my cloud server.

However, due to issues with my Windows system, I cannot enable virtualization, which means I cannot use Docker. I can only install it via npm.

The advantage of npm is that it has broader file permissions than Docker, making it easier to manage. My workflow for video processing has relatively simple permission settings.

Compared to AI assistants like OpenClaw, I prefer established, fixed workflows like n8n, which don’t heavily rely on tokens.

Of course, this is also because my current business primarily relies on local open-source projects, which are free and unlimited.

Automated Blog

My first business is a website with text content.

Because I need my own information source, text is the simplest. At the same time, I want to test the AI capabilities of local large models.

I don’t have a graphics card, only 64GB DDR4 RAM.

I tested the Qwen series large models: 1b, 4b, 8b, 14b, 27b, 35ba3b, on my computer configuration.

1b gives 15 tokens/s, but it’s not very useful. 35ba3b gives 5 tokens/s, and it’s my primary model. What I really wanted was Qwen3.8 27b, but it only gave 1 token/s, so I gave up. After all, it’s 5 times slower, and 35b already meets my basic needs.

The process is set up as follows:

  1. Create a new WordPress blog and deploy it to a cloud server.
  2. Crawl unread RSS feeds and use Qwen3.6 35ba3b to organize the information into a single draft.
  3. Further optimize the draft for SEO, targeting search engines.
  4. Publish the draft to WordPress (currently not set to auto-publish, because I need to confirm the content before publishing to avoid sensitive, violent, or erroneous content. Also, I can manually fine-tune it as appropriate, removing the AI “flavor” and turning it into genuinely useful information).
  5. Mark the locally used RSS feeds as read to avoid reusing the same information source next time.
  6. Finally, send an ntfy notification to my phone upon completion, so I can promptly review the drafts, fine-tune them, and publish articles as appropriate, as well as keep execution data.

Cover Images

This is an optimization step. For a blog post to have a good reading experience, cover images and in-article illustrations are very important.

Given my computer’s configuration, AI suggests I can only use Stable Diffusion WebUI, which can run on the CPU, though it will be incredibly difficult.

But it doesn’t matter; I plan to let it work automatically while I sleep, so being a bit slow is fine.

I have Qwen organize the article content into image prompts.

Then, based on the prompts, it generates cover images, with dimensions adapted for Twitter, because I might share them on X later and need images with links.

Currently, generating one image takes about 20 minutes.

I have already added this step node to the blog post workflow.

At the same time, I haven’t generated in-article illustrations. One reason is that they are less important, and another is that images are very time-consuming. Adding three in-article illustrations would add another hour to the workflow, which is not cost-effective.

I’ll consider it later when I have a graphics card; the image quality will be better and faster then.

Automation Schedule

Because AI tasks almost completely fill up the memory, affecting daily computer use, I have set specific time slots for automation tasks.

They are set to execute only between 00:00 and 07:00.

And only one instance executes simultaneously within this time slot to prevent multiple instances from overflowing memory.

Also, after one workflow completes, it will resume execution after a 15-minute interval.

This setup allows for 3 to 5 blog posts to be produced overnight.

I only need to spend a little time during the day for manual review, fine-tuning, and then publishing.

Currently, I have no plans for a multi-site network. I intend to test this automated blog with about 3 articles per day.

I want to see if search engines like Google and Bing will index them, what the traffic will be like after indexing, and if I can enable Google Ads once there’s traffic, and how much the Google Ads revenue will be.

Website Revenue

The priority is ad revenue, followed by commission revenue.

For example, Amazon commissions, VPS server commissions.

Of course, these are not related to my first automated blog. I will set up a second and third automated blog when I have time.

The prerequisite is that the first blog gets indexed and the automated blog concept proves viable. If not, then the subsequent plans will be abandoned.

Currently, 5 blog posts have been published, and it’s the blog website’s second day. To check indexing, I’ll need to wait at least 3 days or a week.

Blog Settings

I set up my usual theme for the blog.

I added Google suite plugins, setting up Google Search Console and Google Analytics to view relevant data.

I added the Bing IndexNow plugin, which automatically submits URLs, facilitating Bing indexing.

I added a post view counter plugin, allowing me to see how many times each article has been viewed in the backend.

At the same time, I also added Umami’s data analytics code to the theme editor files, ensuring website data does not rely on Google.

That’s all for now; I’ll optimize other things slowly.

Tips

Some new domains, after just a few articles, can pass Google AdSense review in a few days.

Other blogs, like my original blog, have had no traffic for months and are barely indexed.

Luck plays a part, other factors play a part; you have to test to know.

Previously, writing a technical or informational blog post would take at least a few hours to organize; now, it’s all automated.

If it weren’t for manual review and fine-tuning, it would take almost no time at all.