Coding

ai-newsletter

Try it

Generate a daily AI news newsletter from fresh web sources. Use when the user asks for a current AI digest, AI news roundup, curated newsletter, or daily AI...

What it does

Generate a concise daily AI newsletter from fresh web sources.

The skill document

AI Newsletter Daily

Generate a concise daily AI newsletter from fresh web sources.

Use this skill only for current AI/ML news, releases, research, funding, product launches, model updates, regulation, benchmarks, or practitioner-relevant developments.

Do not use for evergreen explainers, non-AI topics, or long-form research that is not intended to become a curated newsletter.

Inputs

Defaults:

  • target_news_count = 20
  • search_query = "latest AI news today"
  • search_time_window_days = 2
  • max_search_results = 60
  • min_articles_required = 10
  • include_domains = []
  • exclude_domains = ["youtube.com", "reddit.com", "facebook.com", "x.com", "twitter.com"]
  • summary_model = "host-default"
  • max_scrape_retries = 2

Bounds:

  • target_news_count: 1..50
  • search_time_window_days: 1..14
  • max_search_results: 20..120
  • min_articles_required: 1..50
  • max_scrape_retries: 0..5

If min_articles_required > target_news_count, set it to target_news_count.

Batch policy

  • Search up to max_search_results candidates.
  • Keep the top target_news_count * 2 candidates for fetch attempts.
  • Return only the top target_news_count verified items.
  • Do not summarize every search result.

Required outputs

Return:

  1. newsletter_items as a list of objects.
  2. markdown_newsletter as a string.
  3. json_newsletter as an object.

Each item must include:

  • title
  • url
  • domain
  • published_at
  • summary
  • relevance_score
  • source_query

Use "unknown" for missing published_at.

Workflow

  1. Resolve inputs.

    • Apply defaults and bounds.
    • Initialize warnings = [], seen_canonical_urls = set(), processed_urls = set().
  2. Search.

    • Run web_search with search_query.
    • If no usable results, retry once with:
      • "{search_query} generative AI LLM model open source enterprise"
    • If still no usable results, fail clearly.
  3. Normalize and filter.

    • Keep only results with non-empty title and URL.
    • Canonicalize URLs: lowercase host, remove tracking parameters, normalize safe trailing slashes.
    • Drop duplicates by canonical URL.
    • Apply include_domains and exclude_domains.
    • Prefer results likely within search_time_window_days.
    • Keep unknown dates, but score them lower.
  4. Rank.

    • Score each candidate from 0 to 100:
      • AI-topic relevance: 0..50
      • Freshness: 0..30
      • Title/snippet clarity: 0..20
    • Sort by:
      • relevance_score desc
      • published_at desc, unknown last
      • url asc
    • Keep the top target_news_count * 2 candidates.
  5. Verify and summarize.

    • Process candidates in ranked order until target_news_count verified items are collected.
    • Skip candidates whose canonical URL is already in processed_urls.
    • Attempt web_fetch up to max_scrape_retries + 1 times.
    • If fetch fails, add a warning with the URL and reason, then continue.
    • Cross-check search result vs fetched page using:
      • title similarity,
      • domain consistency,
      • topic alignment,
      • published date when available.
    • If the page appears materially inconsistent, skip it and warn.
    • Summarize in one plain-text paragraph, max about 80 words.
    • Focus on why it matters to AI practitioners.
    • If summary generation fails, warn and continue.
    • Append the enriched item.
  6. Minimum quality gate.

    • If collected items are fewer than min_articles_required, run one fallback search with:
      • "AI news today machine learning model release funding research"
    • Process only new candidates not already seen or processed.
    • Repeat filtering, ranking, verification, and summarization.
  7. Final integrity check.

    • Ensure every final item has non-empty title, url, domain, summary, source_query, and numeric relevance_score.
    • Ensure each URL appears once.
    • Ensure markdown_newsletter and json_newsletter match in item count.
    • Remove and warn on any invalid item.
  8. Finalize.

    • Sort by relevance_score desc, then published_at desc.
    • Truncate to target_news_count.
    • Render markdown_newsletter.
    • Assemble json_newsletter.
    • Return all outputs.

Verification rules

Accept an item only if it passes these checks:

  • URL integrity:

    • canonical URL is valid,
    • duplicates removed,
    • malformed URLs rejected.
  • Source consistency:

    • search title and fetched title broadly match,
    • snippet and page content describe the same story,
    • off-topic pages rejected.
  • Metadata sanity:

    • valid published date preferred,
    • unknown date allowed only if the rest is strong,
    • malformed or impossible dates rejected.
  • Content integrity:

    • fetched content must be substantively about the same AI news item,
    • truncated or malformed pages rejected.
  • Warning log:

    • record every failed URL and reason,
    • record whether fallback search was used.

Markdown format

markdown_newsletter must use:

  • H1 title with date.
  • One H2 section per article.
  • One short summary paragraph per article.
  • One source link per article.

Example:

AI Newsletter Daily — 2026-04-28

1. Article title

Summary paragraph.

Source: link

Warnings

Only include this section when needed.

Failure policy

Hard fail only when:

  • Both initial and fallback searches return no usable URLs.
  • Required tools are unavailable.

Soft fail and continue when:

  • A single fetch fails.
  • A single summary fails.
  • published_at is missing.
  • A candidate fails cross-check verification.

Partial success is acceptable when the result count is between min_articles_required and target_news_count.

Always include actionable warnings with URL, short reason, and whether fallback search was used.

Safety rules

  • Use only sanctioned tools.
  • Do not request API keys from the user.
  • Do not expose secrets.
  • Do not include copyrighted full article text.
  • Keep summaries neutral, concise, and factual.
  • Preserve deterministic behavior wherever tool outputs allow.

Return shape

json_newsletter must contain:

  • date
  • query
  • count
  • articles
  • warnings

Related skills

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

More from j3ffyang

Browse all skills

Polish a technical blog draft into an 800–1000 word, 3–4 section zh-CN article, preserve technical terms/code, and generate consistent hero + per-section image prompts when the user asks to polish and translate a blog with images.

by j3ffyang28 installs

Generate video from supplied image using Veo-3.0 async API. Gemini vision analyzes image, Veo creates video via predictLongRunning. All outputs in ~/.openclaw/workspace/tibetanProc/ with yymmddHHMM prefix.

by j3ffyang17 installs

Read a plain Markdown file (e.g. 260321_openclawConfig.md), generate header and section images using the default OpenClaw image model and API key from ~/openclaw/.env, create a new *_img.md copy with embedded PNGs, and move all generated images into an img/ folder next to the original file.

by j3ffyang13 installs

Polish a technical blog draft into a 1000–1200 word, 4–5 section en-US article, preserve technical terms/code, and generate one consistent hero image prompt.

by j3ffyang17 installs

Help the user draft, review, and polish blog posts in Markdown, keeping the original languages and informal tone.

by j3ffyang25 installs

Generate a daily AI news newsletter for a Chinese audience from fresh web sources, summarizing current AI/ML articles into Markdown and JSON with Simplified...

by j3ffyang13 installs