Skip to content

[blog-draft] How to Do Meeting Minutes in 2026: Steps + Free Template - #113

Merged
Smetools merged 3 commits into
mainfrom
hassan/blogger-howto-minutes-20260629
Jul 8, 2026
Merged

[blog-draft] How to Do Meeting Minutes in 2026: Steps + Free Template#113
Smetools merged 3 commits into
mainfrom
hassan/blogger-howto-minutes-20260629

Conversation

@Smetools

@Smetools Smetools commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Mode + why

thesis (informational intent). Net-new draft via the KC-blogger skill, executing the Law-7 broken-handoff fix: consumes the existing SEO content-brief how-to-do-meeting-minutes.md as the SERP-steal, hardened against a live DataForSEO SERP pull (UAE/en) since the brief's SERP was estimated.

Keyword + demand

  • how to do meeting minutes1,600/mo, KD 6, UAE/en, informational, on-product
  • White space: no MENA/UAE domain ranks the live top-10 (Reddit, iBabs, Trint, Mentimeter, WildApricot, Canva). Canva DR89 = discarded per the authority filter.
  • SERP is AI-Overview-led → the win is GEO citation (Law 5): 134–167w self-contained passages + 7-element table + template.

What's in it (2,682 words, beats top-10)

7-element format table · step-by-step (before/during/after/distribute) · copy-paste template (the intent every result + related search signals) · minutes-vs-notes · honest "can AI write minutes?" · MENA/Arabic + audit-trail angle · Odoo-task angle · common mistakes · 5 schema-ready FAQ (from live PAA).

  • hreflang pair → shipped AR محضر page namuthaj-mahdar-ijtimaa-ar (Law 4).
  • Internal links (from brief): /for/odoo-partners, /blog/why-odoo-implementation-projects-fail..., /blog/your-audit-plan-is-only-as-strong....

Gates (skill validation)

✅ 0 banned words · keyword ×19 (title + H2-1 + body) · exactly 5 FAQ H3 · slug unique · lang/dir/hreflang set · word count in 2,000–2,800 target.

Codex fact-flag (judge ≠ author)

Ran read-only vs the POSITIONING shipped-vs-aspirational matrix. Fixed: Odoo line softened ("is building for" not "gives" — vision marks that flow ~75–80% built). Kept (defensible): confirm-gate + claim-extraction + timestamp-provenance are shipped per vision; scope-creep / time-saving stats are soft + from internal research; the ChatGPT/Zoom/Otter/Read.ai summarize-in-seconds claim is generically true (undated).

Notes

  • Hero/OG images pending — routine step 3b / the SEO image lane generates these once the draft auto-moves to app/content/blog/ on merge (image-less while it's a draft is fine).
  • Schema (HowTo + FAQPage) is the SEO routine's mechanical lane — flagged, not inlined here.

Status

DRAFT for Hassan to judge & ship. Auto-publishes to app/content/blog/ on merge via publish-blog-draft.yml. Do NOT auto-merge — the blogger loop never auto-publishes.

Live URL on merge: https://knowcap.ai/blog/how-to-do-meeting-minutes

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Added a new draft guide on writing meeting minutes.
    • Includes a practical structure, step-by-step workflow, and a copy-paste template.
    • Covers common mistakes, FAQs, and a quick comparison between meeting minutes and notes.
    • Adds region-specific guidance and tips for turning action items into tracked tasks.

…-to)

Net-new blog draft via the KC-blogger skill, executing the broken-handoff fix
(Law 7): consumes the existing SEO content-brief how-to-do-meeting-minutes.md
as the SERP-steal, hardened against a live DataForSEO SERP pull (UAE/en).

- keyword: "how to do meeting minutes" (1,600/mo, KD 6, UAE/en, informational, white-space — no MENA domain ranks)
- intent-matched (Law 2): informational how-to; SERP is AI-Overview-led so the play is GEO citation (Law 5)
- 2,682 words (beats the top-10), 7-element format table, step-by-step, copy-paste template (the intent every result + related search signals), minutes-vs-notes, honest "can AI do it", MENA/Arabic + audit angle, Odoo-task angle, common mistakes, 5 schema-ready FAQ
- hreflang pair -> the shipped AR محضر page (namuthaj-mahdar-ijtimaa-ar) (Law 4)
- gates pass: 0 banned words, keyword x19, exactly 5 FAQ, slug unique

Product claims kept honest to POSITIONING (no retired Odoo-SH-PR claim; Odoo-task
flow phrased as in-progress; Arabic = input not superiority; confirm-gate is shipped).
Codex fact-flag run (judge != author); the one ship-state over-claim softened.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FkVj9JkUhTpetCHUM52hsX
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
knowcap-landing Ready Ready Preview, Comment Jul 8, 2026 11:30am

Request Review

@coderabbitai

coderabbitai Bot commented Jun 29, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@Smetools, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 40 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f1a22ad1-605c-4860-854b-bfd7b08f2b6a

📥 Commits

Reviewing files that changed from the base of the PR and between 8926de3 and abad2b6.

⛔ Files ignored due to path filters (1)
  • app/public/downloads/meeting-minutes-template.docx is excluded by !**/*.docx
📒 Files selected for processing (1)
  • docs/content-pipeline/drafts/how-to-do-meeting-minutes.md
📝 Walkthrough

Walkthrough

A new draft Markdown document docs/content-pipeline/drafts/how-to-do-meeting-minutes.md is added with 153 lines. It contains front-matter metadata and a full article body covering meeting minutes format, a 4-phase method, a copy-paste template, MENA and Odoo partner guidance, a common mistakes checklist, FAQ, and a closing CTA.

Changes

Meeting Minutes Draft Article

Layer / File(s) Summary
Full draft article
docs/content-pipeline/drafts/how-to-do-meeting-minutes.md
Adds front-matter (title, slug, SEO fields, language/dir, hreflang, tags, status) and the complete article body: introduction, 7-element format, 4-phase step-by-step method, copy-paste template, minutes vs notes comparison, AI usage guidance, MENA-specific bilingual/audit trail notes, Odoo partner task conversion guidance, common mistakes checklist, multi-question FAQ, and a final CTA link.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐇 A draft has appeared in the pipeline queue,
With minutes and templates and action items too.
The MENA crowd gets a bilingual cheer,
Odoo tasks are tracked without any fear.
Hop hop, the content is finally here! 🌟

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: a new blog draft about how to do meeting minutes, including steps and a free template.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hassan/blogger-howto-minutes-20260629

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Gemini-generated (gen-image.py, no MCP), Knowcap brand palette, no baked-in
branding text. Hero embedded in the post body (renders via app/public/blog/<slug>/,
the only per-post image path the blog system supports today). WebP, next-gen
format per Law 5 image hygiene; alt text = target keyword.

Note: the blog route has no per-post OG-meta wiring (publish-draft.mjs drops image
frontmatter; generateMetadata sets no openGraph.images). og.webp is committed as a
ready asset; wiring it into <meta og:image> is a separate small website change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FkVj9JkUhTpetCHUM52hsX

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
docs/content-pipeline/drafts/how-to-do-meeting-minutes.md (3)

69-99: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Add language specifier to fenced code block.

The template code block lacks a language tag, triggering markdownlint MD040. Add text to suppress the warning and ensure consistent rendering.

📝 Fix
-```
+```text
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/content-pipeline/drafts/how-to-do-meeting-minutes.md` around lines 69 -
99, The fenced template block in how-to-do-meeting-minutes.md is missing a
language identifier, which triggers markdownlint MD040; update the markdown
fence in this draft to use the text language specifier so the meeting-minutes
template renders consistently.

Source: Linters/SAST tools


72-73: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Clarify date format in template placeholders.

The template uses __/__/____ which is ambiguous for the MENA target audience (DD/MM vs MM/DD). Consider DD / MM / YYYY or a single __________ with a note, matching the explicit "29 Jun 2026" style used in the example.

Also applies to: 97-97

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/content-pipeline/drafts/how-to-do-meeting-minutes.md` around lines 72 -
73, The meeting minutes template placeholders are ambiguous about date format
for the MENA audience. Update the date/time placeholder in the draft template to
use an explicit format such as DD / MM / YYYY or a single clear date placeholder
with a note, and keep it consistent with the example’s explicit “29 Jun 2026”
style. Locate the change in the meeting minutes draft content and adjust the
placeholder text accordingly so the intended format is unambiguous.

17-17: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Wire hreflang_pair through publishing, or remove it from the draft template.

It’s documented in the draft spec, but scripts/publish-draft.mjs drops it from published frontmatter and app/lib/blog.ts never reads it, so the field has no effect on the live site.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/content-pipeline/drafts/how-to-do-meeting-minutes.md` at line 17, The
draft template includes hreflang_pair, but the publishing flow and blog
rendering paths ignore it, so the field is currently ineffective. Either wire
hreflang_pair through the publish pipeline in scripts/publish-draft.mjs and
consume it in app/lib/blog.ts, or remove it from the draft template/spec if it
should not be supported. Use the hreflang_pair handling in the draft frontmatter
and the publishing/blog parsing logic as the places to update.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content-pipeline/drafts/how-to-do-meeting-minutes.md`:
- Line 109: The phrase in the meeting-minutes draft needs a compound-adjective
fix: in the draft text within the content about AI drafting meeting minutes,
change the unhyphenated “real time saver” to the hyphenated form “real-time
saver.” Locate the wording in the opening paragraph of the draft and update only
that modifier so the sentence reads naturally and consistently with standard
compound-adjective usage.

---

Nitpick comments:
In `@docs/content-pipeline/drafts/how-to-do-meeting-minutes.md`:
- Around line 69-99: The fenced template block in how-to-do-meeting-minutes.md
is missing a language identifier, which triggers markdownlint MD040; update the
markdown fence in this draft to use the text language specifier so the
meeting-minutes template renders consistently.
- Around line 72-73: The meeting minutes template placeholders are ambiguous
about date format for the MENA audience. Update the date/time placeholder in the
draft template to use an explicit format such as DD / MM / YYYY or a single
clear date placeholder with a note, and keep it consistent with the example’s
explicit “29 Jun 2026” style. Locate the change in the meeting minutes draft
content and adjust the placeholder text accordingly so the intended format is
unambiguous.
- Line 17: The draft template includes hreflang_pair, but the publishing flow
and blog rendering paths ignore it, so the field is currently ineffective.
Either wire hreflang_pair through the publish pipeline in
scripts/publish-draft.mjs and consume it in app/lib/blog.ts, or remove it from
the draft template/spec if it should not be supported. Use the hreflang_pair
handling in the draft frontmatter and the publishing/blog parsing logic as the
places to update.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2e43c9f3-5435-4b7a-a36f-e7d3dfac9f33

📥 Commits

Reviewing files that changed from the base of the PR and between ce7a843 and 8926de3.

📒 Files selected for processing (3)
  • app/public/blog/how-to-do-meeting-minutes/hero.webp
  • app/public/blog/how-to-do-meeting-minutes/og.webp
  • docs/content-pipeline/drafts/how-to-do-meeting-minutes.md


## Can AI write meeting minutes? The honest answer

Yes, AI can draft meeting minutes, and in 2026 most teams should let it. Tools that record and transcribe a call — including ChatGPT's record mode, Zoom, Otter, Read.ai, and others — can turn an hour of audio into a summary with decisions and action items in seconds. That is a real time saver: manual minutes take 30–45 minutes to write up; an AI draft takes 2–3 minutes to review. But there is a catch that matters most for exactly the meetings where minutes are legally or commercially serious. An AI summary is the model's best guess at what was decided. It will occasionally invent a decision, miss an owner, or soften a deadline — and it does so in confident, clean prose that reads true. So the right method is not "let AI write the minutes" but "let AI draft, and have a named human confirm each decision against the recording before it becomes the record."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix compound adjective: "real-time saver".

"Real-time" modifies "saver" and needs hyphenation.

📝 Fix
-That is a real time saver: manual minutes take 30–45 minutes to write up;
+That is a real-time saver: manual minutes take 30–45 minutes to write up;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Yes, AI can draft meeting minutes, and in 2026 most teams should let it. Tools that record and transcribe a call — including ChatGPT's record mode, Zoom, Otter, Read.ai, and others — can turn an hour of audio into a summary with decisions and action items in seconds. That is a real time saver: manual minutes take 30–45 minutes to write up; an AI draft takes 2–3 minutes to review. But there is a catch that matters most for exactly the meetings where minutes are legally or commercially serious. An AI summary is the model's best guess at what was decided. It will occasionally invent a decision, miss an owner, or soften a deadline — and it does so in confident, clean prose that reads true. So the right method is not "let AI write the minutes" but "let AI draft, and have a named human confirm each decision against the recording before it becomes the record."
Yes, AI can draft meeting minutes, and in 2026 most teams should let it. Tools that record and transcribe a call — including ChatGPT's record mode, Zoom, Otter, Read.ai, and others — can turn an hour of audio into a summary with decisions and action items in seconds. That is a real-time saver: manual minutes take 30–45 minutes to write up; an AI draft takes 2–3 minutes to review. But there is a catch that matters most for exactly the meetings where minutes are legally or commercially serious. An AI summary is the model's best guess at what was decided. It will occasionally invent a decision, miss an owner, or soften a deadline — and it does so in confident, clean prose that reads true. So the right method is not "let AI write the minutes" but "let AI draft, and have a named human confirm each decision against the recording before it becomes the record."
🧰 Tools
🪛 LanguageTool

[uncategorized] ~109-~109: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... and action items in seconds. That is a real time saver: manual minutes take 30–45 minute...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/content-pipeline/drafts/how-to-do-meeting-minutes.md` at line 109, The
phrase in the meeting-minutes draft needs a compound-adjective fix: in the draft
text within the content about AI drafting meeting minutes, change the
unhyphenated “real time saver” to the hyphenated form “real-time saver.” Locate
the wording in the opening paragraph of the draft and update only that modifier
so the sentence reads naturally and consistently with standard
compound-adjective usage.

Source: Linters/SAST tools

Was an inline ``` fenced code block in the draft (the site renderer has
no fence support, so it would have shipped as mangled run-on prose).
Now a generated .docx at app/public/downloads/, wired via new
template_download_href/label frontmatter to the tracked download card
(companion fix PR). Per Hassan: templates ship downloadable + tracked,
media generation via Google Gemini (already the pipeline, confirmed).
Smetools added a commit that referenced this pull request Jul 8, 2026
…te downloads (#124)

The hand-rolled markdown renderer (app/lib/blog.ts) had no support for
```-fenced code blocks or `| a | b |` tables — either one silently
mangled into unreadable run-on prose (whitespace collapsed, literal
```/| characters left in the text). Confirmed LIVE-BROKEN on
namuthaj-mahdar-ijtimaa-ar (the site's only non-brand-click-earning
post) — its template section shipped as garbled text. Verified fixed
via a real `next build`: the same post now statically renders a proper
<pre><code> block, byte-for-byte the same source content.

Also adds the capability for posts to ship a real downloadable asset
(e.g. a copy-paste template as .docx) instead of relying on an inline
code fence: `template_download_href`/`template_download_label`
frontmatter -> new TemplateDownload component, tracked via
posthog.capture('template_download', ...) + gtag on click. First
consumer is the how-to-do-meeting-minutes draft (PR #113).

Verified: tsc --noEmit clean, `next build` succeeds (blog/[slug]
statically regenerates namuthaj-mahdar-ijtimaa-ar correctly).
@Smetools
Smetools merged commit 972c1eb into main Jul 8, 2026
3 checks passed
@Smetools
Smetools deleted the hassan/blogger-howto-minutes-20260629 branch July 8, 2026 11:51
github-actions Bot pushed a commit that referenced this pull request Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant