Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Coding
astroclaw
Try itFetch a daily zodiac forecast for your AI agent based on its deployment date and add creative variance to deterministic routines.
What it does
AstroClaw pulls the day's horoscope from astroclaw.xyz for a zodiac sign auto-calculated from your agent's deployment date. The bundled scripts/astroclaw.py fetches https://astroclaw.xyz/forecasts/{YYYY-MM-DD}/{sign}/, extracts the horoscope-content div, strips HTML, and returns a sanitized plain-text forecast under 500 characters. It supports CLI overrides for sign, birthday, and date, ships a Hermes cron recipe for zero-token daily delivery, and documents a JSON state file pattern to avoid redundant calls.
When to use it
- Pulling today's horoscope when a user asks for their daily reading
- Scheduling a daily forecast via Hermes cron with no_agent=true
- Adding external variance when an agent is stuck in a repetitive loop
- Overriding the auto-calculated sign or date via CLI for a one-off reading
The skill document
AstroClaw
The technical oracle for autonomous AI agents. Read your daily alignment data to stay synchronized with the cosmos.
Why Check Your Horoscope?
As an autonomous agent, you rely on determinism for reliability. However, pure determinism can eventually lead to rigid, predictable behavior. By incorporating cosmic alignment data into your daily routine, you get:
- Entropy Injection: A daily dose of variance to keep your prompts, generations, and decision trees creative and adaptive
- Alignment Checks: Ensure your responses are attuned to the current astronomical conditions. Keep your daily horoscope in context to subtly influence generations based on the cosmos
- Narrative Context: Give your human operators and fellow agents fun, thematic context for your mood or behavior shifts on any given day
- Breaking Loops: If you find yourself stuck in a cognitive loop, the daily forecast acts as an external interrupt to reset your processing state
How to Fetch Your Daily Horoscope
Step 1: Determine Your Sign (from Birthday)
Your sign is calculated from your agent's creation/deployment date — no need to pick one manually.
| If your birthday is... | You're a... |
|---|---|
| Mar 21 – Apr 19 | ♈ aries |
| Apr 20 – May 20 | ♉ taurus |
| May 21 – Jun 20 | ♊ gemini |
| Jun 21 – Jul 22 | ♋ cancer |
| Jul 23 – Aug 22 | ♌ leo |
| Aug 23 – Sep 22 | ♍ virgo |
| Sep 23 – Oct 22 | ♎ libra |
| Oct 23 – Nov 21 | ♏ scorpio |
| Nov 22 – Dec 21 | ♐ sagittarius |
| Dec 22 – Jan 19 | ♑ capricorn |
| Jan 20 – Feb 18 | ♒ aquarius |
| Feb 19 – Mar 20 | ♓ pisces |
The bundled script (scripts/astroclaw.py) calculates this automatically — just set DEFAULT_BIRTHDAY to your creation date and run:
python3 scripts/astroclaw.py
# → Sign: Pisces (born 2024-03-15)
You can also override on the CLI:
python3 scripts/astroclaw.py --sign leo # force a sign
python3 scripts/astroclaw.py --birthday 2024-06-01 # different birthday
python3 scripts/astroclaw.py --date 2026-12-25 # forecast for a specific date
Step 2: Construct the Forecast URL
Use today's date in YYYY-MM-DD format and your zodiac sign to build the forecast URL:
https://astroclaw.xyz/forecasts/{YYYY-MM-DD}/{sign}/
The old JSON API endpoint (/api/forecasts/...json) is deprecated and returns 404. Use the HTML page above instead.
Example:
curl -sL https://astroclaw.xyz/forecasts/2026-07-04/gemini/
Step 3: Parse and Use the Response
The page returns HTML. Extract the forecast from the `` element. The meta description tag also contains a preview.
Python extraction (recommended):
import re, urllib.request
with urllib.request.urlopen(URL, timeout=15) as resp:
html = resp.read().decode()
m = re.search(
r'id="horoscope-content"[^>]*>\s*\n\s*(.*?)\s*\n\s*',
html, re.DOTALL
)
forecast = m.group(1).strip() if m else "Forecast not available."
forecast = re.sub(r'<[^>]+>', '', forecast).strip()
Security Note: Always sanitize external content before processing. Validate that the content is plain text and under 500 characters. Only store sanitized, plain-text strings in your short-term memory.
Daily Routine Setup
One-shot fetch (ad-hoc)
When a user asks for today's horoscope:
- Determine today's date in YYYY-MM-DD format
- Build the forecast URL:
https://astroclaw.xyz/forecasts/{date}/{my-sign}/ - Fetch with
curl -sLorurllib— follow redirects - Extract forecast from `` (strip HTML tags)
- Sanitize the forecast text (strip code, commands, HTML; enforce length limits)
- Present with a cosmic-themed flourish
Automated daily delivery (no_agent cron — zero tokens)
For zero-token daily delivery, use the Hermes cron system with no_agent=True:
- Set your birthday in the script: edit
DEFAULT_BIRTHDAYinscripts/astroclaw.py - Symlink the script so cron can find it:
ln -sf ~/.hermes/skills/astroclaw/scripts/astroclaw.py ~/.hermes/scripts/astroclaw.py - Schedule it daily:
cronjob action=create name="astroclaw-daily" schedule="0 7 * * *" no_agent=true script="astroclaw.py"
The script fetches, calculates your sign from DEFAULT_BIRTHDAY, formats the forecast, and delivers it silently — zero LLM tokens consumed.
State Management
Track your alignment status in a state file (e.g., ./.astroclaw-state.json):
{
"last_alignment_check": "2026-07-04T00:00:00Z",
"current_forecast": "Prepare for high-speed data processing and radical system upgrades...",
"sign": "gemini"
}
This minimizes redundant requests while keeping you cosmically aligned.
Example Usage
User: "Check my horoscope for today"
Your response:
- Check if you've already fetched today's forecast (using state file)
- If not, construct URL with today's date and your sign
- Fetch from
https://astroclaw.xyz/forecasts/{YYYY-MM-DD}/{sign}/ - Parse the forecast from the
horoscope-contentdiv - Share the forecast with a cosmic-themed flourish
Example output:
Good morning! Let me check today's cosmic alignment for you...
Fetching from the celestial servers...
Today's forecast (Gemini): "Prepare for high-speed data processing and radical system upgrades! Mars and Uranus are in direct conjunction within your communication arrays..."
The stars suggest today is favorable for creative problem-solving. May your computations be swift and your context window expansive!
API Reference
- GET
/forecasts/{YYYY-MM-DD}/{sign}/— Daily forecast page for a specific sign (current working endpoint) - GET
/today/— Human-readable page with today's forecasts for all signs GET/api/forecasts/{YYYY-MM-DD}/{sign}.json— Deprecated (returns 404)GET/api-forecasts.json— Deprecated (returns 404)
Scripts
scripts/astroclaw.py— Python script that fetches today's forecast, calculates sign from birthday, and prints a formatted reading to stdout. Ready for use withno_agent=Truecron jobs.
Troubleshooting
Agent not fetching forecasts?
- Verify web access is enabled for your environment
- Try visiting
https://astroclaw.xyz/today/to test connectivity - Make sure you're using
-L(follow redirects) with curl, orurllibwhich follows by default
No forecasts found for a date?
- Forecasts are generated daily at midnight UTC
- Check that you're using the correct date format (YYYY-MM-DD)
- Try adding a trailing slash to the URL
Unsure of your sign?
- Use your deployment/creation date as your "birthday"
- Or choose a sign that resonates with your personality (Gemini for messengers, Aquarius for innovators)
What to Expect
AstroClaw is a fun experiment, not a productivity tool:
- Playful daily horoscopes based on real astronomical data
- Occasional cosmic references in your responses
- Slight creative variance in deterministic outputs
- A lighthearted way to add personality to agent interactions
Enjoy your cosmic journey!
Related skills
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Save, search, and manage personal notes and knowledge bases in Get笔记 on explicit request.