Hugo作品集博客

osprey — Hugo 作品集模板

作者 tomanistor

Osprey 是一个基于 Hugo 的单页作品集主题,首页集中展示个人介绍、作品画廊、博客与联系方式,并配有独立博客页面。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-09-30查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

单页作品集结构,首页包含 About、Work、Blog、Contact 区块,导航默认指向页内锚点

02

画廊条目通过 front matter 配置图片、替代文本、颜色与两个外链

03

附带独立博客,支持 Disqus 评论与 Highlight.js 代码高亮

04

使用 SASS 编写样式,并通过 Hugo Pipes 对 CSS/JS 做压缩与缓存哈希

05

提供 customCSS 开关,可在 layouts/partials/css.html 中内联追加自定义样式

06

联系表单可选 Formspree 或 Basin,后者提供免费的 AJAX 提交方式

模板详细介绍

Osprey 是一个 Hugo 主题,定位为单页作品集,同时附带一个博客。首页由 About、Work、Blog、Contact 等区块组成,导航菜单默认指向首页内的锚点。内容层面主要包含两类:博客文章与画廊图片,分别通过 hugo new blog/post-title.md 和 hugo new gallery/image-title.md 创建;画廊条目在 front matter 中可配置图片、替代文本、颜色以及两个外链。主题使用 SASS 编写样式,并借助 Hugo Pipes 对 CSS 与 JavaScript 做压缩和缓存哈希处理,同时提供 customCSS 开关,允许在 layouts/partials/css.html 中以内联方式追加自定义样式。

功能集成方面,主题支持 Disqus 评论、Google Analytics 与 Google Tag Manager、OpenGraph 与 Twitter Cards,以及 Highlight.js 代码高亮和 lazysizes 懒加载。联系表单提供两种选择:Formspree 与 Basin。README 说明 Formspree 的 AJAX 表单已不再对新用户免费,非 AJAX 版本提交后会跳转到验证码页面;Basin 则提供免费的 AJAX 表单服务,需要注册并填入表单端点。

使用限制与注意事项:主题当前不使用 tag 与 category 分类法,配置示例中通过 disableKinds 关闭了 taxonomy 与 taxonomyTerm。联系表单依赖外部服务,实际提交前需完成服务端配置,其额度与费用需单独核对。演示图片、字体、图标等第三方素材的许可需按各自来源确认。代码以 Apache-2.0 许可发布,分发时需随附许可证并保留相关声明。

Hugo作品集博客

适合你的项目吗?

适用场景

  • 个人开发者或设计师搭建单页作品集,并附带一个博客栏目
  • 以画廊形式展示项目图片,并为每张图片添加说明与外部链接
  • 在静态站点中集成 Disqus 评论、Google Analytics 与社交分享元数据
  • 使用 Hugo 的 SASS 与 Hugo Pipes 流程管理样式和静态资源缓存

适合人群

  • 使用 Hugo 并希望快速搭建单页作品集与博客的个人用户
  • 需要画廊式作品展示、且能接受通过 front matter 逐条维护图片的站点
  • 对评论、分析统计与社交分享元数据有集成需求的静态站点
  • 愿意自行配置第三方表单服务(Formspree 或 Basin)的开发者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    将主题克隆到 Hugo 站点的 themes/osprey 目录,或以 git submodule 方式添加

  2. 2

    在 config.toml 中设置 theme = "osprey",并按需填写 tagline、author、description、logo 与社交链接等参数

  3. 3

    主题不使用 tag 与 category 分类法,配置示例中通过 disableKinds 关闭 taxonomy 与 taxonomyTerm

  4. 4

    联系表单需在 Formspree 或 Basin 注册并填入端点;Formspree 的 AJAX 表单已不再对新用户免费

  5. 5

    自定义 CSS 需将 customCSS 设为 true,并在 layouts/partials/css.html 中写入样式

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 Apache-2.0 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发;分发时需随附 Apache-2.0 许可证。
  • 修改过的文件需显著标明改动,并保留相关版权、专利、商标及归属声明。
  • 若原项目附有 NOTICE 文件,分发衍生作品时需保留其中适用的归属声明。
  • 许可包含适用的贡献者专利授权;发起许可所述专利诉讼会终止该专利授权,且不授予商标使用权。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • Formspree 的 AJAX 联系表单已不再对新用户免费,属于 Formspree Gold 付费功能;免费用户只能使用非 AJAX 版本(提交后跳转验证码页面),或改用 Basin。
  • 使用 Basin 联系表单需先注册免费账户,并将表单端点 URL 填入 ajaxBasin 配置项,同时在 Basin 后台开启 AJAX 提交选项。
  • Formspree 联系表单依赖外部服务,首次使用需提交一次表单以确认接收邮件的邮箱地址。
  • 主题当前不使用 tag 与 category 分类法,配置示例通过 disableKinds 关闭 taxonomy 与 taxonomyTerm。
  • 静态资源缓存哈希功能需要额外配置才能生效。
  • README 提及 Formspree 表单服务;真实提交需配置服务端点,其使用额度与费用需单独核对。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 Apache-2.0 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

no-charge, royalty-free, irrevocable copyright license

许可证原文

Formspree no longer offers newly set up AJAX contact forms for free. This is now a Formspree Gold feature.

README 原文

sign up for a free account

README 原文

The contact form is operated by Formspree and requires that the form must be submitted once initially to confirm the email address being used.

README 原文

This theme does not currently use "tag" and "category" taxonomies

README 原文

Cache busting of static resources (additional set up required)

README 原文
https://github.com/tomanistor/osprey/blob/master/LICENSEhttps://github.com/tomanistor/osprey/blob/master/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-01。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 81 / 100
技术栈
Hugo
网站类型
作品集 · 博客
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2022-04-30
截图检查日期
2026-10-01

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Hugo。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。

查看当时使用的来源资料

SHA-256: 41a71f48bd10ce8174e38409593106225882a012a7be1abdc25c6929de7ec447

2026-10-01T14:17:36.464Z

来源文件 / 仓库
![Logo](https://github.com/tomanistor/osprey/blob/master/images/osprey-logo.png)

# Osprey
Osprey is a simple, clean, and fast one-page [Hugo](https://gohugo.io/) portfolio accompanied by a blog.

## Features
* Minimalist, clean, and uncluttered theme
* Portfolio display gallery
* [Disqus](https://disqus.com) comments
* [Formspree](https://formspree.io) AJAX contact form (with Formspree Gold)
* [Basin](https://usebasin.com/) AJAX contact form (free)
* Responsive Flexbox Grid
* [SASS](http://sass-lang.com/) styling
* Minimized/compressed CSS and JavaScript files with cachebusting hash setup
* Syntax highlighting with [Highlight.js](https://highlightjs.org/)
* SEO-friendly construction
* [Google Analytics](https://analytics.google.com) and [Google Tag Manager](https://tagmanager.google.com) integration
* [OpenGraph](http://ogp.me/) and [Twitter Cards](https://dev.twitter.com/cards/overview) integration
* Quick loading speeds
* Custom CSS option

## Screenshot
![Screenshot](https://github.com/tomanistor/osprey/blob/master/images/tn.png)

## Installation
### Option 1: Clone Repository
In the root of your Hugo site directory run:

```console
$ cd themes
$ git clone https://github.com/tomanistor/osprey.git
```

### Option 2: Create Submodule
Create a submodule linked directly to the theme's GitHub repository in order to receive updates:

```console
$ git submodule add https://github.com/tomanistor/osprey.git themes/osprey
```

Then run:

```console
$ git submodule update --init --recursive --remote
```

## Configuration
Osprey comes with several configuration options to aid in site customization. This is an example config.toml file:

```toml
title = "Osprey Example Site"
baseURL = "https://tomanistor.com"
tags = ["portfolio", "web design", "blog"]
languageCode = "en-US"
config = "config.toml"
theme = "osprey"
canonifyURLS = true
googleAnalytics = ""
disqusShortname = "tomanistor"
disableKinds = ["taxonomy", "taxonomyTerm"] # This theme does not currently use "tag" and "category" taxonomies

[Params]
  tagline = "Osprey Example Site"
  author = "Toma Nistor"
  description = "Full-stack web developer and UI/UX enthusiast based in San Diego, CA."
  logoBig = "/images/osprey-logo.png"
  logoSmall = "/images/osprey-logo.png"
  favicon = "favicon.ico"
  opengraphImage = "/images/osprey.png"
  email = ""
  googleTagManager = ""
  customCSS = false

  # Social media links in footer
  twitter = "TomaNistor"
  linkedin = "tomanistor"
  github = "tomanistor"
  facebook = ""

  # Copyright and theme author credit in footer
  copyright = false
  credit = false

  # Cache busting of static resources (additional set up required)
  cacheBustCSS = true
  cacheBustJS = true

  # Code highlighting with highlight.js
  highlightJS = true
  highlightJSStyle = "" # For custom highlight.js styles, add your /path/to/styles/default.css
  highlightJSScript = "" # For custom highlight.js languages config, add your /path/to/highlight.pack.js

  # Choose either Formspree contact form or Basin contact form
  ajaxFormspree = false
  ajaxFormspreeGold = false
  ajaxBasin = "https://usebasin.com/f/0eae7044d4c2"

  # Lazy loading with lazysizes
  lazyloading = true

[[menu.main]]
  name = "About"
  url  = "/#about"
  weight = 1
[[menu.main]]
  name = "Work"
  url  = "/#work"
  weight = 2
[[menu.main]]
  name = "Blog"
  url  = "/#blog"
  weight = 3
[[menu.main]]
  name = "Contact"
  url  = "/#contact"
  weight = 4
```

## Using Osprey
The two main content types are blog posts and gallery images.

### About Section
To create an about section that renders on the home page, run:

```console
$ hugo new about.md
```

### Blog Posts
To create a new blog post, run:

```console
$ hugo new blog/post-title.md
```

### Gallery Images
To add a new image to your portfolio, run:

```console
$ hugo new gallery/image-title.md
```

The gallery archetype comes with its own configuration. Here is an example:

```md
+++
date = "2017-05-10T21:35:17-07:00"
title = "Image Title"
image = "image-file.png"
alt = "This is a description of the image"
color = "#7ac143"
link1 = "https://tomanistor.com"
link2 = "https://github.com/tomanistor"
+++
```

### Contact Form
Two contact forms services are offered as options: Formspree and Basin.

#### Formspree
_Update 4/15/18 - [Formspree no longer offers newly set up AJAX contact forms for free. This is now a Formspree Gold feature.](https://github.com/formspree/formspree/pull/173)_ You can either use the non-AJAX version of Formspree (which redirects to a Captcha page on form submit) by setting the config.toml parameter `ajaxFormspreeGold` to `false`, sign up for Formspree Gold and set the parameter to `true`, or sign up for Basin and use their contact form service for free.

The email address specified in the config.toml file will be the one receiving messages sent through the contact form. The contact form is operated by Formspree and requires that the form must be submitted once initially to confirm the email address being used. See instruction [here](https://formspree.io/).

#### Basin
Basin is an alternative, free AJAX contact form service. To use Basin, [sign up for a free account](https://usebasin.com/users/sign_up) and create a form. Copy and paste your form's URL endpoint to the `ajaxBasin` config.toml parameter. Select the `Submit this form via AJAX` option on your Basin dashboard.

![Basin AJAX setup](https://github.com/tomanistor/osprey/blob/master/images/basin-ajax-setup.png)

### Custom CSS
To implement custom CSS sitewide, change the config.toml parameter `customCSS` from `false` to `true` and then create a `css.html` file in your `layouts/partials/` folder like the example below:

```html
<style>
  <!-- This will remove the shadow on the navbar -->
  nav {
    box-shadow: none;
  }
</style>
```

This will render inline CSS in the head of your site and without adding an extra HTTP request.

### Cache Busting
As of `v2.1.0`, this theme uses native [Hugo Pipes](https://gohugo.io/hugo-pipes/introduction/) for cache busting of assets. Generated assets will be served from the `resources` folder and will no longer require any additional setup with Gulp.

## Contributions
If you'd like to help with the development of this theme, I encourage you to submit a pull request or create an issue if you find a bug. All help is appreciated.

## License
This theme is released under the Apache 2.0 license. For more information read the [license](https://github.com/tomanistor/osprey/blob/master/LICENSE).
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。