Giscus: A comments system powered by GitHub Discussions

1 week ago 4

A comments system powered by GitHub Discussions. Let visitors leave comments and reactions on your website via GitHub! Heavily inspired by utterances.

Note
giscus is still under active development. GitHub is also still actively developing Discussions and its API. Thus, some features of giscus may break or change over time.

How it works

When giscus loads, the GitHub Discussions search API is used to find the Discussion associated with the page based on a chosen mapping (URL, pathname, <title>, etc.). If a matching discussion cannot be found, the giscus bot will automatically create a discussion the first time someone leaves a comment or reaction.

To comment, visitors must authorize the giscus app to post on their behalf using the GitHub OAuth flow. Alternatively, visitors can comment on the GitHub Discussion directly. You can moderate the comments on GitHub.

Configuration

Language

Choose the language giscus will be displayed in. Can't find your language? Contribute a localization.

Language

Repository

Choose the repository giscus will connect to. Make sure that:

  1. The repository is public, otherwise visitors will not be able to view the discussion.
  2. The giscus app is installed, otherwise visitors will not be able to comment and react.
  3. The Discussions feature is turned on by enabling it for your repository.

Page ↔️ Discussions Mapping

Choose the mapping between the embedding page and the embedded discussion.

Use strict title matching

Avoid mismatches due to GitHub's fuzzy searching method when there are multiple discussions with similar titles. See the documentation for more details.

Discussion Category

Choose the discussion category where new discussions will be created. It is recommended to use a category with the Announcements type so that new discussions can only be created by maintainers and giscus.

Discussion category

Only search for discussions in this category

When searching for a matching discussion, giscus will only search in this category.

Features

Choose whether specific features should be enabled.

Enable reactions for the main post

The reactions for the discussion's main post will be shown before the comments.

Emit discussion metadata

Discussion metadata will be sent periodically to the parent window (the embedding page). For demonstration, enable this option and open your browser's console on this page. See the documentation for more details.

Place the comment box above the comments

The comment input box will be placed above the comments, so that users can leave a comment without scrolling to the bottom of the discussion.

Load the comments lazily

Loading of the comments will be deferred until the user scrolls near the comments container. This is done by adding loading="lazy" to the <iframe> element.

Theme

Choose a theme that matches your website. Can't find one that does? Contribute a new theme.

Theme

Enable giscus

Add the following <script> tag to your website's template where you want the comments to appear. If an element with the class giscus exists, the comments will be placed there instead.

You have not configured your repository and/or category. The values for those fields will not show up until you fill them out.

<script src="https://giscus.app/client.js" data-repo="[ENTER REPO HERE]" data-repo-id="[ENTER REPO ID HERE]" data-category="[ENTER CATEGORY NAME HERE]" data-category-id="[ENTER CATEGORY ID HERE]" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="preferred_color_scheme" data-lang="en" crossorigin="anonymous" async> </script>

You can customize the container layout using the .giscus and .giscus-frame selectors from the embedding page.

Read Entire Article