{"slug": "how-i-redesigned-4-years-of-blog-posts-196-of-them-overnight-with-ai", "title": "How I Redesigned 4 Years of Blog Posts (196 of them!) Overnight with AI", "summary": "A solo developer automated the overnight renewal of 196 blog posts on aicoreutility.com using Gemini Flash-Lite, after Google AdSense rejected the site for \"insufficient content quality.\" The pipeline archived 31 low-value posts, rewrote 143 posts at a cost of approximately ₩300 total, and fixed issues including outdated year references and Korean-language slugs. The developer has reapplied to AdSense and is awaiting approval.", "body_md": "📅 Written on 2026-05-10 — A retrospective on the actual renewal of aicoreutility.com, which I operate myself.\n\nWhen I applied to AdSense for aicoreutility.com, I received a clear rejection reason: **\"Insufficient content quality.\"** I had migrated 196 posts from Tistory, where I had written for 4 years, onto the site. Over half of these posts were short (under 1500 characters) and old (from 2020-2023).\n\nI had two options:\n\nI'm a solo developer. I don't have time to rewrite 196 posts while taking care of my family. So, I built an automated renewal pipeline using Gemini Flash-Lite.\n\nNot every post is worth saving. Valueless posts are a negative for SEO. I archived 31 posts based on two criteria.\n\n```\n-- Posts that are very short and have almost no views\nUPDATE blog_posts SET status='archived'\nWHERE length(content_original) < 1500 AND view_count <= 3;\n\n-- Posts of moderate length + low value + old\nUPDATE blog_posts SET status='archived'\nWHERE length(content_original) < 2500\n  AND view_count <= 2\n  AND ai_score < 7\n  AND original_published_at < '2024-01-01';\n```\n\n199 posts → 168 posts. I lost 31 posts, but the average quality increased.\n\nA simple \"rewrite this post\" prompt leads to hallucinations. I broke it down into 5 stages.\n\nThe model used was `gemini-2.5-flash-lite`\n\n. Cost per post is about ₩2.\n\nWhen I reviewed the first batch of results, the post body contained phrases like **\"5 things in 2024.\"** It's currently 2026. Gemini was using old years from its training data.\n\nI added the current KST time at the beginning of every stage's prompt.\n\n``` php\ndef _now_context() -> str:\n    now = datetime.now(KST)\n    return (\n        f\"[Current Time — Must Adhere]\\n\"\n        f\"Today is {now.strftime('%Y년 %m월 %d일')} (KST).\\n\"\n        f\"When referring to years/time periods, please use {now.year} as the basis. \"\n        f\"Do not arbitrarily use old years from training data (like 2023, 2024, etc.).\\n\"\n    )\n```\n\nSolved.\n\nI ran 130 posts at once, but it stopped halfway due to Gemini API rate limits. It halted at post 49. Would running it again start from scratch?\n\nI added an HTML marker at the end of each post.\n\n``` php\n<!-- renewed-2026 -->\n```\n\nThe script skips posts with this marker. Even if it stops, running it again only processes the remaining ones. In the end, I ran it twice more to complete 143 posts.\n\nSome original post slugs were in Korean, like `/blog/리액트-훅-정리`\n\n. While they work in browser address bars, they cause issues with SEO and social media sharing.\n\nI normalized all slugs to ASCII and used a sha1 hash as a fallback.\n\nI forcefully added two sections to the renewed posts.\n\nThis is to prevent readers from wondering \"Is this an old post?\" and to help AdSense recognize it as \"fresh content.\"\n\n| Metric | Value |\n|---|---|\n| Renewal Cost | Approx. ₩300 (Gemini Flash-Lite, 143 posts) |\n| Total Time Spent | Approx. 35 minutes (script execution time) |\n| Published Posts | 146 (143 renewed + 3 native) |\n| Archived Posts | 53 |\n| Consistency | 100% (all posts timestamped for 2026) |\n\nI've reapplied to AdSense and am waiting for the results. If approved, I plan to place ad units in only one location that doesn't disrupt readability. I won't enable auto ads.", "url": "https://wpnews.pro/news/how-i-redesigned-4-years-of-blog-posts-196-of-them-overnight-with-ai", "canonical_source": "https://dev.to/junhee916/how-i-redesigned-4-years-of-blog-posts-196-of-them-overnight-with-ai-1j02", "published_at": "2026-06-07 00:00:09+00:00", "updated_at": "2026-06-07 00:12:08.227094+00:00", "lang": "en", "topics": ["ai-tools", "generative-ai", "large-language-models", "ai-products"], "entities": ["AdSense", "Gemini Flash-Lite", "aicoreutility.com", "Tistory"], "alternates": {"html": "https://wpnews.pro/news/how-i-redesigned-4-years-of-blog-posts-196-of-them-overnight-with-ai", "markdown": "https://wpnews.pro/news/how-i-redesigned-4-years-of-blog-posts-196-of-them-overnight-with-ai.md", "text": "https://wpnews.pro/news/how-i-redesigned-4-years-of-blog-posts-196-of-them-overnight-with-ai.txt", "jsonld": "https://wpnews.pro/news/how-i-redesigned-4-years-of-blog-posts-196-of-them-overnight-with-ai.jsonld"}}