You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hugobot/README.md

64 lines
2.5 KiB
Markdown

**MIRRORED FROM**: https://git.blob42.xyz/blob42/hugobot
# HUGOBOT
*hugobot* is a bot that automates the fetching and
aggregation of content for [Hugo][hugo] data-driven
websites. It has the following features:
## Data fetch
- Use the `feeds` table to register feeds that will be fetched periodically.
- Currently, it can handle these types of feeds: `RSS`, `Github Releases`, `Newsletters`
- To define your own feed types, implement the `JobHandler` interface (see `handlers/handlers.go`).
- Hugobot automatically fetches new posts from the registered feeds.
- The database uses Sqlite for storage. It has `feeds` and `posts` tables.
- The scheduler can handle an unlimited number of tasks and uses leveldb for caching and resuming jobs.
## Hugo export
- Data is automatically exported to the configured Hugo website path.
- It can export data as `markdown` files or `json/toml` data files.
- You can customize all fields in the exported files.
- You can define custom output formats by using the `FormatHandler` interface.
- You can register custom filters and post-processing for exported posts to prevent altering the raw data stored in the database.
- You can force data export using the CLI.
## API
- It uses `gin-gonic` as the web framework.
- *hugobot* also includes a webserver API that can be used with Hugo [Data Driven Mode][data-driven].
- You can insert and query data from the database. This feature is still a work in progress, but you can easily add the missing code on the API side to automate inserting and querying data from the database.
- For example, it can be used to automate the generation of Bitcoin addresses for new articles on [bitcointechweekly.com][btw-btc].
## Other
- Some commands are available through the CLI (`github.com/urfave/cli`), you
can add your own custom commands.
## Sqliteweb interface
- See the Docker files for more information.
## First time usage
- The first time you run the program, it will automatically generate the database. You can add your feeds to the Sqlite database using your preferred Sqlite GUI.
## Contribution
- We welcome pull requests. Our current priority is adding tests.
- Check the [TODO](#TODO) section.
## TODO:
- Add tests.
- Handle more feed formats: `tweets`, `mailing-list emails` ...
- TLS support in the API (not a priority, can be done with a reverse proxy).
[data-driven]:https://gohugo.io/templates/data-templates/#data-driven-content
[btw-btc]:https://bitcointechweekly.com/btc/3Jv15g4G5LDnBJPDh1e2ja8NPnADzMxhVh
[hugo]:https://gohugo.io