What is Blog Recorder?
Blog Recorder saves you tons of time going from an idea to the first draft. You completely skip the blank page and immediately get something substantial.
How does it do that?
Blog Recorder lets you talk about a topic by recording audio, and it turns disorganised thoughts into an organised blog post draft structured with headings, lists, and other formatting. You can then edit and export your blog post to publish it on your favorite blog host.
It’s not a tool that replaces writers. It’s an AI assistant that empowers bloggers to create content, better, faster, and cheaper while still having a human touch and being based on human creativity.
And that is just the beginning. Blog Recorder will get AI editing features in the future, self-improving AI that learns from your editing to create better first drafts, SEO checks, AI reviewer/suggestions, and so much more.
Tech stack
Blog Recorder is a TypeScript monorepo so the Next.js app, shared packages, and Lambdas reuse types, validation, and utilities end to end.
Monorepo
- pnpm workspaces
- Turborepo
- TypeScript 5.8+
Frontend
- Next.js 15 and React 19 (Pages Router)
- tRPC client stack with TanStack React Query and superjson
- Tailwind CSS, Radix UI, class-variance-authority, tailwind-merge, tailwindcss-animate
- Customized BlockNote editor
- react-hook-form and Zod (hookform resolvers)
- Framer Motion, Lucide, cmdk, react-markdown, marked, Prism or Shiki
- Stripe client libraries
- Clerk
- Sentry and PostHog
- react-audio-visualize
Backend
- Next.js API routes and server logic (same deployment as the UI)
- Node.js AWS Lambdas bundled with esbuild
- AWS SDK for JavaScript
- Deepgram SDK
- OpenAI and Anthropic SDKs
- BlockNote server utilities, Remark, Zod, plus shared internal DB and utility code
- SendGrid (email from processing Lambdas)
- Scheduled Lambdas for cron-style jobs
API package
- tRPC v11
- Zod and superjson
- Clerk in server context
- AWS SDK (S3, presigned POST, SQS)
- Anthropic SDK (where the API layer calls the model)
- Editor server helpers for documents
Database
- DigitalOcean managed PostgreSQL 16 with a managed connection pool
- Drizzle ORM, drizzle-kit migrations, and the pg driver
CI/CD and Terraform
Terraform holds environment-specific stacks such as production/ and reusable modules for S3, SNS, SQS, Lambdas, the database cluster, the DigitalOcean App Platform app, cron Lambdas, and related wiring. AWS modules lean on terraform-aws-modules patterns for Lambda, SQS (including dead-letter queues), and SNS.
Hosting
DigitalOcean App Platform runs the containerized web app from Terraform, maps the custom domain for blogrecorder.com, and injects environment variables from Terraform. GitHub Actions use the DigitalOcean App Platform deploy action, with deploy_on_push left false so deploys stay explicitly triggered from GitHub Actions. AWS hosts S3 buckets for audio and Lambda artifacts, plus SNS, SQS, Lambda, IAM policies, and a CA certificate Lambda layer so Lambdas can open TLS connections to DigitalOcean Postgres.
Payments
Stripe runs on the server.
Authentication
Clerk (@clerk/nextjs) owns sign-in and sign-up URLs, sessions, and webhook secrets through environment variables. Production auth flows through Clerk in the Next.js app.
Processing audio recordings
When you record or select audio in the browser, the bytes do not pass through the Next.js server on their way to storage. A tRPC procedure in packages/api/ (for example aws.createUploadArticleUrl) builds an S3 presigned POST with @aws-sdk/s3-presigned-post (createPresignedPost). It fixes the object key under your user id, inserts the audioRecordings row with that fileKey, and returns the upload URL, form fields, and bucket metadata. The client (useAudioUpload, AudioRecorder, ManualAudioUpload) builds FormData from those fields, sets Content-Type, appends the Blob or File, and POSTs straight to S3, so uploads stay browser to S3 behind short-lived, policy-scoped credentials.
In AWS, the audio bucket emits s3:ObjectCreated:* events to an SNS topic. Two subscribers react in parallel: a small Lambda (init-processing-status-in-database) marks the recording as processing and increments usage counters in Postgres, and an SQS queue (paired with a dead-letter queue and a visibility timeout aligned to the worker timeout) buffers work for the heavier Lambda (create-blog-post-sqs-handler). That worker reads SQS messages that wrap the SNS notification, parses the S3 event for bucket and key, downloads the object through shared S3 helpers, runs transcription with Deepgram, runs LLM steps with OpenAI or Anthropic depending on configuration, updates Drizzle models for articles, transcriptions, and statuses, and can notify users via SendGrid. SNS keeps the pipeline responsive for status bookkeeping while SQS isolates long-running transcription and generation behind retries, so uploads feel fast even when downstream work is slow.
The web application

On the dashboard you can see all your recently worked-on articles and start a new recording when you are ready to draft another post.

On this screen you speak into your microphone, then submit the recording to create a first draft.

When processing finishes, you can still edit the draft so the article says what you want.

On the writing preferences page you set defaults for tone, how headings are written, emoji usage, and other style choices that apply to new drafts.

Blog Recorder also lets you train personal AI models that process your audio recordings.

You train personal AI models from articles you have already written in Blog Recorder, or you import articles you have published on the web.

Subscription tiers include usage credits, so you can pick a plan that matches how much you record and generate.

For each personalized AI model you can open model-specific writing preferences and override your global defaults, so tone, headings, emoji rules, and the rest can differ from one trained model to the next.

The self-serve subscription page lets you compare plans, choose billing cadence, and complete checkout when you are ready to upgrade.
The marketing site

The hero states the core promise: faster posts by talking out loud. It adds primary calls to action, and pairs social proof with visuals that show recording and publishing in context.

The first step invites you to talk about your topic so AI can turn your speech into a structured first draft instead of a blank page.

Next you choose how the draft sounds by picking an AI model for tone and style, including models you train yourself.

You refine the result in a full editor with familiar formatting tools so the article reads the way you want.

When you are ready to ship, you copy or export in several formats and aim at the platforms you already use, with more direct integrations planned.

A dedicated section explains training a personal AI on a handful of existing posts so new drafts match your voice.

The examples flow opens a polished article preview in a modal, with a clear path to the live original post.

A comparison layout contrasts Blog Recorder with traditional writing and with generic chat-based AI so the positioning stays explicit.

Pricing lays out tiers with article limits, recording length, personalized models, and a monthly-or-yearly toggle that highlights savings on annual billing.
The end of Blog Recorder
Blog recorder was shut down end of May in 2026.