# How k-skill Automates Naver Service Interactions for AI Agents

> Automate Naver service interactions for AI agents using k-skill. Query Naver Blog, News, and Shopping programmatically via CLI without private API keys. Production-grade automation for your AI projects.

- Repository: [NomaDamas/k-skill](https://github.com/NomaDamas/k-skill)
- Tags: how-to-guide
- Published: 2026-08-03

---

**Yes, the k-skill repository provides production-grade automation for Naver Blog, Naver News, and Naver Shopping, allowing AI agents to query these services programmatically via standardized CLI commands without requiring private API credentials.**

The **k-skill** framework from NomaDamas bundles three first-party skills specifically designed to let AI agents interact with Naver's ecosystem. These skills handle authentication, rate limiting, and response normalization automatically, exposing a unified JSON interface that agents can consume directly.

## Three First-Party Naver Skills

The repository ships with dedicated skills for the three major Naver services, each optimized for agentic consumption.

### Naver Blog Research

The `naver-blog-research` skill scrapes public blog search results using only Python's standard library. It fetches full post HTML and can download associated images without requiring any authentication tokens.

According to the source code, the core logic resides in [`naver-blog-research/scripts/naver_search.py`](https://github.com/NomaDamas/k-skill/blob/main/naver-blog-research/scripts/naver_search.py), which implements the scraping logic described in the skill's documentation at [`naver-blog-research/SKILL.md`](https://github.com/NomaDamas/k-skill/blob/main/naver-blog-research/SKILL.md). This skill is unique among the three because it operates entirely without API keys, making it immediately deployable for agents.

### Naver News Search

The `naver-news-search` skill queries Naver's Open API endpoint at `https://openapi.naver.com/v1/search/news.json`. The implementation in [`packages/k-skill-proxy/src/naver-news.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/naver-news.js) normalizes titles, links, and timestamps into a consistent format.

While the proxy layer can inject `clientId` and `clientSecret` if provided by the host, the skill functions without these credentials, routing requests through a proxy that handles the upstream communication.

### Naver Shopping Search

The `naver-shopping-search` skill implements a dual-strategy approach in [`packages/k-skill-proxy/src/naver-shopping.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/naver-shopping.js). It first attempts to use the official Naver Shopping Open API, then falls back to the public BFF JSON endpoint at `https://ns-portal.shopping.naver.com/api/v2/shopping-paged-slot` if needed.

This skill normalizes product titles, prices, and seller links, and supports local re-sorting of results to give agents flexibility in how they present commerce data.

## Proxy-Centric Architecture for Reliable Automation

All three Naver skills share a common **proxy-centric architecture** that ensures consistent behavior and error handling.

### Request Validation and Normalization

Each skill implements a `normalize...Query` helper to validate parameters before upstream calls. For example, `normalizeNaverNewsSearchQuery` in [`packages/k-skill-proxy/src/naver-news.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/naver-news.js) (lines 95-108) checks required parameters, clamps result limits, and throws descriptive errors for malformed queries.

### Upstream Fetching with Error Handling

The proxy wraps upstream API calls in standardized fetch functions. In [`packages/k-skill-proxy/src/server.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/server.js) (lines 48-37), the `fetchNaverShoppingSearch` usage demonstrates how errors from Naver's endpoints are caught and wrapped into a standard payload containing `error`, `message`, and optional `upstream` fields, preventing agents from receiving raw HTTP errors.

### Intelligent Caching Layer

To reduce load on Naver's infrastructure and improve response times, the proxy implements an LRU cache using deterministic keys generated by `makeCacheKey`. The cache handling logic in [`packages/k-skill-proxy/src/server.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/server.js) (lines 9-27) stores repeated queries in memory, serving identical agent requests instantly.

### Uniform Response Schema

Regardless of which Naver service is queried, the proxy returns a consistent JSON structure: `{items, query, meta, upstream?, proxy}`. This uniformity allows AI agents to parse results using a single code path, switching between blog research, news monitoring, or price comparison without adjusting their response handlers.

## How AI Agents Invoke Naver Skills

AI agents interact with these services through standardized CLI wrappers provided by `k-skill-cli`. The `npx` command automatically resolves skill assets and pipes JSON output to stdout, making it trivial for language models to parse results and determine next actions.

```bash

# Search Naver blogs for "서울 맛집" (top 5 results)

npx -y @nomadamas/k-skill@0 exec naver-blog-research scripts/naver_search.py -- "서울 맛집" --count 5 --sort sim

```

```bash

# Pull latest news about "코로나바이러스"

npx -y @nomadamas/k-skill@0 exec naver-news-search scripts/naver_news_search.py -- "코로나바이러스" --display 10

```

```bash

# Compare prices for "무선 충전기" on Naver Shopping

npx -y @nomadamas/k-skill@0 exec naver-shopping-search scripts/naver_shopping_search.py -- "무선 충전기" --limit 10 --sort price_asc

```

These commands return normalized JSON that agents can process to display results, ask clarifying questions, or proceed to checkout actions. The runtime audit table in [`docs/runtime-action-audit.md`](https://github.com/NomaDamas/k-skill/blob/main/docs/runtime-action-audit.md) (line 118) marks these skills as "commerce" capable, meaning they support safe chaining to clarification steps before order placement.

## Key Implementation Files

- **[`packages/k-skill-proxy/src/naver-news.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/naver-news.js)** — Implements Naver News Open API query construction, parameter normalization, and response payload formatting.
- **[`packages/k-skill-proxy/src/naver-shopping.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/naver-shopping.js)** — Handles Naver Shopping BFF JSON fallback, price parsing, URL normalization, and result ordering.
- **[`packages/k-skill-proxy/src/server.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/server.js)** — Exposes HTTP routes `/v1/naver-news/search` and `/v1/naver-shopping/search`, managing the caching layer and error wrapping middleware.
- **[`naver-blog-research/scripts/naver_search.py`](https://github.com/NomaDamas/k-skill/blob/main/naver-blog-research/scripts/naver_search.py)** — Python implementation for public blog search and image extraction.
- **[`naver-blog-research/instruction.md`](https://github.com/NomaDamas/k-skill/blob/main/naver-blog-research/instruction.md)** — Human-readable usage specifications for the blog research skill.
- **[`packages/k-skill-cli/skills/naver-news-search/skill.json`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-cli/skills/naver-news-search/skill.json)** — Metadata profile defining the news skill's interfaces and capabilities.
- **[`packages/k-skill-cli/skills/naver-shopping-search/skill.json`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-cli/skills/naver-shopping-search/skill.json)** — Metadata profile for the shopping skill's configuration.

## Summary

- **k-skill** provides three production-ready skills for **Naver Blog**, **Naver News**, and **Naver Shopping** automation.
- The **proxy-centric architecture** enforces request validation, intelligent caching, and uniform JSON responses across all services.
- AI agents invoke these skills via **standardized CLI commands** using `npx`, receiving structured data that requires no HTML parsing.
- **No private API keys** are required for blog research, while news and shopping skills can operate with or without credentials via the proxy layer.
- Error handling and upstream response normalization are implemented in [`packages/k-skill-proxy/src/server.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/server.js), ensuring agents receive predictable data structures even when Naver's APIs fail.

## Frequently Asked Questions

### Do I need Naver API credentials to use k-skill?

No credentials are required for the `naver-blog-research` skill, which scrapes public data using only Python's standard library. For `naver-news-search` and `naver-shopping-search`, the proxy can inject `clientId` and `clientSecret` if available, but both skills include fallback mechanisms that work without authentication, routing through public endpoints or BFF APIs.

### How does k-skill handle rate limiting from Naver's APIs?

The proxy implements an **in-memory LRU cache** using `makeCacheKey` to serve repeated queries instantly, reducing redundant calls to Naver's infrastructure. Additionally, request normalization helpers clamp result limits and validate parameters before upstream calls occur, preventing malformed requests that might trigger rate limits.

### Can AI agents modify the sorting or filtering of Naver Shopping results?

Yes. The `naver-shopping-search` skill supports local re-sorting of results after fetching them from the BFF JSON endpoint. Agents can specify sort orders like `price_asc` or `price_desc` via CLI arguments, and the normalization logic in [`packages/k-skill-proxy/src/naver-shopping.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/naver-shopping.js) handles the reordering before returning the final payload.

### What happens if a Naver API endpoint returns an error?

The proxy layer in [`packages/k-skill-proxy/src/server.js`](https://github.com/NomaDamas/k-skill/blob/main/packages/k-skill-proxy/src/server.js) catches upstream errors and wraps them into a standardized response containing `error`, `message`, and optional `upstream` fields. This ensures AI agents receive predictable JSON structures rather than raw HTTP errors, allowing them to implement graceful degradation or retry logic based on the error type.