diff --git a/apps/web/content/articles/ai-meeting-summary-tools.mdx b/apps/web/content/articles/ai-meeting-summary-tools.mdx
index f4227ca0f9..c0794cce3e 100644
--- a/apps/web/content/articles/ai-meeting-summary-tools.mdx
+++ b/apps/web/content/articles/ai-meeting-summary-tools.mdx
@@ -93,7 +93,7 @@ Its [Free plan](https://www.meetjamie.ai/pricing) lists ten AI notes per month w
Fellow combines meeting preparation and shared notes with generated summaries and action items.
-
+
Its [meeting-notes documentation](https://fellow.ai/features/ai-meeting-notes) describes bot and bot-free desktop recording, custom note templates, and Ask Fellow for questions across meetings. It also connects notes and tasks to project-management and CRM tools. This makes the agenda-to-follow-up workflow worth evaluating alongside the recap itself.
@@ -103,7 +103,7 @@ The [current Free plan](https://fellow.ai/pricing) lists five lifetime AI notes
Fireflies brings summaries, searchable transcripts, and AI features into a cloud meeting workspace.
-
+
Its [pricing page](https://fireflies.ai/pricing) separates limited Free summaries from expanded paid summary access, downloads, storage, and conversation intelligence. Unlimited eligible transcription is not the same as unlimited summaries or advanced AI requests.
@@ -135,7 +135,7 @@ The [pricing comparison](https://www.avoma.com/pricing) separates meeting-assist
MeetGeek is worth evaluating when different meeting types need different summary structures and distribution rules.
-
+
Its [summary customization guide](https://support.meetgeek.ai/en/articles/10493568-meeting-summary-customization) explains editable summaries and section prompts that control what the recap captures. The [template guide](https://support.meetgeek.ai/en/articles/6021910-meeting-templates-quickstart-guide) distinguishes the Free General Meeting template from the broader paid library and automatic template detection.
diff --git a/apps/web/content/articles/best-ai-meeting-assistant-for-taking-notes.mdx b/apps/web/content/articles/best-ai-meeting-assistant-for-taking-notes.mdx
index 9e3c1e880b..a8e76def65 100644
--- a/apps/web/content/articles/best-ai-meeting-assistant-for-taking-notes.mdx
+++ b/apps/web/content/articles/best-ai-meeting-assistant-for-taking-notes.mdx
@@ -100,7 +100,7 @@ The Free plan supports on-device transcription and your own API keys. Pro is $14
[Granola](https://granola.ai) is an AI-powered notepad for people who prefer taking their own notes but want intelligent assistance to make them comprehensive.
-
+
#### About Granola's note-taking capabilities:
@@ -141,7 +141,7 @@ If Granola is your baseline and you are evaluating replacements, our dedicated [
[Otter](https://otter.ai/) is a cloud-based AI meeting assistant that automatically joins your video calls to record, transcribe, and summarize conversations.
-
+
#### About Otter.ai's note-taking capabilities:
@@ -182,7 +182,7 @@ Also check: [Top Otter AI's Alternatives](/blog/otter-ai-alternatives)
[Fireflies](https://fireflies.ai) is a comprehensive AI meeting assistant that offers deep conversation analytics and team collaboration features beyond basic transcription. With over 16 million users and a recent $1 billion valuation, it positions itself as an enterprise-grade solution.
-
+
#### About Fireflies.ai's note-taking capabilities:
@@ -220,7 +220,7 @@ Also check: [Top Fireflies AI Alternatives](/blog/fireflies-ai-alternatives)
[Krisp](https://krisp.ai/) is primarily an AI-powered noise cancellation tool that has expanded into meeting note-taking, making it unique among AI assistants.
-
+
#### About Krisp's note-taking capabilities:
@@ -256,7 +256,7 @@ Krisp offers a free plan with basic noise cancellation and AI note-taking. Paid
[Jamie AI](https://www.meetjamie.ai/) is a bot-free meeting assistant built around European hosting, multilingual notes, and post-meeting summaries.
-
+
#### About Jamie AI's note-taking capabilities:
diff --git a/apps/web/content/articles/best-ai-notetaker-for-in-person-meetings.mdx b/apps/web/content/articles/best-ai-notetaker-for-in-person-meetings.mdx
index 43aa5fc684..6692098344 100644
--- a/apps/web/content/articles/best-ai-notetaker-for-in-person-meetings.mdx
+++ b/apps/web/content/articles/best-ai-notetaker-for-in-person-meetings.mdx
@@ -92,7 +92,7 @@ For organizations with procurement requirements, evaluate the exact desktop conf
[Jamie](https://www.meetjamie.ai) records audio locally on Windows or Mac computers, then uploads recordings to German servers for AI processing. The system automatically deletes audio files after generating transcripts and summaries, emphasizing privacy through data minimization rather than local processing.
-
+
#### Pros:
@@ -120,7 +120,7 @@ Free plan with 10 meetings/month. Paid plans start at €24/month (~$25) with hi
Fireflies uses a bot system for online meetings but shifts to mobile-first recording for in-person conversations. The platform emphasizes team analytics and workflow automation alongside transcription.
-
+
*Fireflies' interface shown for in-person meeting capture. Source: [Fireflies](https://fireflies.ai/).*
@@ -151,7 +151,7 @@ Free plan includes unlimited transcription with 800 minutes of storage. Paid pla
With MeetGeek, you can record in-person meetings using their app, then send them for transcription and summarization. The platform syncs the content directly into your existing tools like Slack, HubSpot, or project management apps, reducing manual post-meeting work.
-
+
*MeetGeek's interface shown for in-person meeting capture. Source: [MeetGeek](https://meetgeek.ai/).*
@@ -182,7 +182,7 @@ Basic plan offers 300 free minutes monthly. Pro costs $19 monthly, Business $39
Otter specializes in live transcription as meetings occur. However, the platform faces significant privacy concerns, including ongoing federal litigation.
-
+
*Otter's interface shown for in-person meeting capture. Source: [Otter](https://otter.ai/).*
@@ -212,7 +212,7 @@ Free plan provides 300 monthly minutes with conversation limits. Paid plans star
Granola encourages users to take notes manually during meetings, then uses AI to enhance and structure those notes afterward. The platform records locally but processes content in the cloud for intelligent analysis.
-
+
*Granola's interface shown for in-person meeting capture. Source: [Granola](https://www.granola.ai/).*
@@ -241,7 +241,7 @@ Free trial with up to 25 meetings to test the full feature set. Paid plans start
Read AI focuses on analyzing meeting dynamics and participant engagement alongside transcription. The platform recently introduced mobile capabilities for in-person meeting recording and analysis.
-
+
*Read AI's interface shown for in-person meeting capture. Source: [Read AI](https://www.read.ai/).*
diff --git a/apps/web/content/articles/best-ai-notetaker.mdx b/apps/web/content/articles/best-ai-notetaker.mdx
index e5898b4eff..f2f6d01089 100644
--- a/apps/web/content/articles/best-ai-notetaker.mdx
+++ b/apps/web/content/articles/best-ai-notetaker.mdx
@@ -141,7 +141,7 @@ Free core app with optional paid services (Sync $5/month, Publish $10/month)
### 3. Granola: Best for Active Note Takers During Meetings
-
+
[Granola](https://www.google.com/url?q=https://www.granola.ai/&sa=D&source=editors&ust=1768759307559871&usg=AOvVaw3Ys71lW9lb82dHCgYguOEj) is an AI-powered notepad for people who want to take their own notes while getting intelligent assistance to make them comprehensive.
@@ -215,7 +215,7 @@ You'll need Notion's $24/month Business Plan to use AI features.
### 5. Fathom: Best for Sales Teams
-
+
[Fathom](https://www.google.com/url?q=https://www.fathom.ai/&sa=D&source=editors&ust=1768759307564997&usg=AOvVaw21POtCwmzAEeV4BYAHQQQ2) is built for sales teams who need meeting notes synced to CRM automatically. It records, transcribes, summarizes, but the real value comes from pushing everything to Salesforce, HubSpot, or Close without manual work. Sales calls land in your pipeline with action items already logged.
@@ -285,7 +285,7 @@ $10/month (must pay $120 annually). 14-day free trial.
### 7. Otter AI: Best if You're Looking for a Feature-rich Solution
-
+
[Otter](https://www.google.com/url?q=https://otter.ai/&sa=D&source=editors&ust=1768759307570156&usg=AOvVaw1ShKuIeVNtQTONf80caVdW) has been in the AI note-taking space longer than most competitors. The product is feature-rich with extensive integrations (Salesforce, HubSpot, Slack, Notion) and solid team collaboration tools. The bot joins your meetings, transcribes, learns speaker voices, captures slides automatically. AI chat lets you query transcripts.
diff --git a/apps/web/content/articles/best-ai-notetakers-google-meet.mdx b/apps/web/content/articles/best-ai-notetakers-google-meet.mdx
index 27b60f2041..e6a1e8b353 100644
--- a/apps/web/content/articles/best-ai-notetakers-google-meet.mdx
+++ b/apps/web/content/articles/best-ai-notetakers-google-meet.mdx
@@ -79,7 +79,7 @@ macOS is the mature build. Windows and Linux builds are available in beta. Anarl
[Fireflies](https://fireflies.ai/) is no longer bot-only. You can still invite Fred or let it auto-join Calendar events, but its Chrome extension can also capture Google Meet without adding a participant.
-
+
*Fireflies organizes playback, transcript, summary, and integrations in one cloud workspace. Source: [Fireflies](https://fireflies.ai/).*
@@ -93,7 +93,7 @@ The tradeoff is a vendor-hosted meeting workspace. Fireflies publishes SOC 2 Typ
[tl;dv](https://tldv.io/google-meet/) gives Google Meet users two distinct capture modes. Its Chrome extension can send a bot that records audio and video, while the desktop app captures device audio without adding a bot. The bot-free mode does not include video recording.
-
+
*tl;dv combines recordings with speaker analytics, coaching, and meeting playback. Source: [tl;dv for Google Meet](https://tldv.io/google-meet/).*
@@ -107,7 +107,7 @@ Its free tier is unusually usable: unlimited recordings and transcription, with
[Tactiq](https://tactiq.io/) is the least invasive option in this list if you live in Chrome and only need text. The extension opens a widget beside Google Meet and transcribes in real time without adding a participant. Current Tactiq documentation says you do not need to enable Meet captions first.
-
+
*Tactiq keeps the transcript visible beside the call without adding a bot. Source: [Tactiq Google Meet guide](https://help.tactiq.io/en/articles/9535734-how-to-use-tactiq-with-google-meet-meetings).*
@@ -151,7 +151,7 @@ The privacy model is cloud-first. Otter states that it de-identifies user data b
[Sembly](https://www.sembly.ai/) sends an agent into live Google Meet calls. It can join even when you are absent, transcribe the meeting, extract decisions and tasks, and turn the conversation into documents such as project plans or requirements.
-
+
*Sembly organizes the transcript around tasks, decisions, and structured meeting notes. Source: [Sembly](https://www.sembly.ai/).*
diff --git a/apps/web/content/articles/bot-free-ai-meeting-assistants.mdx b/apps/web/content/articles/bot-free-ai-meeting-assistants.mdx
index b952c3af4f..22cccbaa00 100644
--- a/apps/web/content/articles/bot-free-ai-meeting-assistants.mdx
+++ b/apps/web/content/articles/bot-free-ai-meeting-assistants.mdx
@@ -62,7 +62,7 @@ Check platform and model availability before choosing a setup. Cloud AI, sync, s
**Pricing:** The [Free plan](https://www.meetjamie.ai/pricing) lists ten AI notes per month with a 30-minute meeting limit. Paid plans expand allowances and integrations; check the current plan and billing basis before choosing one.
-
+
#### Useful capabilities
@@ -74,7 +74,7 @@ Evaluate the cloud processing and storage policy separately from the recording m
### 3. Granola AI
-
+
[Granola's current plan comparison](https://www.granola.ai/pricing) lists bot-free device-audio capture, meeting notes, chat, shared folders, and customized templates. It suits a workflow where you type context during the meeting and use AI to expand the note afterward.
@@ -84,7 +84,7 @@ For other storage and workflow choices, see [Granola alternatives](/blog/granola
### 4. Tactiq
-
+
[Tactiq](https://tactiq.io/) offers a bot-free browser transcript workflow for Google Meet, Zoom, and Microsoft Teams. Its FAQ says this workflow saves transcript text without recording or storing meeting audio. This matters if you want a transcript but also need to know whether an audio recording will be available for review.
@@ -92,7 +92,7 @@ The [Free plan](https://tactiq.io/buy) includes ten transcripts and five AI cred
### 5. Krisp
-
+
[Krisp's meeting assistant](https://krisp.ai/ai-meeting-assistant/) combines audio-level capture, transcription, summaries, and noise cancellation. It documents both bot-free recording and an optional meeting bot, plus desktop and mobile capture paths.
@@ -116,7 +116,7 @@ Its current integrations include CRM and project tools as well as API, webhook,
### 8. Notta
-
+
Notta offers several capture and processing paths. [Desktop Privacy Mode](https://www.notta.ai/en/features/privacy-mode) records and transcribes locally, keeping the related files in local storage. It requires initial setup and an offline model download. Other Notta modes include bot-free capture with cloud workflows, so the app name alone does not establish the data path.
@@ -148,7 +148,7 @@ The documented in-person/upload paths can produce a transcript, summary, and vis
### 12. Sonnet AI
-
+
[Sonnet](https://www.sonnetai.com/) describes capturing audio directly from your device without requiring a meeting bot. Its current feature list includes note templates, action items, participant context, relationship tracking, and CRM follow-up.
diff --git a/apps/web/content/articles/enterprise-ai-notetaking-tools.mdx b/apps/web/content/articles/enterprise-ai-notetaking-tools.mdx
index 0641af82c5..7e1e2cc0a1 100644
--- a/apps/web/content/articles/enterprise-ai-notetaking-tools.mdx
+++ b/apps/web/content/articles/enterprise-ai-notetaking-tools.mdx
@@ -115,7 +115,7 @@ Read AI joins meetings as a visible bot that announces itself and requires host
### 3. MeetGeek
-
+
[MeetGeek](https://meetgeek.ai/) is a cloud-based conversation intelligence platform focused on tracking meeting performance across teams and departments. It emphasizes analytics, measuring things like engagement, sentiment, and meeting effectiveness at an organizational scale.
@@ -146,7 +146,7 @@ Bot-based assistant with automatic language detection across 100+ languages and
### 4. Fellow
-
+
[Fellow](https://fellow.ai) is a cloud-based meeting assistant designed around internal meeting workflows, particularly manager tools like one-on-ones, team meetings, and collaborative agendas. Its distinguishing feature is granular recording controls for internal conversations.
diff --git a/apps/web/content/articles/fathom-ai-alternatives.mdx b/apps/web/content/articles/fathom-ai-alternatives.mdx
index a890d0f77b..02dfd4bbb6 100644
--- a/apps/web/content/articles/fathom-ai-alternatives.mdx
+++ b/apps/web/content/articles/fathom-ai-alternatives.mdx
@@ -91,7 +91,7 @@ It joins meetings as a bot, but unlike Fathom's basic summaries, it automaticall
**Best For:** Sales teams needing coaching analytics, deal intelligence, and automated CRM updates. Works best for teams of 10+ reps who need scalable coaching.
-
+
*Avoma's interface, shown here for comparison with Fathom. Source: [Avoma](https://www.avoma.com/).*
@@ -181,7 +181,7 @@ The conversation analytics go way deeper than Fathom. Speaker talk time, sentime
**Best For:** Teams needing conversation analytics, sales teams tracking objections, product teams monitoring feature requests, or anyone managing high meeting volume.
-
+
*Fireflies' interface, shown here for comparison with Fathom. Source: [Fireflies](https://fireflies.ai/).*
@@ -230,7 +230,7 @@ Fathom gives you basic summaries and expects you to handle compliance yourself.
**Best For:** Enterprise organizations needing strict compliance, regulated industries (healthcare, finance, legal), teams building secure knowledge bases, or anyone where HIPAA/SOC 2 certification isn't optional.
-
+
*Sembly's interface, shown here for comparison with Fathom. Source: [Sembly](https://www.sembly.ai/).*
diff --git a/apps/web/content/articles/fireflies-ai-alternatives.mdx b/apps/web/content/articles/fireflies-ai-alternatives.mdx
index 4f023cd6a9..0e80cf69ae 100644
--- a/apps/web/content/articles/fireflies-ai-alternatives.mdx
+++ b/apps/web/content/articles/fireflies-ai-alternatives.mdx
@@ -172,7 +172,7 @@ Base plans run $19-$39/user/month, with add-ons for sales features costing $35-$
Otter AI is an established cloud-based AI meeting assistant that automatically joins video calls to record, transcribe, and summarize conversations with team collaboration features.
-
+
*Otter's interface. Source: [Otter](https://otter.ai/).*
@@ -213,7 +213,7 @@ Also check: Top Otter AI's Alternatives
MeetGeek is an AI meeting assistant that automatically detects meeting types and applies context-aware templates, workflows, and insights based on whether you're in sales calls, interviews, or team meetings.
-
+
*MeetGeek's interface. Source: [MeetGeek](https://meetgeek.ai/).*
@@ -250,7 +250,7 @@ Starts at $19/user/month with meeting type detection and workflow automation.
Read AI is a comprehensive AI platform that provides meeting intelligence alongside unified search across emails, messages, and CRM data, treating meetings as part of broader business communications.
-
+
*Read AI's interface. Source: [Read AI](https://www.read.ai/).*
@@ -289,7 +289,7 @@ Free plan includes 5 monthly meeting reports. Paid plans start at $19.75/user/mo
Tactiq operates as a Chrome extension providing real-time transcription directly in your browser during Google Meet, Zoom, and Teams meetings without requiring separate app downloads.
-
+
*Tactiq's interface. Source: [Tactiq](https://tactiq.io/).*
@@ -328,7 +328,7 @@ Free plan with 10 meetings/month. Paid plans start at $12/user/month.
Sembly AI focuses on enterprise compliance and workflow automation, transforming meeting discussions into business artifacts like project plans, requirements documents, and automated task assignments.
-
+
*Sembly's interface. Source: [Sembly](https://www.sembly.ai/).*
@@ -366,7 +366,7 @@ Starts at $15/user/month with enterprise compliance features.
Fathom provides unlimited meeting recording and transcription for free, with paid features focused on sales team needs, including CRM automation and conversation intelligence.
-
+
*Fathom's interface. Source: [Fathom](https://www.fathom.video/).*
@@ -403,7 +403,7 @@ Free unlimited basic features. Premium plans start at $19/month for team feature
Sonnet AI is a bot-free AI meeting assistant that focuses on the complete meeting lifecycle—from pre-meeting participant research to automatic CRM updates after calls.
-
+
*Sonnet's interface. Source: [Sonnet](https://www.sonnetai.com/).*
diff --git a/apps/web/content/articles/free-ai-notetakers.mdx b/apps/web/content/articles/free-ai-notetakers.mdx
index 2ffbb28a07..ccda43c617 100644
--- a/apps/web/content/articles/free-ai-notetakers.mdx
+++ b/apps/web/content/articles/free-ai-notetakers.mdx
@@ -52,7 +52,7 @@ If you only need transcripts, see our [free transcription software comparison](/
tl;dv is worth considering when recording and transcripts matter more than an unrestricted AI workflow.
-
+
**Free allowance:** Its [help center](https://intercom.help/tldv/en/articles/8919450-what-are-the-limits-of-the-free-plan) lists unlimited recordings and transcripts, with recordings kept for three months. It describes full AI notes for the first ten meetings, then notes covering only the first ten minutes. It also lists lifetime allowances for AI prompts, reports, clips, and uploads.
@@ -66,7 +66,7 @@ tl;dv is worth considering when recording and transcripts matter more than an un
Fathom's ongoing free plan can support frequent calls when basic summaries are enough. Its [pricing page](https://www.fathom.ai/pricing) offers meeting-bot capture and a bot-free Mac beta; availability depends on the chosen method.
-
+
**Free allowance:** The [Free versus Premium guide](https://help.fathom.video/en/articles/5290881) lists unlimited recordings, storage, and transcripts. Five calls each month receive advanced summaries. After that, the General/Enhanced summary template remains available: the fifth advanced summary is not the end of free summaries.
@@ -78,7 +78,7 @@ Fathom's ongoing free plan can support frequent calls when basic summaries are e
Tactiq's Chrome extension provides live meeting transcripts without adding a meeting participant. It is a useful option for a modest number of browser-based calls.
-
+
**Free allowance:** The [current plan comparison](https://tactiq.io/buy) lists ten transcripts and five AI credits per month, plus transcript sharing and export. AI credits cover AI requests; they are a separate allowance from the number of transcribed meetings.
@@ -90,7 +90,7 @@ Tactiq's Chrome extension provides live meeting transcripts without adding a mee
Fireflies offers a cloud meeting workspace with several capture methods. Its free access has conditions that matter when deciding which meetings it may join.
-
+
**Free allowance:** [Unlimited transcription requires Auto-join](https://guide.fireflies.ai/articles/8632872350-unlock-unlimited-transcriptions-on-the-fireflies-free-plan) for eligible meetings on newer Free accounts; manually inviting the bot alone does not unlock it. [Transcription credits](https://guide.fireflies.ai/articles/1055386295-learn-about-transcription-credits) still apply to summaries and uploaded files. These are distinct from [AI credits for advanced features](https://guide.fireflies.ai/articles/2114151875-learn-about-ai-credits).
@@ -104,7 +104,7 @@ The [pricing page](https://fireflies.ai/pricing) lists limited summaries and 400
Otter's free Basic plan is easier to assess when you count both meeting duration and imported recordings.
-
+
**Free allowance:** The [pricing comparison](https://otter.ai/pricing) lists 300 transcription minutes per month, a 30-minute maximum per conversation, and three lifetime audio/video imports. The import allowance does not renew each month. Basic also includes live transcription, summaries, and AI Chat with its own usage limits.
@@ -116,7 +116,7 @@ Otter's free Basic plan is easier to assess when you count both meeting duration
MeetGeek combines capture, summaries, and meeting workflows. Its free plan can suit a small monthly meeting load, provided you manage retention.
-
+
**Free allowance:** The [Basic plan](https://meetgeek.ai/pricing) includes three transcription hours per month, AI summaries, three months of transcript storage, and one month of audio storage. Bot and bot-free capture options are listed, alongside file uploads.
@@ -128,7 +128,7 @@ MeetGeek combines capture, summaries, and meeting workflows. Its free plan can s
Notta's free monthly total can look generous until you check the per-conversation limit. It is better suited to brief recordings or evaluating the service than complete long meetings.
-
+
**Free allowance:** The [Free plan](https://www.notta.ai/en/pricing) lists 120 transcription minutes per month, but only three minutes per conversation. It also lists 50 file uploads and ten AI summaries per month. Upload count and monthly minutes do not remove the three-minute conversation limit.
@@ -140,7 +140,7 @@ Notta's free monthly total can look generous until you check the per-conversatio
Sonnet captures device audio without a meeting bot and emphasizes participant context, relationship tracking, and follow-up workflows.
-
+
**Free allowance:** Its [homepage](https://www.sonnetai.com/) advertises five free notes per month without a credit card. The public [pricing page](https://www.sonnetai.com/pricing) does not clearly expose current recording-duration or storage quotas. We cannot verify those limits from the available public information.
diff --git a/apps/web/content/articles/is-fireflies-ai-safe.mdx b/apps/web/content/articles/is-fireflies-ai-safe.mdx
index 5aee0cd294..5f9edd99f0 100644
--- a/apps/web/content/articles/is-fireflies-ai-safe.mdx
+++ b/apps/web/content/articles/is-fireflies-ai-safe.mdx
@@ -50,7 +50,7 @@ Fireflies also holds SOC 2 Type II, GDPR, and HIPAA certifications (HIPAA specif
## Where the Real Friction Still Is
-
+
*Fireflies' meeting recap sharing settings. Source: [Fireflies](https://fireflies.ai/).*
diff --git a/apps/web/content/articles/is-otter-ai-safe.mdx b/apps/web/content/articles/is-otter-ai-safe.mdx
index 1e02b566df..2f0894dd50 100644
--- a/apps/web/content/articles/is-otter-ai-safe.mdx
+++ b/apps/web/content/articles/is-otter-ai-safe.mdx
@@ -47,7 +47,7 @@ Real users have reported their own experiences with Otter's privacy issues, prov
Alex Bilzerian described a particularly damaging incident in a viral tweet:
-
+
*Source: [@alexbilz on X](https://x.com/alexbilz/status/1839393095236104598).*
@@ -99,7 +99,7 @@ While the company emphasizes security and privacy protections, the detailed poli
> "We train our proprietary artificial intelligence technology on de-identified audio recordings. We also train our technology on transcriptions to provide more accurate services, which may contain Personal Information."
-
+
The policy also reveals manual review of recordings when users provide consent:
diff --git a/apps/web/content/articles/mac-productivity-apps.mdx b/apps/web/content/articles/mac-productivity-apps.mdx
index c4341fe28d..7859dd4a7c 100644
--- a/apps/web/content/articles/mac-productivity-apps.mdx
+++ b/apps/web/content/articles/mac-productivity-apps.mdx
@@ -144,7 +144,7 @@ Free forever for core features. Raycast Pro is $10/month for AI features, unlimi
### 4. Obsidian: best PKM app for Mac
-
+
I've been an [Obsidian](https://www.google.com/url?q=https://obsidian.md/&sa=D&source=editors&ust=1771000364598966&usg=AOvVaw3BuiZ2NKCDRiSA5vb0cKU2) power user for years. I started using it to link random thoughts together and eventually got deep enough to build my own plugins.
diff --git a/apps/web/content/articles/markdown-note-taking-apps.mdx b/apps/web/content/articles/markdown-note-taking-apps.mdx
index 338c5462a2..e7711b79f3 100644
--- a/apps/web/content/articles/markdown-note-taking-apps.mdx
+++ b/apps/web/content/articles/markdown-note-taking-apps.mdx
@@ -80,7 +80,7 @@ Free includes on-device or bring-your-own-key transcription and manual exports;
### 2. Obsidian - best markdown note-taking app for personal knowledge management
-
+
Most note apps make you forget what you wrote six months ago. **[Obsidian](https://obsidian.md/)** keeps everything linked instead.
@@ -121,7 +121,7 @@ Free for everyone, no limits, no sign-up - including commercial use, which has b
### 3. Logseq - best markdown note-taking app for daily journaling & outlining
-
+
**[Logseq](https://logseq.com/)** clicked when I stopped trying to organize it and just started writing. You open it, land on today's journal page, and go. No deciding where a note lives. No folder structure to maintain.
diff --git a/apps/web/content/articles/meeting-minutes-software.mdx b/apps/web/content/articles/meeting-minutes-software.mdx
index e45625a5af..3ab569a067 100644
--- a/apps/web/content/articles/meeting-minutes-software.mdx
+++ b/apps/web/content/articles/meeting-minutes-software.mdx
@@ -61,7 +61,7 @@ Choose Anarlog when you want a personal meeting record you can export and an AI
### 2. Fellow - shared agendas and team follow-up
-
+
[Fellow](https://fellow.ai/) combines shared agendas, meeting notes, action items, and a searchable meeting library. Ask Fellow can help retrieve meeting context and prepare follow-up material. This suits teams whose problem starts before the call and continues into the next recurring meeting.
@@ -71,7 +71,7 @@ Fellow is not restricted to a visible meeting bot or online calls: its published
### 3. MeetGeek - a meeting library and team analytics
-
+
[MeetGeek](https://meetgeek.ai/) offers transcripts, summaries, action items, templates, and a meeting library with team analytics. It is worth evaluating when several people need to search past conversations and turn meeting output into follow-up workflows.
@@ -123,7 +123,7 @@ This is a useful shortlist option when ownership and approval matter more than a
### 8. Fathom - call recaps and CRM follow-up
-
+
[Fathom](https://www.fathom.ai/pricing) combines call recording, transcription, summaries, highlights, and follow-up features. Its CRM integrations can reduce manual transfer of meeting notes, but verify which plan and integration can update the fields your team uses.
diff --git a/apps/web/content/articles/notetakers-for-developers.mdx b/apps/web/content/articles/notetakers-for-developers.mdx
index 2a9181a542..48ba072ef7 100644
--- a/apps/web/content/articles/notetakers-for-developers.mdx
+++ b/apps/web/content/articles/notetakers-for-developers.mdx
@@ -59,7 +59,7 @@ The Free plan supports on-device transcription and your own API keys. Pro is $14
### 2. Obsidian
-
+
[Obsidian](https://obsidian.md) is a markdown-based knowledge management app that stores all your notes as .md files in a local folder. You link notes together with [[double brackets]], and the graph view maps how your ideas connect. With 1,500+ community plugins, it bends into whatever shape your workflow needs.
@@ -129,7 +129,7 @@ The app is free and open-source with no feature gates. Joplin Cloud is $5/month
### 5. Logseq
-
+
[Logseq](https://logseq.com) is an open-source, block-based outliner where every bullet point is a first-class object that can be linked, queried, and embedded anywhere in your knowledge graph. It stores notes as local Markdown or Org-mode files and uses daily journal pages as the main entry point. With 32,000+ GitHub stars and an AGPL license, it's one of the most actively developed PKM tools in the open-source ecosystem.
diff --git a/apps/web/content/articles/obsidian-meeting-notes.mdx b/apps/web/content/articles/obsidian-meeting-notes.mdx
index c78a5c3cc9..fc3ff55413 100644
--- a/apps/web/content/articles/obsidian-meeting-notes.mdx
+++ b/apps/web/content/articles/obsidian-meeting-notes.mdx
@@ -158,7 +158,7 @@ Embed this Base in Sarah's person note and it renders a table of every meeting n
### Step 6: Create meeting notes fast from your daily note
-
+
If you use Obsidian's Daily Notes plugin, you probably want to create meeting notes from there. The [Daily Note to Meeting Note thread](https://forum.obsidian.md/t/from-daily-note-create-a-new-note-with-a-template/87160) shows how to set up a one-click button using Meta Bind and Templater that:
diff --git a/apps/web/content/articles/otter-ai-review.mdx b/apps/web/content/articles/otter-ai-review.mdx
index c58b255144..d81e245491 100644
--- a/apps/web/content/articles/otter-ai-review.mdx
+++ b/apps/web/content/articles/otter-ai-review.mdx
@@ -59,7 +59,7 @@ Evaluate recording notice, sharing, retention, model training, and your organiza
The court's [August 13, 2026 order in In re Otter.AI Privacy Litigation](https://caselaw.findlaw.com/court/us-dis-crt-n-d-cal/322025.html), reproduced on FindLaw, granted the motion to dismiss in part and denied it in part. The court accepted sufficiently pleaded allegations for several privacy claims to proceed, including the CIPA third-party-interceptor theory. That is a pleading-stage decision, not a final finding that Otter violated the law. We verified this order, not a complete subsequent docket history.
-
+
*Historical allegation posted by [@alexbilz on X](https://x.com/alexbilz/status/1839393095236104598). This screenshot is an individual's report, not proof of current default behavior or the court's findings.*
@@ -67,7 +67,7 @@ The court's [August 13, 2026 order in In re Otter.AI Privacy Litigation](https:/
Otter's [privacy policy](https://otter.ai/privacy-policy), effective June 16, 2026, describes training its proprietary AI on de-identified audio and on transcriptions that may contain personal information. It also distinguishes processing under Business or enterprise service agreements, where the customer directs processing. Check the agreement and controls applicable to your workspace rather than assuming every plan has identical terms.
-
+
*Historical privacy-policy excerpt. Use the linked current policy and your applicable agreement for a present-day decision.*
diff --git a/apps/web/content/articles/plaud-ai-alternatives.mdx b/apps/web/content/articles/plaud-ai-alternatives.mdx
index bb738dc609..dee896b91a 100644
--- a/apps/web/content/articles/plaud-ai-alternatives.mdx
+++ b/apps/web/content/articles/plaud-ai-alternatives.mdx
@@ -344,7 +344,7 @@ Compare this to Plaud's $159 hardware + $99-239/year software, and you're lookin
Avoma is a cloud-based AI meeting assistant built specifically for revenue teams, combining transcription with conversation intelligence and sales coaching features.
-
+
*Avoma's interface. Source: [Avoma](https://www.avoma.com/).*
diff --git a/apps/web/content/articles/tactiq-alternatives.mdx b/apps/web/content/articles/tactiq-alternatives.mdx
index aeb45d7f4b..c4807e370a 100644
--- a/apps/web/content/articles/tactiq-alternatives.mdx
+++ b/apps/web/content/articles/tactiq-alternatives.mdx
@@ -62,7 +62,7 @@ Choose it when a hosted searchable archive fits your team. Review access, retent
## 3. Granola: notes you write, then expand and share
-
+
[Granola](https://www.granola.ai/pricing) combines device-audio capture with the notes you type during a meeting. Its published plans include AI-enhanced notes, chat, templates, and shared folders. It is a candidate when you want personal notes and team context in one hosted workspace rather than a standalone transcript export.
@@ -102,7 +102,7 @@ Recording, AI-note allowances, uploads, and retention are separate plan conditio
## 7. Notta: distinguish cloud capture from local transcription
-
+
[Notta](https://www.notta.ai/en/pricing) offers app/browser recording, file imports, meeting workflows, transcription, and translation options. Compare the particular language, client, and processing mode you need rather than choosing from a headline language count.
diff --git a/apps/web/src/cloudflare/moved-assets.ts b/apps/web/src/cloudflare/moved-assets.ts
new file mode 100644
index 0000000000..4ddd59e939
--- /dev/null
+++ b/apps/web/src/cloudflare/moved-assets.ts
@@ -0,0 +1,132 @@
+// Old object paths that now live elsewhere in the bucket. Old URLs from posts, search
+// engines and other sites keep working through a permanent redirect.
+export const MOVED_ASSETS: Record = {
+ "blog/articles/ai-meeting-summary-tools/summary-10.webp":
+ "blog/library/products/meetgeek/meeting-insights/2026-08-27-meeting-analysis.webp",
+ "blog/articles/ai-meeting-summary-tools/summary-6.webp":
+ "blog/library/products/fellow/ask-ai/2026-08-27-talking-points.webp",
+ "blog/articles/ai-meeting-summary-tools/summary-7.webp":
+ "blog/library/products/fireflies/meeting-summary/2026-08-27-meeting-workspace.webp",
+ "blog/articles/best-ai-meeting-assistant-for-taking-notes/fireflies.webp":
+ "blog/library/products/fireflies/contacts/2026-08-27-ai-bio.webp",
+ "blog/articles/best-ai-meeting-assistant-for-taking-notes/granola.webp":
+ "blog/library/products/granola/notepad/2026-08-27-meeting-summary.webp",
+ "blog/articles/best-ai-meeting-assistant-for-taking-notes/jamie.webp":
+ "blog/library/products/jamie/meeting-notes/2026-08-27-summary-assistant.webp",
+ "blog/articles/best-ai-meeting-assistant-for-taking-notes/krisp.webp":
+ "blog/library/products/krisp/meeting-notes/2026-08-27-summary-action-items.webp",
+ "blog/articles/best-ai-meeting-assistant-for-taking-notes/otter.webp":
+ "blog/library/products/otter/meeting-summary/2026-08-27-summary-card.webp",
+ "blog/articles/best-ai-notetaker-for-in-person-meetings/inperson-2.webp":
+ "blog/library/products/jamie/meeting-notes/2026-08-27-summary-assistant.webp",
+ "blog/articles/best-ai-notetaker-for-in-person-meetings/inperson-3.webp":
+ "blog/library/products/fireflies/contacts/2026-08-27-ai-bio.webp",
+ "blog/articles/best-ai-notetaker-for-in-person-meetings/inperson-4.webp":
+ "blog/library/products/meetgeek/meeting-insights/2026-08-27-meeting-analysis.webp",
+ "blog/articles/best-ai-notetaker-for-in-person-meetings/inperson-5.webp":
+ "blog/library/products/otter/meeting-summary/2026-08-27-summary-card.webp",
+ "blog/articles/best-ai-notetaker-for-in-person-meetings/inperson-6.webp":
+ "blog/library/products/granola/notepad/2026-08-27-meeting-summary.webp",
+ "blog/articles/best-ai-notetaker-for-in-person-meetings/inperson-7.webp":
+ "blog/library/products/read-ai/for-you/2026-08-27-daily-digest.webp",
+ "blog/articles/best-ai-notetaker/1768756075258-image-3.png":
+ "blog/library/products/granola/notepad/2026-08-27-meeting-summary.webp",
+ "blog/articles/best-ai-notetaker/1768756076236-image-5.png":
+ "blog/library/products/fathom/meeting-recap/2026-08-30-recap.webp",
+ "blog/articles/best-ai-notetaker/1768756076836-image-7.png":
+ "blog/library/products/otter/meeting-summary/2026-08-27-summary-card.webp",
+ "blog/articles/best-ai-notetakers-google-meet/image-2-2.png":
+ "blog/library/products/fireflies/meeting-summary/2026-08-27-meeting-workspace.webp",
+ "blog/articles/best-ai-notetakers-google-meet/image-3-2.png":
+ "blog/library/products/sembly/meeting-notes/2026-08-27-tasks-summary.webp",
+ "blog/articles/best-ai-notetakers-google-meet/image-4-2.png":
+ "blog/library/products/tldv/coaching/2026-08-27-speaker-insights.webp",
+ "blog/articles/best-ai-notetakers-google-meet/image-5-2.png":
+ "blog/library/products/tactiq/google-meet/2026-08-27-live-transcript.webp",
+ "blog/articles/bot-free-ai-meeting-assistants/granola.webp":
+ "blog/library/products/granola/notepad/2026-08-27-meeting-summary.webp",
+ "blog/articles/bot-free-ai-meeting-assistants/jamie.webp":
+ "blog/library/products/jamie/meeting-notes/2026-08-27-summary-assistant.webp",
+ "blog/articles/bot-free-ai-meeting-assistants/krisp.webp":
+ "blog/library/products/krisp/meeting-notes/2026-08-27-summary-action-items.webp",
+ "blog/articles/bot-free-ai-meeting-assistants/notta.webp":
+ "blog/library/products/notta/chrome-extension/2026-08-27-youtube-transcript.webp",
+ "blog/articles/bot-free-ai-meeting-assistants/sonnet.webp":
+ "blog/library/products/sonnet/meeting-library/2026-08-27-templates.webp",
+ "blog/articles/bot-free-ai-meeting-assistants/tactiq.webp":
+ "blog/library/products/tactiq/google-meet/2026-08-27-live-transcript.webp",
+ "blog/articles/enterprise-ai-notetaking-tools/enterprise-5.webp":
+ "blog/library/products/meetgeek/meeting-insights/2026-08-27-meeting-analysis.webp",
+ "blog/articles/enterprise-ai-notetaking-tools/enterprise-6.webp":
+ "blog/library/products/fellow/ask-ai/2026-08-27-talking-points.webp",
+ "blog/articles/fathom-ai-alternatives/fathom-2.webp":
+ "blog/library/products/avoma/meeting-notes/2026-08-27-overview.webp",
+ "blog/articles/fathom-ai-alternatives/fathom-4.webp":
+ "blog/library/products/fireflies/meeting-summary/2026-08-27-meeting-workspace.webp",
+ "blog/articles/fathom-ai-alternatives/fathom-5.webp":
+ "blog/library/products/sembly/meeting-notes/2026-08-27-tasks-summary.webp",
+ "blog/articles/fireflies-ai-alternatives/fathom.webp":
+ "blog/library/products/fathom/playlists/2026-08-27-highlight-playlists.webp",
+ "blog/articles/fireflies-ai-alternatives/meetgeek.webp":
+ "blog/library/products/meetgeek/meeting-insights/2026-08-27-meeting-analysis.webp",
+ "blog/articles/fireflies-ai-alternatives/otter.webp":
+ "blog/library/products/otter/meeting-summary/2026-08-27-summary-card.webp",
+ "blog/articles/fireflies-ai-alternatives/read-ai.webp":
+ "blog/library/products/read-ai/for-you/2026-08-27-daily-digest.webp",
+ "blog/articles/fireflies-ai-alternatives/sembly-ai.webp":
+ "blog/library/products/sembly/meeting-notes/2026-08-27-tasks-summary.webp",
+ "blog/articles/fireflies-ai-alternatives/sonnet.webp":
+ "blog/library/products/sonnet/meeting-library/2026-08-27-templates.webp",
+ "blog/articles/fireflies-ai-alternatives/tactiq.webp":
+ "blog/library/products/tactiq/google-meet/2026-08-27-live-transcript.webp",
+ "blog/articles/free-ai-notetakers/free-11.webp":
+ "blog/library/products/otter/meeting-summary/2026-08-27-summary-card.webp",
+ "blog/articles/free-ai-notetakers/free-13.webp":
+ "blog/library/products/meetgeek/meeting-insights/2026-08-27-meeting-analysis.webp",
+ "blog/articles/free-ai-notetakers/free-15.webp":
+ "blog/library/products/notta/chrome-extension/2026-08-27-youtube-transcript.webp",
+ "blog/articles/free-ai-notetakers/free-17.webp":
+ "blog/library/products/sonnet/meeting-library/2026-08-27-templates.webp",
+ "blog/articles/free-ai-notetakers/free-3.webp":
+ "blog/library/products/tldv/coaching/2026-08-27-speaker-insights.webp",
+ "blog/articles/free-ai-notetakers/free-5.webp":
+ "blog/library/products/fathom/playlists/2026-08-27-highlight-playlists.webp",
+ "blog/articles/free-ai-notetakers/free-7.webp":
+ "blog/library/products/tactiq/google-meet/2026-08-27-live-transcript.webp",
+ "blog/articles/free-ai-notetakers/free-9.webp":
+ "blog/library/products/fireflies/contacts/2026-08-27-ai-bio.webp",
+ "blog/articles/is-fireflies-ai-safe/fireflies-recap-sharing-defaults.png":
+ "blog/library/products/fireflies/privacy/2026-09-22-recap-audience.png",
+ "blog/articles/is-otter-ai-safe/otter-2.webp":
+ "blog/library/products/otter/privacy/2026-08-27-recording-complaint-post.webp",
+ "blog/articles/is-otter-ai-safe/otter-7.webp":
+ "blog/library/products/otter/privacy/2026-08-27-training-policy.webp",
+ "blog/articles/mac-productivity-apps/image-4.png":
+ "blog/library/products/obsidian/graph/2026-02-16-desktop-and-mobile.png",
+ "blog/articles/markdown-note-taking-apps/image-2.png":
+ "blog/library/products/obsidian/graph/2026-02-16-desktop-and-mobile.png",
+ "blog/articles/markdown-note-taking-apps/image-3.png":
+ "blog/library/products/logseq/outliner/2026-04-08-linked-blocks.png",
+ "blog/articles/meeting-minutes-software/image-1.png":
+ "blog/library/products/fellow/ask-ai/2026-08-27-talking-points.webp",
+ "blog/articles/meeting-minutes-software/image-2.png":
+ "blog/library/products/meetgeek/meeting-insights/2026-08-27-meeting-analysis.webp",
+ "blog/articles/meeting-minutes-software/image-7.png":
+ "blog/library/products/fathom/meeting-recap/2026-08-30-recap.webp",
+ "blog/articles/notetakers-for-developers/image-1.png":
+ "blog/library/products/obsidian/daily-notes/2026-04-08-meeting-links.png",
+ "blog/articles/notetakers-for-developers/image-4.png":
+ "blog/library/products/logseq/outliner/2026-04-08-linked-blocks.png",
+ "blog/articles/obsidian-meeting-notes/image-4-1.png":
+ "blog/library/products/obsidian/daily-notes/2026-04-08-meeting-links.png",
+ "blog/articles/otter-ai-review/image-1.png":
+ "blog/library/products/otter/privacy/2026-08-27-recording-complaint-post.webp",
+ "blog/articles/otter-ai-review/image-2.png":
+ "blog/library/products/otter/privacy/2026-08-27-training-policy.webp",
+ "blog/articles/plaud-ai-alternatives/avoma.webp":
+ "blog/library/products/avoma/meeting-notes/2026-08-27-overview.webp",
+ "blog/articles/tactiq-alternatives/image-13.png":
+ "blog/library/products/granola/notepad/2026-08-27-meeting-summary.webp",
+ "blog/articles/tactiq-alternatives/image-18.png":
+ "blog/library/products/notta/chrome-extension/2026-08-27-youtube-transcript.webp",
+};
diff --git a/apps/web/src/cloudflare/static-assets.test.ts b/apps/web/src/cloudflare/static-assets.test.ts
index c71fae798b..1380115463 100644
--- a/apps/web/src/cloudflare/static-assets.test.ts
+++ b/apps/web/src/cloudflare/static-assets.test.ts
@@ -77,3 +77,23 @@ test("serves blog preview HEAD requests from the image generator without returni
assert.equal(response.headers.get("set-cookie"), null);
assert.equal(await response.text(), "");
});
+
+test("redirects moved objects to their new path without fetching the old one", async (t) => {
+ t.mock.method(globalThis, "fetch", () => {
+ throw new Error("unexpected fetch");
+ });
+ const response = await worker.fetch(
+ new Request(
+ "https://static.anarlog.so/blog/articles/free-ai-notetakers/free-11.webp",
+ ),
+ );
+ assert.equal(response.status, 301);
+ assert.equal(
+ response.headers.get("location"),
+ "https://static.anarlog.so/blog/library/products/otter/meeting-summary/2026-08-27-summary-card.webp",
+ );
+ const inherited = await worker.fetch(
+ new Request("https://static.anarlog.so/constructor"),
+ );
+ assert.notEqual(inherited.status, 301);
+});
diff --git a/apps/web/src/cloudflare/static-assets.ts b/apps/web/src/cloudflare/static-assets.ts
index fa7c0e5716..15f8e26441 100644
--- a/apps/web/src/cloudflare/static-assets.ts
+++ b/apps/web/src/cloudflare/static-assets.ts
@@ -1,4 +1,5 @@
import { servePublicAsset } from "../lib/public-assets.ts";
+import { MOVED_ASSETS } from "./moved-assets.ts";
export default {
async fetch(request: Request): Promise {
@@ -10,6 +11,19 @@ export default {
url.protocol = "https:";
return Response.redirect(url, 308);
}
+ const moved = Object.hasOwn(MOVED_ASSETS, url.pathname.slice(1))
+ ? MOVED_ASSETS[url.pathname.slice(1)]
+ : undefined;
+ if (moved) {
+ return new Response(null, {
+ status: 301,
+ headers: {
+ location: `https://static.anarlog.so/${moved}`,
+ "access-control-allow-origin": "*",
+ "cache-control": "public, max-age=86400",
+ },
+ });
+ }
if (
/^\/og\/blog\/[a-z0-9]+(?:-[a-z0-9]+)*\/?$/.test(url.pathname) &&
(request.method === "GET" || request.method === "HEAD")