본문으로 건너뛰기
cccskills
무료GitHub에 공개

exa-monitor

Scheduled Exa web search monitor. Uses CronCreate to search configured topics every 4 hours via mcp__Exa__web_search_exa, deduplicates URLs via MemoryRecord, and stores summaries for morning briefing integration.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

실행 점수 미검증

설치 방법 보기

포함된 파일(10)

  • SKILL.md4.6 KB
  • commands/exa-monitor.md111 B
  • hooks/post-execute.cjs175 B
  • hooks/pre-execute.cjs281 B
  • references/research-requirements.md545 B
  • rules/exa-monitor.md469 B
  • schemas/input.schema.json559 B
  • schemas/output.schema.json358 B
  • scripts/main.cjs583 B
  • templates/implementation-template.md295 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

<!-- Agent: nodejs-pro | Task: #12 | Session: 2026-03-08 -->

Exa Monitor Skill

Polls the Exa search engine every 4 hours for topics configured in EXA_MONITOR_TOPICS. Deduplicates results against previously seen URLs, stores new summaries in named memory, and integrates with the morning briefing loop.


Setup

  1. Set EXA_MONITOR_TOPICS in .env:

    EXA_MONITOR_TOPICS=["Claude AI updates","agent frameworks","LLM tooling","AI safety"]
    
  2. Start the monitor loop:

    /loop 4h Skill({ skill: 'exa-monitor' })
    

    Or via CronCreate:

    CronCreate({
      schedule: '0 */4 * * *',
      task: "Invoke Skill({ skill: 'exa-monitor' }) to fetch new Exa search results",
    });
    

Core Logic

Step 1: Load Topics and Seen URLs

let topics;
try {
  topics = JSON.parse(process.env.EXA_MONITOR_TOPICS || '["Claude AI updates","agent frameworks"]');
} catch (_e) {
  topics = ['Claude AI updates', 'agent frameworks'];
}

// Load previously seen URLs from memory
const seenRaw = await readMemory('exa-seen-urls');
const seenUrls = new Set(seenRaw ? JSON.parse(seenRaw) : []);

Step 2: Search Each Topic via Exa MCP

// Use Exa MCP tool (preferred — returns structured results)
// Skill({ skill: 'exa-monitor' }) invokes mcp__Exa__web_search_exa internally:
// mcp__Exa__web_search_exa({ query: topic, numResults: 5, useAutoprompt: true })

// Falls back to mcp__Exa__get_code_context_exa for technical topics

Step 3: Filter and Deduplicate

const newResults = [];
for (const result of exaResults) {
  if (seenUrls.has(result.url)) continue;
  seenUrls.add(result.url);
  newResults.push({
    title: result.title,
    url: result.url,
    summary: result.text?.slice(0, 400) || result.highlights?.join(' ') || '',
    topic,
    publishedDate: result.publishedDate,
  });
}

// Persist seen URLs via named memory (cap at 2000)
const seenArr = [...seenUrls].slice(-2000);
await writeMemory('exa-seen-urls', JSON.stringify(seenArr));

Step 4: Append to Digest

if (newResults.length > 0) {
  const digest = newResults
    .map(
      r =>
        `## ${r.title}\n**Topic:** ${r.topic}\n**Published:** ${r.publishedDate || 'unknown'}\n${r.summary}...\n[Read →](${r.url})\n`
    )
    .join('\n---\n');

  // Append to exa-digest.md
  const existing = fs.existsSync('.claude/context/memory/named/exa-digest.md')
    ? fs.readFileSync('.claude/context/memory/named/exa-digest.md', 'utf8')
    : '';
  fs.writeFileSync(
    '.claude/context/memory/named/exa-digest.md',
    `${existing}\n\n## Exa Update — ${new Date().toISOString().slice(0, 10)}\n\n${digest}`
  );
}

Integration with Morning Briefing

/loop at 8:00am Read .claude/context/memory/named/exa-digest.md and arxiv-digest.md. Summarize the most relevant news and papers for agent-studio development. Highlight any urgent developments.

Configuration Reference

VariableDefaultDescription
EXA_MONITOR_TOPICS["Claude AI updates"]JSON array of search topics
EXA_MAX_RESULTS5Max results per topic per run
EXA_AUTOPROMPTtrueLet Exa optimize the query automatically

Deduplication

  • Seen URLs stored via writeMemory('exa-seen-urls', ...) (named memory API)
  • Capped at 2000 most recent URLs
  • Reset with: await writeMemory('exa-seen-urls', '[]')

Related Skills

  • scheduled-tasks — CronCreate API
  • arxiv-monitor — ArXiv companion monitor for academic papers
  • heartbeat — Full heartbeat ecosystem including this loop
  • memory-search — Search the exa-digest for specific topics

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Ensure accessibility in UI components including semantic HTML, ARIA attributes, keyboard navigation, and WCAG 2.2 AA compliance.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

oimiragieo/agent-studio432026년 7월 14일 업데이트

Use when you want to improve response quality through meta-cognitive reasoning. Applies 15+ reasoning methods to reconsider and refine initial outputs.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

oimiragieo/agent-studio432026년 7월 14일 업데이트

N-round opposing-stance debates for trade-off analysis. Assigns pro/con roles to agents, runs structured debate rounds with quality scoring, and produces a moderator synthesis with confidence-rated recommendation. Generalizable to architecture, technology, security, and design decisions.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

oimiragieo/agent-studio432026년 7월 14일 업데이트

Force adversarial code review stance that eliminates confirmation bias — reviewer must find issues or re-analyze

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

oimiragieo/agent-studio432026년 7월 14일 업데이트

Creates specialized AI agents on-demand when no existing agent matches a request. Use when the Router cannot find a suitable agent for a task. Enables self-evolution by generating persistent agents.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

oimiragieo/agent-studio432026년 7월 14일 업데이트

LLM-as-judge evaluation framework with 5-dimension rubric (accuracy, groundedness, coherence, completeness, helpfulness) for scoring AI-generated content quality with weighted composite scores and evidence citations

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

oimiragieo/agent-studio432026년 7월 14일 업데이트

oimiragieo의 스킬 모두 보기

이 스킬의 문제 신고