From e5c9a0d91a87071cff0519712a52879b2ced68a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Orell=20B=C3=BChler?= Date: Sat, 22 Aug 2026 16:25:59 +0200 Subject: [PATCH 1/3] optimize the landing site for search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Searching "kerf editor" turns up four other products called Kerf and no landing page of ours — the site is a project page on a shared github.io host with nothing to crawl but one JS-animated screen. - sitemap.xml is generated again (it was in disableKinds) and robots.txt now points at it; a custom robots template replaces Hugo's bare default, which has no Sitemap line and no domain-root robots.txt to inherit one from. - JSON-LD: a SoftwareApplication (with offers, so it is rich-result eligible — no invented ratings), Person, WebSite, WebPage and FAQPage in one @graph. safeJS, or html/template re-encodes jsonify's output into a quoted JS string literal that no crawler reads as JSON-LD. - a real FAQ section, rendered from data/faq.yaml — the same file the FAQPage markup is built from, so the marked-up answer is always the one on the page. - meta description cut from 258 to under 155 chars so it survives a snippet, robots max-image-preview:large for a full-size thumbnail, explicit twitter:* rather than relying on the og:* overlap, og:locale, canonical sitemap link, author. - title, hero lede and the download blurb name the category and the price the queries actually use: "AI video editor", "video editor", "free". - README links the site from the header, since the repo page is the one surface Google already ranks. --- README.md | 2 + site/assets/css/kerf.css | 31 ++++++++++ site/content/_index.md | 2 +- site/data/faq.yaml | 52 +++++++++++++++++ site/hugo.toml | 21 +++++-- site/layouts/_default/baseof.html | 20 +++++++ site/layouts/index.html | 13 +++-- site/layouts/partials/faq.html | 20 +++++++ site/layouts/partials/schema.html | 97 +++++++++++++++++++++++++++++++ site/layouts/robots.txt | 8 +++ 10 files changed, 257 insertions(+), 9 deletions(-) create mode 100644 site/data/faq.yaml create mode 100644 site/layouts/partials/faq.html create mode 100644 site/layouts/partials/schema.html create mode 100644 site/layouts/robots.txt diff --git a/README.md b/README.md index f040e3a..395201e 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ Kerf is a cross-platform desktop editor with an **embedded MCP server**, so an L **same engine the GUI uses, on the same live project** — and it can actually *see* the frames it's editing. Nothing is re-encoded until you export. +**[kerf website](https://orellbuehler.github.io/kerf/)** · [download](https://orellbuehler.github.io/kerf/#get) · [FAQ](https://orellbuehler.github.io/kerf/#faq) + [![CI](https://github.com/OrellBuehler/kerf/actions/workflows/ci.yml/badge.svg)](https://github.com/OrellBuehler/kerf/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/OrellBuehler/kerf?color=e29d2e&label=release)](https://github.com/OrellBuehler/kerf/releases) [![License](https://img.shields.io/badge/license-PolyForm%20Noncommercial-22b4c4.svg)](./LICENSE.md) diff --git a/site/assets/css/kerf.css b/site/assets/css/kerf.css index 72188ba..b140b36 100644 --- a/site/assets/css/kerf.css +++ b/site/assets/css/kerf.css @@ -633,6 +633,37 @@ code { line-height: 1.7; } +/* ---------------- FAQ ---------------- */ +.faq-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 18px 28px; +} +@media (max-width: 760px) { + .faq-grid { + grid-template-columns: 1fr; + } +} +.faq-item { + min-width: 0; + border-top: 1px solid var(--border-subtle); + padding-top: 18px; +} +.faq-item h3 { + font-family: var(--font-display); + font-weight: 600; + font-size: 17px; + line-height: 1.3; + margin: 0 0 8px; + color: var(--text-primary); +} +.faq-item p { + margin: 0; + color: var(--text-secondary); + font-size: 15px; + line-height: 1.65; +} + /* ---------------- Footer ---------------- */ .footer { border-top: 1px solid var(--border-subtle); diff --git a/site/content/_index.md b/site/content/_index.md index 78ee6d7..3d2fdaf 100644 --- a/site/content/_index.md +++ b/site/content/_index.md @@ -1,3 +1,3 @@ --- -title: "Kerf — the video editor your AI can drive" +title: "Kerf — the AI video editor your agent can drive" --- diff --git a/site/data/faq.yaml b/site/data/faq.yaml new file mode 100644 index 0000000..de21ded --- /dev/null +++ b/site/data/faq.yaml @@ -0,0 +1,52 @@ +# One source of truth for the FAQ: layouts/partials/faq.html renders these as +# visible page copy, and partials/schema.html emits the same pairs as FAQPage +# JSON-LD. Google requires the answer it shows to be present on the page, so +# these must never drift apart — hence one file, two consumers. +- q: What is Kerf? + a: >- + Kerf is a free, cross-platform desktop video editor for non-destructive video and + audio editing. What makes it different is the embedded MCP server: an AI assistant + can analyze your footage, look at real frames, and assemble the cut through the same + engine the GUI uses — on the same live project you have open. +- q: How is Kerf different from an AI video editor with a chat sidebar? + a: >- + Most tools bolt a chatbot onto an editor and let it script a black box. Kerf inverts + that: the editor is an API, exposed twice over one shared project — as the GUI you + click, and as 78 Model Context Protocol tools an agent calls. There is no import or + export round-trip and no second copy of the truth. +- q: Which AI assistants can drive Kerf? + a: >- + Any MCP client. The desktop app hosts a streamable-HTTP MCP server on + 127.0.0.1:7777/mcp, so Claude Code, Claude Desktop or any HTTP-capable Model Context + Protocol client connects with a single command and starts editing. +- q: Does the AI change my timeline without asking? + a: >- + No. Agent edits build a staged proposal, not your cut. The review card shows a real + diff — added, cut, moved, retrimmed — and you can watch the proposed timeline play + before you apply it as one revertible revision, or discard it. +- q: Is Kerf free? + a: >- + Yes, free to download and free for noncommercial use under the PolyForm Noncommercial + 1.0.0 license. The full source is on GitHub, and installers for macOS, Windows and + Linux come straight from the latest release — no account needed. +- q: Which platforms does Kerf run on? + a: >- + macOS 10.15 or later (Apple silicon and Intel .dmg), Windows 10/11 x64 (.exe + installer or .msi) and Linux x86_64 (AppImage, .deb, .rpm). The app keeps itself up + to date over a signature-verified update feed. +- q: Do I need FFmpeg installed? + a: >- + On Windows, no — FFmpeg is bundled. On macOS and Linux, Kerf uses a system ffmpeg on + your PATH (brew install ffmpeg, or your distribution's package). The engine drives + the ffmpeg and ffprobe binaries, so the development libraries are never required. +- q: What does non-destructive editing mean in Kerf? + a: >- + Your timeline is an edit list over the original media: a clip is just a source range + at a timeline position. Cuts, effects, colour and keyframes edit that data, never the + files. Sources are read once, at export — nothing is re-encoded before then. +- q: Can Kerf edit 360 and Insta360 footage? + a: >- + Yes. Spherical footage is detected on import and clips cut from it are reframed to an + ordinary flat shot: aim a virtual camera with yaw, pitch, roll and field of view, and + keyframe the pan. An Insta360 lens pair imports as one asset — Kerf stitches the two + fisheyes into an equirectangular sphere and caches it. diff --git a/site/hugo.toml b/site/hugo.toml index b433250..e6a8b00 100644 --- a/site/hugo.toml +++ b/site/hugo.toml @@ -1,13 +1,26 @@ baseURL = "https://orellbuehler.github.io/kerf/" languageCode = "en-us" -title = "Kerf — the video editor your AI can drive" +title = "Kerf — the AI video editor your agent can drive" enableRobotsTXT = true -# Single landing page; no taxonomies/RSS clutter. -disableKinds = ["taxonomy", "term", "RSS", "sitemap"] +# Single landing page; no taxonomies/RSS clutter. The sitemap stays on — it is +# what robots.txt points crawlers at, and a project page on a shared +# github.io host is not discovered from a domain root. +disableKinds = ["taxonomy", "term", "RSS"] + +[sitemap] + changefreq = "weekly" + priority = 1.0 [params] - description = "Kerf is a non-destructive, FFmpeg-backed desktop video editor with an embedded MCP server, so an LLM can analyze your footage and assemble the cut through the same engine the GUI uses — and can see the frames it edits. Free download for macOS, Windows and Linux." + # Kept under ~155 chars: past that a search snippet is truncated mid-sentence. + # The longer pitch lives in `about`, which feeds the JSON-LD description where + # there is no such budget. + description = "Kerf is a free, non-destructive AI video editor for macOS, Windows and Linux. An embedded MCP server lets Claude — or any LLM — cut your footage with you." + about = "Kerf is a cross-platform desktop video editor for AI-assisted, non-destructive video and audio editing. An embedded Model Context Protocol (MCP) server exposes the same editing engine the GUI uses, so an LLM can analyze footage, see real frames, and assemble a cut on the live project — staged for your review. FFmpeg-backed; nothing is re-encoded until export." + author = "Orell Bühler" + authorUrl = "https://orellbuehler.ch" + license = "https://github.com/OrellBuehler/kerf/blob/main/LICENSE.md" tagline = "The non-destructive video editor your AI can drive." github = "https://github.com/OrellBuehler/kerf" # owner/name — download.js resolves release assets through the GitHub API, diff --git a/site/layouts/_default/baseof.html b/site/layouts/_default/baseof.html index 8f41df8..bd9686d 100644 --- a/site/layouts/_default/baseof.html +++ b/site/layouts/_default/baseof.html @@ -5,23 +5,43 @@ {{ .Title }} + + + {{/* max-image-preview:large is what lets a result carry the big thumbnail + rather than a 100px one; the -1s lift Google's snippet limits. */}} + + + {{/* docs/img is mounted at static/img, so this is the same file the repo README can use — see docs/img/README.md for how it is regenerated. */}} + + + {{/* Twitter falls back to the og:* tags, but only for the ones it knows — + so state the card's own set rather than relying on the overlap. */}} + + + + + {{ partial "schema.html" . }} + diff --git a/site/layouts/index.html b/site/layouts/index.html index 8912065..433967e 100644 --- a/site/layouts/index.html +++ b/site/layouts/index.html @@ -16,6 +16,7 @@ Features The agent MCP + FAQ GitHub ↗ Download @@ -32,7 +33,7 @@ Non-destructive · MCP-native · FFmpeg-backed

The video editor
your AI can drive.

- Kerf is a cross-platform desktop editor with an embedded MCP server, so an + Kerf is a cross-platform desktop video editor with an embedded MCP server, so an LLM can analyze your footage and assemble the cut through the same engine the GUI uses, on the same live project — and it can actually see the frames it edits. Nothing is re-encoded until you export. @@ -194,9 +195,9 @@

Connect any MCP client
and start editing.

Get it

Download Kerf.

-

Installers for every platform, straight from the latest GitHub release — - no account needed. Once installed, Kerf keeps itself up to date over a - signature-verified update feed.

+

Free download for macOS, Windows and Linux — installers straight from the + latest GitHub release, no account needed. Once installed, Kerf keeps itself up to + date over a signature-verified update feed.

{{ partial "download-button.html" (dict "Site" .Site "id" "get") }} @@ -225,6 +226,9 @@

Then point an agent at it

+ + + {{ partial "faq.html" . }}