From 68771101ea86c39009d348d92c7b76823a67485c Mon Sep 17 00:00:00 2001 From: hoelee Date: Tue, 27 Oct 2026 03:29:03 +0800 Subject: [PATCH] edit(content): review batch-1 editorial pass across 24 posts (EN + ZH) - voice: first-person throughout (we/our -> I/my), matching the post guideline - privacy: internal LAN IPs replaced with placeholder hostnames (n8n.internal, gpu-node.internal); one compose volume path generalised - ZH twins: Traditional -> Simplified characters (site serves zh-Hans), whole-file renormalisation where the twin was still Traditional - dynamicCta: true on 12 posts so the contextual dual-track CTA renders - long configs wrapped in
with a summary naming the artefact and line count - self-hosted-tts: token refresh now writes .tmp + atomic mv, with a note on the 401 race the old truncating redirect created --- ...furniture-compositing-with-flux-kontext.md | 21 +- .../posts/best-ai-video-generators-2026.md | 13 +- ...ive-step-ai-roadmap-what-i-actually-run.md | 5 +- ...from-audio-to-a-4-minute-ai-music-video.md | 10 +- ...iving-ai-your-mouse-and-keyboard-safely.md | 7 +- ...built-an-automated-music-video-pipeline.md | 2 +- src/content/posts/how-i-host-this-blog.md | 18 +- .../how-i-made-my-own-songs-with-suno-ai.md | 7 +- ...0-vps-providers-with-parallel-subagents.md | 24 +- ...-let-an-agent-manage-my-shopee-vouchers.md | 7 +- ...loop-engineering-without-a-coding-agent.md | 10 +- ...rometheus-for-unraid-synology-and-a-vps.md | 8 +- ...ows-desktop-control-into-four-ai-agents.md | 14 +- .../running-ai-video-locally-on-a-12gb-gpu.md | 9 +- .../running-production-infrastructure-solo.md | 4 +- ...ng-tts-as-a-service-with-token-sidecars.md | 10 +- ...self-healing-digital-goods-entitlements.md | 2 +- .../posts/self-hosted-speech-to-text-api.md | 14 +- .../self-hosted-tts-cosyvoice2-n8n-gpu.md | 52 ++-- .../posts/self-hosting-mem0-memory-stack.md | 19 +- ...lashing-agent-context-with-a-code-graph.md | 17 +- .../using-chinese-llm-apis-from-malaysia.md | 23 +- .../posts/why-i-still-bought-a-local-gpu.md | 9 +- ...-12gb-gpu-songs-that-lost-their-endings.md | 5 +- ...furniture-compositing-with-flux-kontext.md | 11 +- .../posts/zh/best-ai-video-generators-2026.md | 13 +- ...ive-step-ai-roadmap-what-i-actually-run.md | 3 +- ...from-audio-to-a-4-minute-ai-music-video.md | 12 +- ...iving-ai-your-mouse-and-keyboard-safely.md | 7 +- ...built-an-automated-music-video-pipeline.md | 2 +- src/content/posts/zh/how-i-host-this-blog.md | 13 +- .../how-i-made-my-own-songs-with-suno-ai.md | 7 +- ...0-vps-providers-with-parallel-subagents.md | 19 +- ...-let-an-agent-manage-my-shopee-vouchers.md | 7 +- ...loop-engineering-without-a-coding-agent.md | 6 +- ...rometheus-for-unraid-synology-and-a-vps.md | 28 +- ...ows-desktop-control-into-four-ai-agents.md | 12 +- .../running-ai-video-locally-on-a-12gb-gpu.md | 9 +- .../running-production-infrastructure-solo.md | 2 +- ...ng-tts-as-a-service-with-token-sidecars.md | 10 +- ...self-healing-digital-goods-entitlements.md | 4 +- .../zh/self-hosted-speech-to-text-api.md | 12 +- .../zh/self-hosted-tts-cosyvoice2-n8n-gpu.md | 36 ++- .../zh/self-hosting-mem0-memory-stack.md | 31 ++- ...n-ai-photo-editor-as-a-wordpress-plugin.md | 8 +- ...lashing-agent-context-with-a-code-graph.md | 19 +- ...he-single-writer-rule-for-coding-agents.md | 4 +- .../using-chinese-llm-apis-from-malaysia.md | 23 +- .../zh/why-i-still-bought-a-local-gpu.md | 240 +++++++++--------- ...-12gb-gpu-songs-that-lost-their-endings.md | 5 +- 50 files changed, 478 insertions(+), 375 deletions(-) diff --git a/src/content/posts/ai-furniture-compositing-with-flux-kontext.md b/src/content/posts/ai-furniture-compositing-with-flux-kontext.md index eff7e6f..fb5b56c 100644 --- a/src/content/posts/ai-furniture-compositing-with-flux-kontext.md +++ b/src/content/posts/ai-furniture-compositing-with-flux-kontext.md @@ -3,6 +3,8 @@ title: "How I Built an AI Furniture Compositing Demo With FLUX.1 Kontext" description: "Compositing furniture photos into styled room scenes with fal.ai FLUX.1 Kontext — the multi-image endpoint, the tainted-canvas fix, and why prompt enhancement had to go." pubDate: 2026-09-11 category: case-studies +blueprint: sme-digital-suite +blueprintLayer: L1-high-conversion-web tags: [fal-ai, flux, ai-image, javascript, canvas, ecommerce] ogImage: /og/ai-furniture-compositing-with-flux-kontext.jpg banner: /banners/ai-furniture-compositing-with-flux-kontext.jpg @@ -48,6 +50,9 @@ For a proof-of-concept I didn't want to stand up a backend. fal.ai exposes a plain REST queue API, so a single `index.html` with vanilla JavaScript can do the whole job. There are three steps, not one: +
+index.html — fal.ai REST queue submission & polling (32 lines) + ```js // 1. Submit — returns request_id + polling URLs const submit = await fetch( @@ -83,6 +88,8 @@ const result = await (await fetch(response_url, { // result.images[0].url is the generated image ``` +
+ Two things I verified early, because they make or break the "single file" approach: @@ -148,7 +155,9 @@ HTTP. There is no third way without changing browser security settings. For a demo this is tolerable; for anything public it's a hole. A `Key` header in a client-side `fetch` means the key is in the page source, readable by anyone -who presses F12. Fine for a PoC I hand to a client, unacceptable for production. +who presses F12. During the client internal review, this demo ran strictly with +a low-balance restricted test key over a gated link; for production, client-side +keys are a non-starter. The plan for the real WordPress plugin (the next phase) is to move the key to **server-side PHP**: the plugin's endpoint does the authenticated fal.ai call @@ -187,11 +196,11 @@ Three compounding causes: reliably map to "the table" / "the chair". The fix is to name the objects — *"the dining table"* and *"the chair"* — and let the model match them to the right reference. -3. **Prompt enhancement was on.** fal.ai's `enhance_prompt` (default off, but I - had it in mind) rewrites your prompt into a richer aesthetic description — - exactly wrong when the goal is *"do not reinterpret the product."* I pinned - it to `false` so the model obeys the literal prompt instead of embellishing - it. +3. **Prompt enhancement was enabled in early tests.** When turned on, fal.ai's + `enhance_prompt` rewrites your prompt into a richer aesthetic description — + exactly wrong when the goal is *"do not reinterpret the product."* I explicitly + pinned `enhance_prompt: false` so the model obeys the literal constraints instead + of embellishing them. ## The prompt that finally worked diff --git a/src/content/posts/best-ai-video-generators-2026.md b/src/content/posts/best-ai-video-generators-2026.md index 5185a60..d32f37e 100644 --- a/src/content/posts/best-ai-video-generators-2026.md +++ b/src/content/posts/best-ai-video-generators-2026.md @@ -6,13 +6,14 @@ category: ai tags: [ai-video, video-generation, ltx, open-weights, pricing, veo] ogImage: /og/best-ai-video-generators-2026.jpg banner: /banners/best-ai-video-generators-2026.jpg +dynamicCta: true --- Which AI video generator should you actually use in 2026 — and how much of it can you really get for free? AI video has changed faster than almost any other creative tool I've used. A year ago, decent video generation meant a paid subscription and hoping for the best. Today you can generate synchronized video *and* audio with an open-weight model on your own GPU, or get genuinely useful free credits from half a dozen platforms. -But there's a catch hiding in the word "free". It means at least four different things in this market, and most articles don't tell you which one they're talking about. This guide compares the options that are actually usable in 2026, separates marketing from reality, and ends with a hands-on test: I generated a short video with the open-weight model **LTX-2.3** through PinkCherry, and I'll show you the result. +But there's a catch hiding in the word "free". It means at least four different things in this market, and most articles don't tell you which one they're talking about. This guide compares the options that are actually usable in 2026, separates marketing from reality, and ends with a hands-on test: I generated a short video with the open-weight model **LTX-2.3** on my self-hosted ComfyUI production node (internal workflow code: **PinkCherry**), and I'll show you the result. *Pricing and free quotas below were checked on September 11, 2026. This market moves monthly — always verify against the provider's current pricing page before you commit.* @@ -23,7 +24,7 @@ Before comparing tools, you need to decode the word. There are four different de 1. **Free daily or monthly credits** — you get a set number of credits that refresh. Pika (80/month), PixVerse (daily), and Kling (66/day) work this way. 2. **A one-time free trial** — you get an allocation once, and it never comes back. Runway's 125 credits are the classic example. 3. **Open weights** — the model itself is free to download and run. But "free model" doesn't mean free *compute*: you still need a GPU, electricity, and setup time. -4. **A hosted demo or community platform** — someone else runs the model for you (like PinkCherry, where I tested LTX-2.3). Quotas, queues, and availability can change without notice. +4. **A hosted demo or community platform** — someone else runs the model for you (like Hugging Face Spaces or fal.ai's playground). Quotas, queues, and availability can change without notice. Same word, wildly different economics. A platform advertising "free AI video" is usually meaning #1 or #2. A model card advertising "free" is meaning #3 — and it quietly shifts the cost to your hardware. @@ -146,7 +147,7 @@ Why this is a big deal: an open-weights model with synchronized audio changes th ## My LTX-2.3 test -I generated this short clip with **LTX-2.3** in my own ComfyUI setup — a local install I've nicknamed **PinkCherry**. It's a real-world test, not a benchmark — no claims about speed or quality leadership here, just what the model did when I pointed it at a prompt and let it work. +I generated this short clip with **LTX-2.3** in my own ComfyUI setup — a local production install with the workflow nicknamed **PinkCherry** on my RTX 3060 12GB workstation. It's a real-world test, not a benchmark — no claims about speed or quality leadership here, just what the model did when I pointed it at a prompt and let it work.