OnlineFreeTools.org
  • Home
  • Tools
    Health & body →
    BMI Calculator — How to Calculate Body Mass IndexBMR & TDEE Calculator — How to Calculate Daily CaloriesBody Fat Calculator — How to Estimate Body Fat PercentageHeart Rate Zone CalculatorIdeal Weight Calculator — How to Estimate Ideal Body WeightMacro Calculator — Calories to Protein Carb Fat GramsOne-Rep Max Calculator (Epley)Pace Calculator — min/km and Speed
    Personal money →
    CAGR Calculator — How to Calculate Compound Annual Growth RateCompound Interest Calculator — How to Calculate Future ValueDebt Payoff Calculator — Months to Clear a BalanceDiscount Calculator — How to Calculate Sale PriceEMI Calculator — How to Calculate Loan PaymentsInflation Calculator — Future Purchasing PowerPercentage Change Calculator — From Old Value to NewPresent Value Calculator — PV and FV ModesRule of 72 Calculator — Years to DoubleSalary to Hourly Calculator — How to Convert Pay RatesTip Calculator — Tip Amount and SplitVAT / GST Calculator — Add or Extract Tax
    Business finance →
    Break-Even Calculator — How to Calculate Break-Even PointContribution Margin Calculator — Price Minus Variable CostGross Margin Calculator — How to Calculate Gross MarginIRR Calculator — Internal Rate of ReturnHow to Calculate Marginal Revenue — MR Calculator (ΔTR / ΔQ)Markup Calculator — How to Calculate Markup PercentageHow to Calculate NPV — Net Present Value CalculatorPayback Period Calculator — Years to Recover InvestmentProfit Margin Calculator — Net or Operating MarginROI Calculator — How to Calculate Return on Investment
    Math & stats →
    Confidence Interval Calculator — How to Calculate a CIExponent Calculator — How to Calculate PowersGPA Calculator — How to Calculate Weighted GPALogarithm Calculator — How to Calculate LogsMean Calculator — Average of a Number ListMedian and Mode CalculatorP-Value Calculator — How to Calculate a P-ValuePermutation and Combination CalculatorQuadratic Equation Solver — Roots and DiscriminantSample Size Calculator — How to Estimate Required nScientific Notation Calculator — How to Convert Scientific NotationSignificant Figures Calculator — How to Count and Round Sig FigsStandard Deviation Calculator — How to Calculate SD and VarianceZ-Score Calculator — How to Calculate a Standard Score
    Geometry & measure →
    Aspect Ratio Calculator — How to Calculate and Scale RatiosCircle Calculator — Area and CircumferenceGradient Calculator — Multivariable ∇f (Partial Derivatives)Pythagorean Theorem Calculator — How to Find a Missing SideSlope Calculator — How to Calculate Slope Between Two PointsTriangle Area CalculatorVolume Calculator — Box and SphereUnit Converter — Length / Mass / Temperature / Area / Volume / Speed
    Science & physics →
    Acceleration Calculator — Change in VelocityDensity Calculator — Mass over VolumeOhm’s Law Calculator — Resistance and PowerVelocity Calculator — Distance over TimeMeasuring Magnetic Fields — Field strength calculator
    Home & DIY →
    Concrete Calculator — How to Estimate Concrete VolumePaint Calculator — How to Estimate Paint NeededTile Calculator — How to Estimate Tile QuantitySquare Feet to Square Meters — Area Converter for Homes & Renovation
    Time & calendar →
    Age Calculator — Chronological Age from BirthdateDate Difference Calculator — Days and WeeksTime Zone Converter — Compare One Moment WorldwideUnix Timestamp Converter — Epoch ↔ Readable Time
    PDF & docs →
    Compress PDF — Shrink File Size in Your BrowserCrop PDF — Trim Page Margins in Your BrowserMerge PDF — Combine Files in Your BrowserOrganize PDF — Reorder or Remove Pages in Your BrowserAdd Page Numbers to PDF — In Your BrowserPDF Page to Image Sizes — Multi-Size Export PackPDF to JPG — Convert Pages to Images in Your BrowserPDF to Markdown — Extract Text for Notes in Your BrowserPDF Watermark — Stamp Text on Every Page in Your BrowserProtect PDF — Password-Encrypt in Your BrowserRotate PDF — Fix Page Orientation in Your BrowserSplit PDF — Extract Pages LocallyUnlock PDF — Remove Password You Already Know
    Image & media →
    Add Text Watermark to Photo — Local Browser ToolAmazon main image sizeApple-touch-icon 180×180Extract Colors from Image — Palette & Click PickFlip Image — Mirror Horizontally or VerticallyAdd Border to Image — Color & Width OnlineImage Compressor — Resize, Quality & Target Size LocalCrop & Resize Image — Local Aspect PresetsPhoto EXIF Viewer & Remover — GPS, Camera & Local StripImage Format Converter — PNG JPEG WebP AVIF BMP GIF ICO SVGConvert Image to Grayscale — Black & White OnlineMerge Images — Combine Photos into One CollageImage Optimizer — WebP, AVIF & MozJPEG LocalOverlay Images — Put a Logo on a PhotoImage to Base64 Converter — Encode & Decode LocallyImages to GIF — Make an Animated GIF LocallyImages to PDF — Combine Photos into One FileImages to PowerPoint — Photos to PPTX SlidesImages to Word — Build a DOCX from PhotosInstagram post sizeInstagram story sizeiOS app icon sizeiPhone 6.9 screenshot sizeLinkedIn banner sizeOpen Graph image sizeSVG optimizerYouTube thumbnail size
    Design & brand →
    Generate Brand Color Scale — 50–950 Palette & CSS TokensBrand Style Guide — Generate a Modular Draft You Can EditSmart Website Color Scheme — Semantic CSS TokensWCAG Contrast Checker — AA/AAA Ratio Online
    SEO & growth →
    Core Web Vitals CheckerHreflang GeneratorIndexNow — Bing URL Submit, Key Check & Status CodesGoogle SERP PreviewMeta Tag GeneratorOn-Page SEO CheckerOpen Graph PreviewRobots.txt GeneratorJSON-LD Schema GeneratorXML Sitemap GeneratorUTM Builder
    Network & IP →
    Add WWW to DNS — A/CNAME, Apex Rules & Provider GuidesAWS VPC CIDR planner — Split a VPC into AZ subnetsCIDR cheat sheet — Click a prefix to see mask and hostsCIDR to IP range — Expand a prefix into usable addressesDomain Lookup — Check DNS Records & Registration OnlineWhat Is My IP Address — See Your Public IP (IPv4 or IPv6)IP range to CIDR — Turn start–end addresses into prefix listsIPv6 CIDR calculator — Expand a prefix into its address rangePrivate CIDR ranges — Check if an IP or prefix is private or special-useTerraform cidrsubnet — Get the child CIDR Terraform would returnCheck HTTP Response Headers
    Dev & data →
    Base64 Encode & Decode — Convert Text in Your BrowserChatGPT export to MarkdownCSV ↔ JSON Converter — Types, Delimiters & Localcurl to fetchHTML Entity Encoder & Decoder — Escape, Unescape & LocalJSON Schema Validator — Draft-07 Paths & LocalJWT Decoder — Read Header & Payload Locally (No Verify)Markdown ↔ HTMLYAML ↔ JSON Converter — Types, Multi-doc & Local
    AI prompt tools →
    Android prompt builder — Local + Optional AIFilm prompt builder — Local + Optional AIiOS prompt builder — Local + Optional AIMidjourney prompt builder — Local + Optional AIProduct design prompt builder — Local + Optional AIPrompt template builder — Local + Optional AIShort drama prompt generator — Local + Optional AISketch prompt generator — Local + Optional AIWriting prompt generator — Local + Optional AI
    Text compare →
    Compare two text files onlineCompare two Word documents for differencesExcel compare filesJSON diff checker onlineCheck difference between two texts
    Security & IDs →
    File Hash Checker — Verify Digests in Your BrowserFile metadata analyzerRandom Password Generator — Create Passwords LocallyUUID & ULID Generator — Create IDs in Your Browser
    Files & archives →
    Archive Extractor Online — Open Compressed Files in Your BrowserCreate zip fileMagnet Link Decoder — Parse Info Hash and Trackers LocallyUnzip File Online — Extract ZIP Files in Your Browser
  • Tool topics
  • Tool types
  • Dev Logs
☕ Buy me a coffee

Navigation

Home

Shipped Cloudflare Workers AI skeleton, anti-abuse layers, dual-mode compliance copy, and S0 Expand/Polish UI for prompt-template-builder before topic/writing/midjourney work-tasks. | Dev Logs

Back to Logs

Date: 2026-09-01 22:55 Summary: Shipped Cloudflare Workers AI skeleton, anti-abuse layers, dual-mode compliance copy, and S0 Expand/Polish UI for prompt-template-builder before topic/writing/midjourney work-tasks.

[question] Implement the plan「Prompt-builder 立项前:AI 与防刷提前量」— AI binding, protected API, Turnstile/rate limits, privacy/FAQ dual-mode copy, verify skeleton, then open work-tasks for topic hub + writing/midjourney + S0 AI UI.

[try to solve]

Context

Before expanding the prompt-builder topic cluster (writing-prompt-generator, midjourney-prompt-builder, topic hub), the site needed a local-first + opt-in Cloudflare Workers AI path with Neurons protection. S0 prompt-template-builder was already live as pure local assembly; no ai binding or API existed.

Process

  1. Decisions — Recorded quotas in work-tasks/prompt-template-builder/notes-ai-infra.md: Free tier 10k Neurons/day, model @cf/meta/llama-3.2-1b-instruct, IP daily 8 / minute 4 / site daily 200, input cap 6000 chars, PROMPT_AI_ENABLED rollback.
  2. Wrangler — Added ai.binding, RATE_LIMIT_KV (placeholder id pending Dashboard create), and PROMPT_AI_* vars in wrangler.jsonc; ran npx wrangler types.
  3. Worker API — src/endpoints/promptTemplateBuilderAi.ts: GET …/ai/health, POST …/ai with action whitelist, Turnstile (verifyTurnstileToken), Origin check (allowedSiteOrigin.ts), minute memory + KV daily limits (promptAiRateLimit.ts), env.AI.run, mapped error codes.
  4. Anti-abuse — Reused domain-lookup Turnstile secret pattern; Origin/Referer allowlist; input/max_tokens caps; no prompt body logging.
  5. Compliance — Ten-locale privacy workers_ai section; tool FAQ q7 + AI UI strings in all ten locales; updated faq_a1/a2 for local vs optional AI.
  6. Frontend — promptTemplateBuilderPage.ts: AI panel, consent modal (localStorage), Turnstile widget, fetch API, health-driven hide when disabled.
  7. Work-tasks — Opened drafts: writing-prompt-generator, midjourney-prompt-builder, ai-prompt-template-builder topic hub; updated S0 02-tool-info.md dual-mode.
  8. Verify — merge:tools, lint:tool-page --require-html green; wrangler dev blocked without CLOUDFLARE_API_TOKEN and real KV id.

Root cause / analysis

  • Why KV + minute limit: indexnow-style in-memory limits are per-isolate; AI Neurons cost requires cross-isolate daily caps.
  • Why health endpoint: Lets prerendered HTML hide AI buttons when PROMPT_AI_ENABLED=false without breaking local mode.
  • Placeholder KV id: wrangler kv namespace create needs authenticated Dashboard/CLI — must be replaced before production daily limits apply globally.

Solution

Layer Path
Config wrangler.jsonc — ai, RATE_LIMIT_KV, PROMPT_AI_*
API src/endpoints/promptTemplateBuilderAi.ts
Limits src/lib/promptAiRateLimit.ts, src/lib/allowedSiteOrigin.ts
UI src/pages/promptTemplateBuilderPage.ts Expand/Polish + Turnstile
Privacy scripts/site/pages/privacy.mjs, i18n-site-pages.mjs
Ops ops/cloudflare-workers-ai-access.md §4.1 checklist updated

Rollback: set PROMPT_AI_ENABLED=false → API 503, frontend hides #ptbAiPanel.

Notes / boundaries

  • Manual before prod: Create KV namespace, paste id into wrangler.jsonc; confirm Workers AI + billing alerts in Dashboard; baseline Neurons 3 days.
  • Local wrangler dev: Requires CLOUDFLARE_API_TOKEN; dev calls consume Neurons.
  • Not in this PR: Topic hub implementation (topics.ts), writing/midjourney tool pages — work-tasks only.
  • No separate ChatGPT/Gemini/Claude/DeepSeek URLs — platforms stay in copy/chips on S0.

[actions]

  • wrangler.jsonc, src/index.ts, src/endpoints/promptTemplateBuilderAi.ts, src/lib/*, src/pages/promptTemplateBuilderPage.ts
  • Ten-locale tool i18n + privacy site pages
  • work-tasks/{writing-prompt-generator,midjourney-prompt-builder,ai-prompt-template-builder}/
  • ops/cloudflare-workers-ai-access.md, work-tasks/prompt-template-builder/{02-tool-info,notes-ai-infra}.md
OnlineFreeTools.org · Learning project · Iterating
About·Privacy·Terms·Contact·GitHub