Goosequill Comments Configuration Reference

By Goose and Quill
4 minutes read

Table of Contents

  1. Config shape
  2. Giscus
  3. Waline .
  4. Recommended starting point

Goosequill currently supports two comment providers through siteConfig.comments:

You should configure exactly one provider at a time.

Config shape

Set comments in src/config.ts:

comments: {
provider: "giscus" | "waline",
}

Giscus

Minimal example

comments: {
provider: "giscus",
repo: "owner/repo",
repoId: "R_kgDOExample",
category: "Announcements",
categoryId: "DIC_kwDOExample",
}

Parameters

ParameterTypeRequiredDefaultDescription
provider"giscus"yesSelects Giscus
repostringyesGitHub repo in owner/name form
repoIdstringyesGiscus repository ID
categorystringyesGitHub Discussions category name
categoryIdstringyesGitHub Discussions category ID
mapping"pathname" | "url" | "title" | "og:title" | "specific" | "number"no"pathname"How pages map to discussion threads
strict"0" | "1"no"0"Whether mapping must match strictly
reactionsEnabled"0" | "1"no"1"Enables reactions in the comments UI
emitMetadata"0" | "1"no"0"Emits discussion metadata into the page
inputPosition"top" | "bottom"no"top"Composer position
themestringnofallback onlyShared theme fallback for both light and dark
theme_lightstringno"light"Giscus theme used in light mode
theme_darkstringno"dark"Giscus theme used in dark mode
langstringno"en"Giscus UI language
loading"lazy" | "eager"no"lazy"Script loading strategy

Notes

Waline .

Minimal example

comments: {
provider: "waline",
serverURL: "https://your-waline-server.example.com",
}

Parameters

ParameterTypeRequiredDefaultDescription
provider"waline"yesSelects Waline
serverURLstringyesWaline server endpoint
lang"zh" | "zh-CN" | "zh-TW" | "en" | "en-US" | "jp" | "jp-JP" | "pt-BR" | "ru" | "ru-RU" | "fr-FR" | "fr" | "vi" | "vi-vn" | "es" | "es-MX"no"en"Waline UI language
emojistring[] | falsenofalseEmoji source list, or disable emojis
meta("nick" | "mail" | "link")[]no["nick", "mail", "link"]Input fields shown in the form
requiredMeta("nick" | "mail" | "link")[]no[]Fields that become required
login"enable" | "disable" | "force"no"enable"Login mode
wordLimitnumber | [number, number]no0Text length limit
pageSizenumberno10Comments per page
searchbooleannofalseEnables admin search in the panel
reactionboolean | string[]nofalseEnables reactions or provides custom reaction images
pageviewbooleannofalseEnables pageview counter
noCopyrightbooleannofalseHides Waline copyright
noRssbooleannofalseDisables RSS entry output

Notes

If you want the smallest working configuration: