{"id":231,"date":"2026-04-22T19:00:00","date_gmt":"2026-04-22T19:00:00","guid":{"rendered":"https:\/\/nassimstudio.com\/blog\/automating-content-generation-custom-wordpress-publisher-agent\/"},"modified":"2026-05-28T09:47:48","modified_gmt":"2026-05-28T09:47:48","slug":"automate-blog-writing-local-ai-interview","status":"publish","type":"post","link":"https:\/\/nassimstudio.com\/blog\/automate-blog-writing-local-ai-interview\/","title":{"rendered":"How I Automate Blog Post Writing with Local AI"},"content":{"rendered":"<p>I built a system that uses local AI to write blog posts. The AI interviews me through a CLI tool, I answer questions about my real experience, and the tool generates a WordPress-ready post. Then it publishes to my site through the WordPress REST API. We are using this exact system right now to produce this post.<\/p>\n<p>The workflow is straightforward. The AI asks me targeted questions about a topic I want to cover \u2014 specific numbers from client projects, real stories about agency work, technical details that only someone who actually did the work would know. I answer in natural language, sometimes with a few words, sometimes with full paragraphs describing a specific situation. The AI takes those answers and assembles them into a coherent blog post that reads like me \u2014 not like a generic article generator that produces the same tone for every topic.<\/p>\n<p>The key insight at the core of this system is that the AI does not generate the content from scratch. It generates the content from my specific answers. The difference is critical for quality. A model generating from scratch produces generic, surface-level content that reads like every other AI blog post on the internet. A model building from my specific answers produces content that includes real numbers \u2014 30k DA for static pages, 12-hour days at the agency, 600k DA monthly revenue \u2014 real failures, real opinions, and real context about the Algerian market. These are exactly the signals that make content valuable and pass the quality checks that platforms like AdSense require.<\/p>\n<h2 class=\"wp-block-heading\">How the Setup Works<\/h2>\n<p>The entire system runs on my local machine. Local language models through Ollama handle the conversation and content generation. A CLI tool \u2014 the one you are interacting with now \u2014 manages the interview flow: asking questions based on the topic, collecting my answers as I type them, passing them to the model for assembly into article format with the correct structure. The assembled post goes through a quality checklist that catches AI-sounding phrases like &#8220;delve into&#8221; or &#8220;in the final analysis&#8221; and flags missing details like vague claims that lack supporting evidence or specific numbers.<\/p>\n<p>Once the post passes the quality check, the same tool publishes it to my WordPress site through the REST API. It handles the authentication using credentials stored in environment variables, sets the correct category (Tools and Stack for most of my posts), preserves the original publish date for posts that are being revised instead of created fresh, and submits the formatted content as an HTML body. The whole pipeline from interview to published post takes about an hour for a 900-word article. Without the automation, the same process \u2014 writing from scratch, structuring the content, formatting for WordPress, uploading any media, setting the metadata and slug \u2014 would take three to four hours of focused work.<\/p>\n<p>No cloud services are involved in the core pipeline. No API keys for third-party AI providers. No monthly subscription to a writing tool or content generation platform. The cost is the electricity to run the local model on my GPU, which is negligible compared to any SaaS alternative. The models \u2014 Gemma 4 for mixed content and coding tasks, Qwen 2.5 Coder for pure code generation \u2014 run on my RTX 3060 Ti and generate responses within one to two seconds, which keeps the conversation flowing naturally.<\/p>\n<h2 class=\"wp-block-heading\">What Makes It Work<\/h2>\n<p>The interview format is the critical piece that makes the output authentic. Without it, the output is generic and sounds like every other AI article. With it, the output is specific to my direct experience and sounds like a real developer sharing real lessons. The AI&#8217;s role is not to invent content \u2014 it is to structure and polish the content I provide through my answers. This distinction between generation and assembly is the difference between content that sounds genuinely human and content that sounds generated by a machine.<\/p>\n<p>The models handle the assembly task well because transforming structured answers into article format is less demanding than generating original content from a vague prompt. Given clear answers to specific questions \u2014 what went wrong, what numbers changed, what the client said, what I learned \u2014 the model organizes them into a narrative structure with a hook, context, problem description, process explanation, specific results, and a takeaway. The quality depends almost entirely on the quality of the interview answers. Detailed answers with specific examples produce detailed posts. Vague answers with no specifics produce vague posts. The system does not compensate for thin input, and that is by design.<\/p>\n<h2 class=\"wp-block-heading\">The Limitations<\/h2>\n<p>The system works best for posts based on direct, personal experience. Topics where I have strong opinions formed through repeated experience, specific stories with real details, clear numbers from actual projects, and conclusions that I arrived at through trial and error produce the best results. Topics where I have no direct experience produce nothing useful because the interview reveals the lack of depth before the post is assembled. The model cannot fabricate believable detail from empty answers, and trying to do so would produce the kind of generic, thin content that the system is specifically designed to avoid.<\/p>\n<p>That limitation is actually the system&#8217;s strongest feature. It prevents the tool from generating content that I cannot genuinely stand behind with my name on it. The interview phase acts as an honesty gate: if I cannot answer the questions with real detail, specific names, and concrete numbers, the post does not get written. This keeps the blog authentic and prevents the kind of generic content that damages credibility and causes AdSense rejection.<\/p>\n<h2 class=\"wp-block-heading\">My Take<\/h2>\n<p>Automating content generation with local AI is practical and cost-effective for a solo developer who has real experience to share and wants to publish it efficiently. The technology enables faster, more consistent output, but the quality depends entirely on the human input at the interview stage. The AI is a multiplier for real experience, not a substitute for having something to say. If you have the experience and can articulate it through honest answers to specific questions, the AI can help you publish faster and more regularly. If you have nothing to say about a topic, no AI writing tool will fix that, and attempting to force it will produce content that damages your credibility. The interview-first approach ensures the content stays honest, and the local-only setup keeps the operating cost at zero beyond the hardware you already own for development work.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For the &#8216;Sovereign Developer&#8217; managing a large technical blog or a client&#8217;s content engine, &#8216;Manual Content Entry&#8217; is a cata&#8230;<\/p>\n","protected":false},"author":1,"featured_media":854,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"","rank_math_description":"I built a local AI system that interviews me about my real experience, then writes and publishes WordPress posts through the REST API. We're using it right now.","rank_math_focus_keyword":"How I automate blog post writing with local AI","rank_math_canonical_url":"","footnotes":""},"categories":[5],"tags":[17,34],"class_list":["post-231","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-freelancing","tag-automation","tag-productivity"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/posts\/231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/comments?post=231"}],"version-history":[{"count":8,"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/posts\/231\/revisions"}],"predecessor-version":[{"id":1484,"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/posts\/231\/revisions\/1484"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/media\/854"}],"wp:attachment":[{"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/media?parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/categories?post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nassimstudio.com\/blog\/wp-json\/wp\/v2\/tags?post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}