# SEO Front Matter

> Learn how to automate the creation of SEO-optimized front matter for your markdown documents with GenAIScript.

Generating and maintaining good SEO front matter fields can be a tedious task. GenAIScript can help you automate this process.

The script below will generate SEO information and update the existing file. The script uses a custom merge strategy to merge the new front matter with the existing front matter.

slides.genai.mjs

```js
script({
    model: "large",
    accept: ".md,.mdx",
    parameters: {
        force: false,
    },
})


// force refreshing all files
const { force, dbg } = env.vars


// filter out files that don't have a front matter.description
const file = env.files[0]
const fm = MD.frontmatter(file.content)
if (!force && fm?.description) cancel("file already has description")
if (file.content?.includes("autogenerated")) cancel("file is autogenerated")


// insert markdown files in context
const res = await runPrompt(
    (ctx) => {
        ctx.def("FILE", file)


        // prompt to generate front matter for markdown files
        ctx.$`##Role


You are a search engine optimization expert at creating front matter for markdown document.


## Task


Generate the front matter content as the new file content.


## Guidance


- Update description as needed.
- Update keywords as needed, only 5 keywords or less.
- optimize for search engine optimization.
- If no front matter is present, generate it.


## Things to avoid


- Do NOT repeat project name (GenAIScript) in 'title' field
- DO NOT modify the existing 'title' or 'sidebar' fields.
- Do NOT use 'Guide' in title.
`
    },
    {
        responseType: "json_schema",
        responseSchema: {
            title: "",
            description: "",
            keywords: [""],
        },
    }
)


const frontmatter = res.json
const { title, description, keywords, tags } = frontmatter
file.content = MD.updateFrontmatter(file.content, {
    title,
    description,
    keywords,
    tags,
})
await workspace.writeFiles(file)
```

## Batching over all files

[Section titled “Batching over all files”](#batching-over-all-files)

Once the script has been tuned on a few files, you can automate using the [CLI](/genaiscript/reference/cli). The CLI has a **—apply-edits** flag to apply the changes to the file.

```sh
for file in src/**/*.md; do
  genaiscript run frontmatter "$file" --apply-edits
```

You can run this command in your CI/CD pipeline to keep your SEO front matter up to date.

Tip

Add this command to your `package.json` to make it easier to run again.

package.json

```json
{
  ...
  "scripts": {
    "genai:frontmatter": "for file in \"src/**/*.md\"; do\ngenaiscript run frontmatter \"$file\" --apply-edits\ndone",
  }
}
```