---
title: Cosy Starter Guide
top: 1
categories:
- Hexo
status: doing
---
[π¨π³ δΈζζζ‘£](https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/)
# Hexo Installation
Installing a `Hexo` theme is straightforward. Simply copy the `Hexo-theme-cosy` directory to the `themes` directory, and then modify the theme configuration in `Hexo`'s `_config.yml`.
```yml
# Locate the theme setting
theme: hexo-theme-cosy
```
## Acquiring Cosy
- Visit [Cosy's code repository](https://github.com/17px/hexo-theme-cosy/tree/main) to stay updated on the latest theme developments.
- Download `hexo-theme-cosy.zip` from the [releases page](https://github.com/17px/hexo-theme-cosy/releases).
- Extract it into your site's `themes` directory.
- Enable it in Hexo's `_config.yml`.
# Hexo Configuration
Adjust settings in `Hexo`'s `_config.yml`.
## Basic Configuration
```yml
# Website title
title: 17px blog
# Sidebar header
subtitle: "Mozzie"
# HTML meta description for SEO
description: ""
# HTML meta keywords for SEO
keywords:
# Copyright text displaying author's name
author: Mozzie
# Set your website URL here
url: https://mozzie.cn
```
## Language Switch
You can find different language files in `hex theme liner/languages`. If you want to switch languages, fill in the file name of `yml` in the `_config.yml` file
```yml
language: en
```
## Code Highlighting
Disable Hexo's default highlight.js syntax highlighting.
```yml
highlight:
enable: false
line_number: true
auto_detect: false
tab_replace: ""
wrap: true
hljs: false
prismjs:
enable: true
preprocess: true
line_number: true
line_threshold: 0
tab_replace: ""
```
# Cosy Theme Configuration
π‘ The following settings are based on the `_config.yml` under `hexo-theme-cosy`.
## Post Category Icons
In sequence, set the `svg` icons. You can get a wide variety of icons at [xicon](https://www.xicons.org/).
```yml
postCategoryIcons:
-
-
-
```
## Website Favicon
- Supports `svg`
- Supports `image URL`, e.g., `/img/favicon.png`
```yml
favicon: ''
```
## ICP Number π¨π³
π If not required, can be directly deleted.
```yml
icp: θICPε€xxxxxxxε·-x
```
## Footer Text on Homepage π¨π³
π If not required, can be directly deleted or set to `false`.
```yml
motto: false
```
## Post Copyright Statement
Enabled by default. When `enable: false`, it is disabled by default.
```yml
postCopyright:
enable: true
license: CC BY-NC-SA 4.0
license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/
```
## Katex Mathematical Formulas
You can configure the CDN yourself.
```yml
katex:
enable: true
jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js
cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css
```
## Mermaid Flowcharts
To draft flowchart syntax, use `{% mermaid %}` and `{% endmermaid %}` as wrappers.
```markdown
{% mermaid %}
graph TD;
A --> B;
A --> C;
B --> D;
C --> D;
{% endmermaid %}
```
Corresponding configurations are as follows:
```yml
mermaid:
enable: true
cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js
```
## Valine Comments
First, register as a `LeanCloud` international user and create a database.
Please proceed in accordance with relevant regional regulations.
```yml
valine:
enable: true
# ζΏζ’
appId: appId
# ζΏζ’
appKey: appKey
avatar: monsterid
cdn: //unpkg.com/valine@latest/dist/Valine.min.js
# ζΏζ’
serverURLs: //xxxxxxxx.api.lncldglobal.com
```
# Algolia Search
The blog comes with built-in local search, based on frontend development, which may have some issues. It's recommended to switch to `Algolia`. The free account has a total of 10,000 records and 100,000 operations per month.
## Register & Acquire Key
1. Create a new `Index`, for example, `hex-blog`
2. Copy and save:
- Application ID
- Search-Only API Key
- Admin API Key
- Usage API Key
![API Keys](/img/algolia-api-keys.png)
3. Replace configurations
Add the following to Hexo's `_config.yml`
```yml
algolia:
# Replace
appId: Application ID
# Replace
apiKey: Usage API Key
# Do not disclose, used for reporting, replace
adminApiKey: Admin API Key
# Replace
SearchOnlyAPIKey: Search-Only API Key
chunkSize: 5000
# Replace
indexName: hex-blog
fields:
- content:strip
- categories
- date
- permalink
- slug
- tags
- title
```
## Install hexo-algoliasearch
This is a Hexo blog post index plugin that automates the submission of indexes to Algolia.
> If you encounter any problems, you can read the [hexo-algoliasearch repository](https://www.npmjs.com/package/hexo-algoliasearch) for the latest instructions.
Installation command:
```bash
npm install hexo-algoliasearch --save
```
## Using Algolia
Before publishing each blog post, carry out index uploading operations. The usual commands are as follows:
```bash
hexo clean
hexo generate
hexo algolia
```
# QWeather Widget π¨π³
Cosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via [QWeather Developer Service](https://dev.qweather.com/docs/start/).
After registering, fill in your `appKey` and `cityCode` in the configuration.
```yml
weather:
enable: true
# Replace
cityCode: cityCode
appKey: appKey
```
You can find your city's `cityCode` in the official region list repository's `China-City-List-latest.csv`.
# Front Matter
In Hexo's Markdown files, a typical YAML-formatted `Front Matter` might look like this:
```markdown
---
title: My Article Title
categories:
- javascript
tags:
- Programming
- JavaScript
---
```
## top
To pin an article to the top, assign a numerical value to the `top` metadata. Articles with a specified `top` value will be marked with a π icon in the category list.
For example, if there are three articles:
- Article 1
```markdown
---
title: Article 1
top: 0
categories:
- javascript
---
```
- Article 2
```markdown
---
title: Article 2
top: 1
categories:
- javascript
---
```
- Article 3
```markdown
---
title: Article 3
categories:
- javascript
---
```
Then, under the `javascript` category, the sort order will be: `Article 1 > Article 2 > Article 3`.
## status
This is used to differentiate the status of articles and can be quickly `filtered` using the category list. The Cosy theme comes with 4 built-in statuses:
- done: Completed
- doing: In Progress
- todo: To Do
- other: Abandoned
For example:
```markdown
---
title: Article 1
categories:
- javascript
status: done
---
```