picture-of-the-day

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

Claude CodeCursorClineWindsurfCodexGooseGitHub CopilotZed

0

total installs

0

this week

0

upvotes

Install Skill

Run in your terminal

$browse install apod.nasa.gov/picture-of-the-day-cfmvdu

0

installs

0

this week

stars

Installation Guide

How to use picture-of-the-day on Cursor

AI-first code editor with Composer

1

Prerequisites

Before installing skills in Cursor, ensure your development environment meets these requirements:

  • Cursor installed and configured on your machine
  • Node.js 16+ with npm — verify with node --version
  • Active project directory where you want to add picture-of-the-day
2

Run the install command

Execute the skills CLI command in your project's root directory to begin installation:

$browse install apod.nasa.gov/picture-of-the-day-cfmvdu

Fetches picture-of-the-day from apod.nasa.gov/picture-of-the-day-cfmvdu and configures it for Cursor.

3

Select Cursor when prompted

The CLI shows a list of agents. Use arrow keys and space to select Cursor:

◆ Which agents do you want to install to?
│ ── Universal (.agents/skills) ────────────────
│ · Cline · Codex · Goose · Windsurf
│ ●Cursor(selected)
│ · Cursor · Aider · Continue
4

Verify installation

Confirm successful installation by checking the skill directory location:

.cursor/skills/picture-of-the-day

Restart Cursor to activate picture-of-the-day. Access via /picture-of-the-day in your agent's command palette.

Security Notice

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.

Documentation

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

NASA Astronomy Picture of the Day

Purpose

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.

When to Use

  • "What's NASA's picture of the day?" / "Show me today's APOD."
  • A daily digest, ambient display, lock screen, or chat-bot daily-image card.
  • Building a backfill of historical APODs (the same API supports a date=YYYY-MM-DD parameter to retrieve any day from 1995-06-16 onward).
  • Any flow that needs the picture-of-the-day's image binary, HD URL, or its written explanation.

Workflow

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.

1. Get an API key (one-time)

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.

2. Single API call

curl -fsS "https://api.nasa.gov/planetary/apod?api_key=${NASA_API_KEY:-DEMO_KEY}"

Optional query params:

ParamTypeDefaultNotes
dateYYYY-MM-DDtoday (US/Eastern)Earliest valid value: 1995-06-16.
start_date / end_dateYYYY-MM-DDReturns a JSON array. end_date defaults to today when start_date is given alone. Mutually exclusive with date.
countint 1–100Returns that many random APODs. Mutually exclusive with date / start_date.
thumbstrue / falsefalseWhen media_type === "video", include a thumbnail_url. Strongly recommended — videos have no url you can display as an image.
hdtrue / falsefalseLegacy/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"

3. Parse the response

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.

4. Download the image bytes (optional)

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"

Browser fallback

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:

  1. 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).
  2. 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 any
  3. Resolve relative image URLs against https://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.

Site-Specific Gotchas

  • Video days are common (~10–15% of entries). Always branch on 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 semantics are US/Eastern. The "today" APOD rolls over at midnight Eastern Time, not UTC. Around 04:00–05:00 UTC, "today" can be different depending on which clock you're on. If you need a stable daily artifact, query with an explicit date=YYYY-MM-DD computed in America/New_York.
  • Earliest valid date is 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.
  • Rate limits are per-IP, not per-key, for 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", ... } }.
  • HTTP 400 on a future date. Submitting date= in the future returns 400, not 404. Validate client-side.
  • Sporadic HTTP 500 with body "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.
  • The image is hosted on apod.nasa.gov, not api.nasa.gov. If your network policy whitelists API hosts only, you must add apod.nasa.gov to download bytes.
  • No CORS-friendly endpoint. 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.
  • Don't expect a stable "permalink" beyond the archive URL. 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.
  • Sandbox validation caveat (this generation run): the agent runtime did not have outbound DNS to 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.

Expected Output

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.

List & Monetize Your Skill

Submit your Claude Code skill and start earning

Get started →

Use Cases

Task Automation & Efficiency

Automate repetitive workflows and reduce manual effort

Example

Generate reports, summarize documents, draft communications

Save 3-5 hours per week on routine tasks

Knowledge Enhancement

Learn new skills, understand complex topics, get expert guidance

Example

Explain concepts, provide examples, suggest learning resources

Accelerate learning and skill development by 2x

Quality Improvement

Enhance output quality through reviews, suggestions, and refinements

Example

Review drafts, suggest improvements, catch errors

Improve work quality by 30-40% with less effort

Implementation Guide

Prerequisites

  • Claude Desktop or compatible AI client with skill support
  • Clear understanding of task or problem to solve
  • Willingness to iterate and refine outputs

Time Estimate

15-45 minutes depending on use case complexity

Steps

  1. 1Install skill using provided installation command
  2. 2Test with simple use case relevant to your work
  3. 3Evaluate output quality and relevance
  4. 4Iterate on prompts to improve results
  5. 5Integrate into regular workflow if valuable

Common Pitfalls

  • Expecting perfect results without iteration
  • Not providing enough context in prompts
  • Using skill for tasks outside its intended scope
  • Accepting outputs without review and validation

Best Practices

✓ Do

  • +Start with clear, specific prompts
  • +Provide relevant context and constraints
  • +Review and refine all outputs before using
  • +Iterate to improve output quality
  • +Document successful prompt patterns

✗ Don't

  • Don't use without understanding skill limitations
  • Don't skip validation of outputs
  • Don't share sensitive information in prompts
  • Don't expect skill to replace human judgment

💡 Pro Tips

  • Be specific about desired format and style
  • Ask for multiple options to choose from
  • Request explanations to understand reasoning
  • Combine AI efficiency with human expertise

When to Use This

✓ 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.

Learning Path

  1. 1Familiarize yourself with skill capabilities and limitations
  2. 2Start with low-risk, non-critical tasks
  3. 3Progress to more complex and valuable use cases
  4. 4Build expertise through regular use and experimentation

Related Skills

Reviews

4.437 reviews
  • D
    Dhruvi JainDec 28, 2024

    Solid pick for teams standardizing on skills: picture-of-the-day is focused, and the summary matches what you get after install.

  • A
    Amina RobinsonDec 24, 2024

    Registry listing for picture-of-the-day matched our evaluation — installs cleanly and behaves as described in the markdown.

  • D
    Dev GillDec 8, 2024

    I recommend picture-of-the-day for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • D
    Dev VermaNov 27, 2024

    picture-of-the-day reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • O
    OshnikdeepNov 19, 2024

    We added picture-of-the-day from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • R
    Rahul SantraNov 19, 2024

    picture-of-the-day is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • F
    Fatima AbbasNov 15, 2024

    Useful defaults in picture-of-the-day — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • T
    Tariq JacksonOct 18, 2024

    Registry listing for picture-of-the-day matched our evaluation — installs cleanly and behaves as described in the markdown.

  • G
    Ganesh MohaneOct 10, 2024

    picture-of-the-day fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • P
    Pratham WareOct 10, 2024

    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

1 / 4

Discussion

Comments — not star reviews
  • No comments yet — start the thread.