Meta, SEO & Crawlers
EnjuFolio exposes basic metadata for search engines, link previews, RSS readers, and (optionally) LLM crawlers.
Most of this is driven by:
- Top-level config in
src/enju.config.ts - The
metaInfoblock in that config - The
rsssettings undersocialLinks - The
disableLlmstxtflag
This page explains how those pieces are used.
1. Site-level meta
At the top level of EnjuFolioConfig:
title— used as the base site title and in HTML<title>tags.description— used as the default site description and shared across Open Graph / social previews when a page doesn’t override it.siteUrl— the public URL of your site; used as the base for:- canonical URLs
- Open Graph URLs
- JSON-LD
urlfields
Together, these values drive most of the “first impression” metadata for the site in search engines and link previews.
2. metaInfo and JSON-LD
The metaInfo block in enju.config.ts is used to generate structured data (JSON-LD), typically for a Person plus related entities:
metaInfo: {
affiliation: ["Northwestern University"],
alumniOf: ["University of California, Irvine"],
name: "Zhuoran Liu",
familyName: "Liu",
givenName: "Zhuoran",
alsoKnownAs: ["Elara", "ZL Asica"],
sameAs: [
"https://elaraliu.com",
"https://github.com/ZL-Asica",
],
},In broad terms:
name/familyName/givenName→ populate thePersonname fields. If omitted, EnjuFolio falls back to values derived fromhomePage.nameorauthor.affiliation→ becomesaffiliationentries (e.g. departments, labs, universities).alumniOf→ becomesalumniOfentries (e.g. institutions you graduated from).alsoKnownAs→ alternative names attached to the same person.sameAs→ external profile URLs (personal site, GitHub, ORCID, Google Scholar, etc.), allowing search engines to connect identities.
You typically don’t need to modify the JSON-LD logic itself; setting metaInfo is enough. For field-level details, see the Meta info & SEO section in the Configuration page.
3. RSS feeds
RSS generation is controlled from socialLinks.rss:
socialLinks: {
// ...
rss: {
news: true,
research: true,
projects: false,
},
},You can either:
- Set
rss: true→ enable RSS feeds for all supported sections. - Provide an object → enable feeds per section (
news,research,projects).
When enabled, EnjuFolio generates RSS feeds for the selected sections and exposes them from your site. The exact filenames and URLs are handled by the template; you normally don’t need to wire them manually.
4. LLM crawlers and llms.txt
EnjuFolio supports generating an optional llms.txt file at the site root, following the llmstxt.org convention. This file is a way to express your preferences to large language model crawlers about how they should treat your content.
- The feature is controlled by
disableLlmstxtinenju.config.ts. - When enabled, EnjuFolio generates a
llms.txtfile alongside other static assets. - When disabled, no
llms.txtfile is emitted.
llms.txt is advisory, not enforceable: it gives crawlers a clear signal, but cannot guarantee behavior. Treat it as a way to document your preferences rather than a strict access control mechanism.
For the boolean behavior and defaults, see the disableLlmstxt description in Configuration.
5. Quick checklist
For basic SEO and crawler friendliness:
- Set
title,description, andsiteUrlinenju.config.ts. - Fill in
metaInfowith at leastnameand one or twosameAsURLs. - Decide whether you want RSS feeds and configure
socialLinks.rss. - Decide whether to expose preferences via
llms.txt(disableLlmstxt).
After these are in place, most meta, SEO, and crawler-related behavior will be handled automatically by EnjuFolio.