Horoscope Readings (provider)
A provider skill for ovos-common-reading-pipeline-plugin, reading daily zodiac horoscopes aloud.
Sourced from freehoroscopeapi.com - a free, open REST API, no API key required.
This skill has no standalone voice interface. It registers no intents and never speaks. It only answers ovos.common_reading.* bus messages, so you also need ovos-common-reading-pipeline-plugin installed and added to your pipeline config for it to be useful at all.
Install
pip install ovos-skill-horoscope-readings ovos-common-reading-pipeline-plugin
How this provider is architecturally different
Every other provider in this family scrapes or fetches a list of titles, caches it, and refreshes it periodically. This one doesn't - the 12 zodiac signs never change, so they're the entire "index", hardcoded and static. Only the actual horoscope text needs a live API call, made fresh every time (no caching), since it's different every day and the request is cheap and fast (a plain JSON REST call, no scraping).
Translation - two different mechanisms for two different things
- Zodiac sign names ("Leo", "Løven", "Löwe", "Lion", ...) - fixed,
well-known, enumerable terms, bundled per-language in
locale/<lang>/zodiac_signs.jsonrather than relying on a live translation plugin for individual out-of-context words (which risks poor-quality single-word translations). Falls back to the English names for any language without a bundled translation. - The horoscope text itself - genuinely dynamic daily content, so
this does use live translation, same pattern as
ovos-skill-ovosblog/ovos-skill-arxiv-papers/ovos-skill-365tomorrows-stories. Disclosed via"machine_translated": true/falsein the search response.
Like those three translating providers, this one always loads
regardless of device language (no SUPPORTED_LANGUAGES gate) -
collection_hint aliases are loaded from locale/<lang>/collection.voc
with an English fallback for any language we haven't translated - see
ovos-common-reading-pipeline-plugin#26.
No "surprise me"
Unlike a story provider, a search with a matching collection_hint
but no specific sign named declines to respond rather than picking
one at random - reading someone the wrong zodiac sign's horoscope isn't
a fun surprise, it's just wrong. You have to actually name a sign
("read me my Leo horoscope").
Collection hints
Responds to collection_hint values in the device's own language -
e.g. "horoscope"/"zodiac"/"astrology" on English, "horoskop"/
"stjernetegn" on Danish - matched fuzzily against that language's own
alias list (see locale/<lang>/collection.voc).
Content type
Identifies as content_type: "horoscope" or "astrology". A search
with a content_type hint for anything else gets no response from this
provider.
A regression worth knowing about
Early testing found ovos_utils.parse.match_one() picking "Pisces"
for the phrase "leo horoscope" - its character-overlap scoring got
confused by incidental shared letters once an extra word ("horoscope")
was in the phrase, the same class of false positive as "andrew lang"
scoring high against "andersen" elsewhere in this project. Fixed with
_match_sign(): since zodiac names are a small, fixed, single-word
vocabulary, an exact whole-word match is tried first, only falling back
to fuzzy match_one() for near-misses (e.g. a slightly misheard STT
transcription).
Credits
Content sourced from freehoroscopeapi.com - free and open, no API key required.
Category
Entertainment
Tags
#horoscope #astrology #zodiac #provider
Release files for ovos-skill-horoscope-readings 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ovos_skill_horoscope_readings-0.1.1.tar.gz | 28.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ovos_skill_horoscope_readings-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.9 kB
Release files / ovos_skill_horoscope_readings-0.1.1.tar.gz
| Download URL | ovos_skill_horoscope_readings-0.1.1.tar.gz |
|---|---|
| Size | 28.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1121687e058cf0dbb8b7cec084cf01fb71172cede94ca0ad9de01ce140a516b7
|
|
BLAKE2b-256 checksum How to use checksums |
e6f9cc384315132d97676c0b0ef802a56980fd0638745f85200bb7748f2dbfda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 25, 2026.
Transparency logRelease files / ovos_skill_horoscope_readings-0.1.1-py3-none-any.whl
| Download URL | ovos_skill_horoscope_readings-0.1.1-py3-none-any.whl |
|---|---|
| Size | 30.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77d9c22559a088491666283fa9ec30d9e3f3487aacd2eba379f12b5595de39b0
|
|
BLAKE2b-256 checksum How to use checksums |
96faf997a339f6ea24ae3ea9b8eb5d0296ab02e855af3df802133503d2fe878c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 25, 2026.
Transparency log