Audits Appwrite blog posts for SEO, AEO, content structure, links, metadata, and search intent. Use when the user asks for an SEO audit, SEO review, search optimization check, or pre-publishing SEO assessment.
日本語の概要は準備中です。原文の説明を表示しています。
Writes, structures, and formats SEO-optimized blog posts for the Appwrite blog following established conventions for voice, tone, frontmatter, and post structure. Use when the user asks to write, draft, create, or outline a blog post, or when working with files in src/content/blog/posts/.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
This skill targets the Console app at apps/console in appwrite/appwrite; paths are relative to it. Path mapping from the upstream appwrite/website skills:
| Artifact | Path |
|---|---|
| Blog post | src/content/blog/posts/<slug>.markdoc |
| Docs page | src/content/docs/{path}/index.markdoc |
| Changelog entry | src/content/changelog/entries/<YYYY-MM-DD>.markdoc |
| Cover image | public/images/blog/<slug>/cover.avif (min 1200px wide; run bun run generate:cover-manifest after adding) |
Also apply the unslop skill to all user-facing prose.
Each blog post is a single file at src/content/blog/posts/<slug>.markdoc (e.g. src/content/blog/posts/my-post-slug.markdoc). Every file must start with this frontmatter:
---
layout: post
title: "Full title as a string"
description: One sentence summary of what the post covers.
date: YYYY-MM-DD
cover: /images/blog/<slug>/cover.avif
timeToRead: <number>
author: aditya-oberai
category: product
featured: false
unlisted: true
faqs:
- question: "A question a reader would actually ask."
answer: "A direct answer. Markdown links to docs and inline code blocks are allowed."
- question: "Another question."
answer: "Another answer."
---
The filename (slug) must match the cover image path: e.g. avoid-backend-overengineering.md maps to /images/blog/avoid-backend-overengineering/cover/cover.avif.
src/content/docs/. Only link to pages directly relevant to the post. Do not include generic links to the homepage, Discord, or GitHub unless nothing more specific exists.**bold** for key terms and important callouts within paragraphs.#) for major sections, H2 (##) for subsections, and H3 (###) where a subsection needs further structure.[Appwrite Sites](https://appwrite.io/docs/products/sites).— anywhere. Rewrite the sentence to avoid it using a period, comma, or restructured clause.appwrite-jwt-auth, not how-to-do-authentication-in-your-app-using-appwrite).faqs frontmatter contains 4-7 direct, standalone answers to real search questions.description frontmatter provides a focused meta description.Appwrite is an open-source developer infrastructure platform for building web, mobile, and AI apps. It includes both a backend server, providing authentication, databases, file storage, serverless functions, real-time subscriptions, and messaging, and a fully integrated hosting solution for deploying static and server-side rendered frontends. Appwrite can be fully self-hosted on any Docker-compatible infrastructure or used as a managed service through Appwrite Cloud.
Always read the relevant local doc files before writing a new post. The docs live in src/content/docs/ as index.markdoc files. Use the directory structure below to locate the pages relevant to the post's topic, read them, then link only to those. Every resource link in a post must be directly relevant to what the post covers. A post about authentication should link to auth docs; a post about storage should link to storage docs. Do not add links to Discord, GitHub, or the homepage unless nothing more specific exists.
The docs map to public URLs as follows: src/content/docs/{section}/{subsection}/index.markdoc becomes https://appwrite.io/docs/{section}/{subsection}. Key sections:
src/content/docs/products/{auth,databases,storage,functions,messaging,sites,ai}/src/content/docs/quick-starts/{react,nextjs,sveltekit,vue,nuxt,angular,astro,solid,deno,node,go,php,ruby,python,kotlin,java,...}/src/content/docs/tutorials/{react,nextjs,sveltekit,nuxt,vue,flutter,android,apple,...}/src/content/docs/advanced/{platform,security,self-hosting,migrations,integration}/src/content/docs/apis/{realtime,rest,graphql}/src/content/docs/tooling/{command-line,command-center,assistant,mcp,skills,arena,appwriter}/src/content/docs/sdks/Prioritize Appwrite Cloud over self-hosting. When linking to Appwrite, prefer https://cloud.appwrite.io over self-hosting documentation. Include a Cloud signup link in the resources section of every post unless the post is specifically about self-hosting or a compliance use case where self-hosting is the core recommendation (e.g. HIPAA, data residency). In CTAs and inline mentions, refer to Appwrite Cloud first and self-hosting as a secondary option.
Copy this checklist and check off items as you complete them:
Blog Creation Progress:
- [ ] Step 1: Read the relevant local doc files in src/content/docs/ to find accurate content and links
- [ ] Step 2: Create src/content/blog/posts/<slug>.markdoc with correct frontmatter
- [ ] Step 3: Write the post following the structure and tone guidelines
- [ ] Step 4: Add an `faqs` block to the frontmatter
- [ ] Step 5: Verify accuracy of all Appwrite-specific claims against the local docs
- [ ] Step 6: Verify slug consistency across filename, cover image path, and internal links
- [ ] Step 7: Complete the SEO checklist
- [ ] Step 8: Generate and save the cover image
Step 1: Read the local docs
Identify the relevant sections from src/content/docs/ based on the post's topic. Read those index.markdoc files directly to understand exact feature names, API method names, and configuration options. Use the directory structure described in "Appwrite documentation reference" above to navigate to the right files.
Step 2: Create the file
Create src/content/blog/posts/<slug>.markdoc with the frontmatter template from "Blog structure" above. All blog content must be written in src/content/blog/posts/<slug>.markdoc.
Step 3: Write the post
Follow the post structure pattern and voice/tone guidelines. Refer to the style reference posts below to calibrate tone and section depth.
Step 4: Add the FAQs block
Add an faqs list to the frontmatter with 4-7 entries. The FAQ block renders as a structured section on the published post and feeds rich-result eligibility, so each entry must stand on its own without depending on the body copy. Keep questions phrased the way a developer would actually search ("How do I install the Appwrite plugin for Codex?"), and keep answers direct, factual, and free of marketing language. Inline markdown links to relevant docs are encouraged.
See the Codex plugin announcement for a worked example: each question targets a real install/configuration concern, the answers reference specific commands and docs, and one question is dedicated to a non-obvious decision ("Why isn't the Appwrite API MCP server bundled with the plugin?").
Step 5: Verify accuracy against Appwrite docs
Re-read each local doc file linked in the post and cross-check every Appwrite-specific claim: feature names, API method names, configuration options, and behavioral descriptions. Correct any discrepancies before finalizing. Do not rely on training data for product details — always verify against the local docs. This pass must cover both the body and the FAQ answers.
Step 6: Verify slug consistency
Confirm the filename, cover image path, and any internal links all use the same slug.
Step 7: Complete the SEO checklist
Run every check in "SEO checklist" before publishing. Count the title and meta description characters, count body words without frontmatter, and correct every unmet item or clearly report it to the user.
Step 8: Generate and save the cover image
First, fetch the list of currently available templates so you pick from the latest set rather than a hard-coded name:
curl -s https://cover.appwrite.network/templates
The response lists templates across generic, icons, and screenshots categories, each with its id, required params, and maxCharLimit. Pick a template whose params match what you have (text-only posts → a generic template; posts with a logo or screenshot → an icons or screenshots template) and confirm the title fits within maxCharLimit. Default to default for text-only covers unless the post calls for something different.
Generate the cover by calling the cover API with the chosen template and required params:
https://cover.appwrite.network/generate?template=<template-id>&text=<URL-encoded post title>
Download the response and save it to public/images/blog/<slug>/cover.avif. Use curl to do this in one step:
curl -o public/images/blog/<slug>/cover.avif \
"https://cover.appwrite.network/generate?template=<template-id>&text=<URL-encoded post title>"
The cover field in the frontmatter must match this path: /images/blog/<slug>/cover.avif.
These posts represent the target style:
—) anywhere in the post. Use commas, parentheses, periods, colons, or semicolons instead as appropriate.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Audits Appwrite blog posts for SEO, AEO, content structure, links, metadata, and search intent. Use when the user asks for an SEO audit, SEO review, search optimization check, or pre-publishing SEO assessment.
日本語の概要は準備中です。原文の説明を表示しています。
Coordinates the three artifacts that ship a new Appwrite feature announcement: docs updates under src/content/docs/, an announcement blog post under blog/announcing-<slug>/, and a changelog entry under src/content/changelog/entries/. Use when the user asks to announce, launch, or ship a feature, product, SDK, runtime, integration, or plugin.
日本語の概要は準備中です。原文の説明を表示しています。
Reviews and critiques blog posts in src/content/blog/posts/ against Appwrite's established standards for voice, tone, structure, SEO, formatting, and accuracy. Use when the user asks to review, audit, critique, or improve an existing blog post.
日本語の概要は準備中です。原文の説明を表示しています。