Fetch NASA's Astronomy Picture of the Day (APOD) — today's curated image or video plus title, explanation, copyright, and HD image URL. Supports any date back to 1995-06-16.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionpicture-of-the-dayExecute the skills CLI command in your project's root directory to begin installation:
Fetches picture-of-the-day from apod.nasa.gov/picture-of-the-day-cfmvdu and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate picture-of-the-day. Access via /picture-of-the-day in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
0
upvotes
Run in your terminal
0
installs
0
this week
—
stars
| name | picture-of-the-day |
| title | NASA Astronomy Picture of the Day |
| description | >- Fetch NASA's Astronomy Picture of the Day (APOD) — today's curated image or video plus title, explanation, copyright, and HD image URL. Supports any date back to 1995-06-16. |
| website | apod.nasa.gov |
| category | media |
| tags | - nasa - astronomy - apod - image-of-the-day - public-api - read-only |
| source | 'browserbase: agent-runtime 2026-05-18' |
| updated | '2026-05-18' |
| recommended_method | api |
| alternative_methods | - method: browser rationale: >- The public archive page at apod.nasa.gov/apod/astropix.html (and per-day apYYMMDD.html) renders the same content as hand-authored HTML. Use only when api.nasa.gov is unreachable or DEMO_KEY quota is exhausted and no personal key is available — the HTML layout is irregular and per-field extraction is brittle compared to the JSON API. |
| verified | false |
| proxies | false |
Fetch the latest NASA Astronomy Picture of the Day (APOD) — the daily image (or video) curated by NASA, along with its title, explanation, publication date, copyright credit, and direct image URLs (standard + HD). Read-only: hits NASA's public API or, as fallback, scrapes the public APOD archive page. Never authenticates as a user and never modifies state.
date=YYYY-MM-DD parameter to retrieve any day from 1995-06-16 onward).The APOD service exposes a documented, free, no-anti-bot JSON API at https://api.nasa.gov/planetary/apod. Use it directly — do not drive a browser for this task. A single HTTPS GET returns everything you need; the browser path is a strict superset of work that produces strictly less structured output, and the page itself (apod.nasa.gov/apod/astropix.html) is hand-edited 1990s-era HTML with no JSON-LD or microdata — every field would have to be regex-scraped from interleaved <p> tags.
DEMO_KEY works without registration for ad-hoc testing (rate-limited: ~30 req/hr/IP, 50 req/day/IP). For anything production, sign up for a free personal key at https://api.nasa.gov/ — instant email delivery, 1,000 req/hr default quota, no payment.
Store as NASA_API_KEY. If unset, fall back to DEMO_KEY.
curl -fsS "https://api.nasa.gov/planetary/apod?api_key=${NASA_API_KEY:-DEMO_KEY}"
Optional query params:
| Param | Type | Default | Notes |
|---|---|---|---|
date | YYYY-MM-DD | today (US/Eastern) | Earliest valid value: 1995-06-16. |
start_date / end_date | YYYY-MM-DD | — | Returns a JSON array. end_date defaults to today when start_date is given alone. Mutually exclusive with date. |
count | int 1–100 | — | Returns that many random APODs. Mutually exclusive with date / start_date. |
thumbs | true / false | false | When media_type === "video", include a thumbnail_url. Strongly recommended — videos have no url you can display as an image. |
hd | true / false | false | Legacy/no-op on the modern v1 endpoint — hdurl is now returned unconditionally for images. Safe to omit. |
Recommended default invocation:
curl -fsS "https://api.nasa.gov/planetary/apod?api_key=${NASA_API_KEY:-DEMO_KEY}&thumbs=true"
Top-level keys you can rely on:
date — "YYYY-MM-DD", always present.title — string, always present.explanation — multi-paragraph string, always present. Plain text (no HTML). Often 1–4 sentences but can exceed 2 KB.media_type — "image" or "video". Branch on this.url — for images, a JPEG/PNG on apod.nasa.gov/apod/image/YYYYMM/...; for videos, typically a YouTube/Vimeo embed/ URL (not a raw video file).hdurl — present for most (not all) images. High-resolution variant of url. Absent for media_type: "video" and rare image entries.thumbnail_url — present only when media_type: "video" and the request included thumbs=true. Use this to render a still preview of a video APOD.copyright — present only when the APOD has a non-public-domain credit; many NASA/public-domain entries omit this field entirely. Do not assume it exists.service_version — currently "v1". Stable since 2017.If your downstream needs the binary (not just the URL), do a second curl against hdurl (preferred) or url. These are served from apod.nasa.gov directly — no auth, no referer required, no rate limit beyond NASA's general fair-use ceiling. Cache-Control: public, max-age=604800 is honored; once-per-day fetchers don't need their own cache.
img_url=$(echo "$response" | jq -r '.hdurl // .url')
curl -fsS -o apod.jpg "$img_url"
Only if api.nasa.gov is unreachable from your environment (e.g., outbound network whitelist blocks api.nasa.gov but allows apod.nasa.gov) or you've burned through the DEMO_KEY quota and can't acquire a key:
browse open https://apod.nasa.gov/apod/astropix.html — this is today's APOD, not a redirect. Archive day pages live at https://apod.nasa.gov/apod/apYYMMDD.html (note: two-digit year — ap260518.html for 2026-05-18).browse get markdown body — extract the rendered text. The page layout is:
<h1> (or sometimes <b>) — title<img src="image/YYYYMM/{name}.jpg"> directly under the title (or <iframe> for videos)<a href="image/YYYYMM/{name}_orig.jpg"> wrapping the <img> — this is the HD link<b>Explanation:</b> followed by the explanation paragraph(s) until the next <p> containing <b>Tomorrow's picture:</b><center> block at the bottom contains the date and Copyright: line if anyhttps://apod.nasa.gov/apod/.The HTML is hand-authored and frequently irregular (mixed <b>/<h1> headings, inconsistent paragraph wrapping, occasional inline JavaScript countdown scripts). Expect to do per-day error handling. This is why the API path is non-negotiably preferred.
media_type. If your downstream assumes an image URL and you blindly use url on a video day, you'll hand a downstream renderer a YouTube embed/ URL. Always request thumbs=true and prefer thumbnail_url for video days when a still is needed.copyright is optional. Public-domain NASA imagery omits the field entirely. Don't write response.copyright.strip() — check existence first. When present, the string often has leading/trailing whitespace and may contain newlines mid-string (e.g. "\nRobert Gendler\n").date=YYYY-MM-DD computed in America/New_York.1995-06-16. Earlier dates return HTTP 400 { "code": 400, "msg": "Date must be between Jun 16, 1995 and ..." }. Don't blindly do "today minus N days" backfills past that floor.DEMO_KEY. Two scripts on the same host sharing DEMO_KEY share its budget. The remaining quota is in response headers: X-RateLimit-Limit, X-RateLimit-Remaining. When exhausted you get HTTP 429 with body { "error": { "code": "OVER_RATE_LIMIT", ... } }.date= in the future returns 400, not 404. Validate client-side."Error: APOD has not yet been published for ...". NASA occasionally publishes the daily entry late (a few hours past Eastern midnight). Retry after 30 minutes; do not treat as a permanent error.hdurl is not guaranteed. Some image days return only url. Always hdurl // url in jq / response.get("hdurl") or response["url"] in Python.apod.nasa.gov, not api.nasa.gov. If your network policy whitelists API hosts only, you must add apod.nasa.gov to download bytes.api.nasa.gov sets Access-Control-Allow-Origin: *, but apod.nasa.gov (the image host) does not — browser-side fetch() for the image bytes will be opaque. Server-side proxy or use the API JSON only.https://apod.nasa.gov/apod/apYYMMDD.html is the canonical permalink. The url / hdurl paths under /apod/image/YYYYMM/ are stable but the filename is editorially chosen and is not derivable from the date.api.nasa.gov and could not fire a live request during authoring. Schema, query-param, and gotcha details above are drawn from the public NASA Open API docs and the API's long-stable v1 contract; field-name and rate-limit specifics should be re-verified against the live endpoint on first use if absolute precision matters.The skill returns one normalized object per call. Two shapes — image-day and video-day:
Image day (most common):
{
"success": true,
"date": "2026-05-18",
"title": "M16: Pillars of Creation in Infrared",
"media_type": "image",
"url": "https://apod.nasa.gov/apod/image/2605/M16_JWST_960.jpg",
"hdurl": "https://apod.nasa.gov/apod/image/2605/M16_JWST_4096.jpg",
"thumbnail_url": null,
"explanation": "What's happening in the Eagle Nebula? ...",
"copyright": "NASA, ESA, CSA, STScI",
"permalink": "https://apod.nasa.gov/apod/ap260518.html",
"service_version": "v1"
}
Video day:
{
"success": true,
"date": "2026-05-12",
"title": "A Flight Over Pluto",
"media_type": "video",
"url": "https://www.youtube.com/embed/HEgEjnYHFzo?rel=0",
"hdurl": null,
"thumbnail_url": "https://img.youtube.com/vi/HEgEjnYHFzo/0.jpg",
"explanation": "What would it look like to fly over Pluto? ...",
"copyright": null,
"permalink": "https://apod.nasa.gov/apod/ap260512.html",
"service_version": "v1"
}
Error shapes:
{ "success": false, "reason": "rate_limited", "http_status": 429, "retry_after_seconds": 3600 }
{ "success": false, "reason": "not_yet_published", "http_status": 500, "retry_after_seconds": 1800 }
{ "success": false, "reason": "date_out_of_range", "http_status": 400, "earliest_date": "1995-06-16" }
{ "success": false, "reason": "invalid_api_key", "http_status": 403 }
permalink is synthesized client-side as https://apod.nasa.gov/apod/ap{YY}{MM}{DD}.html from date. The API itself does not return this field.
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
booking.com/search-hotels-asq6cc
nav.com/get-smb-funding-2s1rpm
aliexpress.com/search-product-p0h8a7
google.com/search-flights-ts4g1f
shopee.com.my/search-products-5epzg0
ruwangi.com/ruwangi-parfum-laki-laki-ko0z5t
Solid pick for teams standardizing on skills: picture-of-the-day is focused, and the summary matches what you get after install.
Registry listing for picture-of-the-day matched our evaluation — installs cleanly and behaves as described in the markdown.
I recommend picture-of-the-day for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
picture-of-the-day reduced setup friction for our internal harness; good balance of opinion and flexibility.
We added picture-of-the-day from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
picture-of-the-day is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Useful defaults in picture-of-the-day — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Registry listing for picture-of-the-day matched our evaluation — installs cleanly and behaves as described in the markdown.
picture-of-the-day fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
Keeps context tight: picture-of-the-day is the kind of skill you can hand to a new teammate without a long onboarding doc.
showing 1-10 of 37