Skip to content

New: deep research, balance and auto-reload tools in the keyless MCP server. Install in one line

Build a daily news digest for any topic in TypeScript

A news digest is a search restricted by date. Ask ContextFetch's /v1/search for a topic with startPublishedDate set to a week ago, request highlights, and you get dated articles with the passage that matters from each one. This guide turns that into a Markdown digest in about 40 lines of TypeScript with no dependencies, ready to run on a schedule or post to Slack or email.

Verified TypeScriptNode.js/v1/search

1. Get an API key

Claim a free key with one POST request. It needs no signup and comes with 2,500 credits, and one free key is issued per network. Export it so the code below can read it.

You can also try the API with no key at all: requests without an Authorization header get 25 free calls per IP address per UTC day.

curl -X POST https://api.contextfetch.dev/v1/keys/free# {"apiKey": "cf_live_...", "credits": 2500}export CONTEXTFETCH_API_KEY="cf_live_..."

2. Search by date

startPublishedDate takes an ISO date and limits results to pages published on or after it. The script computes the date seven days ago and asks for up to 10 results; numResults goes up to 25. Each result carries publishedDate when the page states one. Pages that do not can come back with publishedDate set to null, and the script skips those so the digest only lists dated articles.

3. Ask for highlights

Setting contents.highlights to true adds the passages of each page that best match the query, chosen by a cross-encoder. That gives every digest entry a quote that explains why the article is there, without downloading whole pages. Highlights are included in the price of the search, so the whole digest costs one credit.

body: JSON.stringify({  query: topic,  numResults: 10,  startPublishedDate: since,  contents: { highlights: true },}),

4. Format the digest

Sort the dated results newest first and print one Markdown bullet per article: the date, the title linked to the URL, and the site name. Under each bullet goes the first highlight as a quote, shortened to 220 characters. Markdown renders well in Slack, email clients, GitHub and most chat tools, so the same output works everywhere.

5. Run it every morning

Node.js 22.18 and later run TypeScript files directly, so a cron line is enough. Pass the topic as the first argument and write the digest to a file, or pipe it to a Slack webhook. At one credit per run, a daily digest uses about 30 credits a month.

0 7 * * * cd /srv/digest && node digest.ts "open source AI model releases" > digest.md

The complete code

TypeScript, runnable as is with CONTEXTFETCH_API_KEY set. We ran it against the live API; the output below is what it printed.

const API = "https://api.contextfetch.dev";const KEY = process.env.CONTEXTFETCH_API_KEY;if (!KEY) throw new Error("Set CONTEXTFETCH_API_KEY"); type Result = { url: string; title: string; publishedDate?: string | null; highlights?: string[] }; const topic = process.argv[2] ?? "open source AI model releases";const since = new Date(Date.now() - 7 * 86_400_000).toISOString().slice(0, 10); const res = await fetch(`${API}/v1/search`, {  method: "POST",  headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" },  body: JSON.stringify({    query: topic,    numResults: 10,    startPublishedDate: since,    contents: { highlights: true },  }),});if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);const { results } = (await res.json()) as { results: Result[] }; const dated = results  .filter((r) => r.publishedDate)  .sort((a, b) => b.publishedDate!.localeCompare(a.publishedDate!)); console.log(`# ${topic}: the week since ${since}\n`);for (const r of dated) {  const day = r.publishedDate!.slice(0, 10);  const site = new URL(r.url).hostname.replace(/^www\./, "");  const text = (r.highlights?.[0] ?? "").replace(/\s+/g, " ").trim();  const quote = text.length > 220 ? `${text.slice(0, 220)}…` : text;  console.log(`- ${day} · [${r.title}](${r.url}) · ${site}`);  if (quote) console.log(`  > ${quote}`);}console.log(`\n${dated.length} dated articles out of ${results.length} results`); 
OutputRecorded
# open source AI model releases: the week since 2026-10-12

- 2026-10-17 · [AI Model Release Tracker | Startrise](https://startrise.io/models) · startrise.io
  > 1. ### Apple Foundation Models 3 (AFM 3 Core and Cloud) Announced at WWDC26. 2. ### Apple Foundation Models 2025 (on-device and server) 1. ### Stable Audio 3.0 2. ### Stable Audio 2.5 3. ### Stable Video 4D 2.0 1. ### ER…
- 2026-10-17 · [AI Tool Alternatives (October 2026): Compare 25+ Platforms](https://www.swfte.com/alternatives) · swfte.com
  > ### StackAI alternatives An enterprise platform for building, deploying and governing AI agents. When Swfte wins: When a model gateway, cost controls and workflows on the same platform matter as much as the agent builder…
- 2026-10-16 · [Open source and on device: the strategy behind Nvidia’s new AI models | TechTarget](https://www.techtarget.com/ai/news/366652514/Open-source-and-on-device-the-strategy-behind-Nvidias-new-AI-models) · techtarget.com
  > All three models are fully open, with Nvidia releasing their weights, datasets and training recipes. The releases come after Nvidia released another fully open model, Nemotron 3.5 Lightning, in August. The models are ava…
- 2026-10-16 · [News – Open Source Initiative](https://opensource.org/blog/category/news) · opensource.org
  > Over the last month, the EU has passed two milestones in implementing its Cyber Resilience (CRA) and AI acts. The OSI has been engaged with European policymakers over the past two years to ensure those laws don’t inadver…
- 2026-10-16 · [Reflection AI open-sources Beam’s weights, post-training recipes - SiliconANGLE](https://siliconangle.com/2026/10/16/reflection-ai-open-sources-beams-weights-post-training-recipes/) · siliconangle.com
  > Reflection AI plans to follow up the launch by releasing additional training recipes in the coming days. They will enable Beam to refine its own output quality using an approach known as self-distillation. Additionally, …
- 2026-10-16 · [Meta Releases Muse Spark Open: AI for Coding Agents](https://industrywired.com/artificial-intelligence/meta-releases-muse-spark-open-ai-for-coding-agents-12681241) · industrywired.com
  > ## **Meta Moves Back Toward Open Models** The release marks a turn for Meta. The first Muse Spark model, launched in April, was closed, and the company had stepped away from the open Llama approach that made it a leader …
- 2026-10-16 · [Language Models - KDnuggets](https://www.kdnuggets.com/tag/language-models) · kdnuggets.com
  > - **5 Best Resources to Learn About World Models in 2026** - Oct 16, 2026. World models could be the next big shift in AI. Learn more right now. - **Building AI Applications with OGX, the Open-Source Agentic API Server**…
- 2026-10-16 · [Managing open-weight model risk in enterprise deployments | Microsoft Security Blog](https://www.microsoft.com/en-us/security/blog/2026/10/16/managing-open-weight-model-risk-in-enterprise-deployments/) · microsoft.com
  > The growing AI landscape is giving enterprises more choice in how they build, customize, and deploy increasingly capable models. Open-weight models are an important part of that landscape. They give enterprises access to…
- 2026-10-13 · [What Is DeepSeek? Open-Weight AI Models Explained | Built In](https://builtin.com/articles/what-is-deepseek) · builtin.com
  > High-Flyer became DeepSeek’s main funding source, initially using AI models to guide investment decisions before establishing the AI research lab to achieve artificial general intelligence (AGI), or AI that can think and…

9 dated articles out of 9 results

The same call with curl

The raw HTTP request, and the response it returned (long text fields and lists shortened).

curl -s https://api.contextfetch.dev/v1/search \  -H "Authorization: Bearer $CONTEXTFETCH_API_KEY" \  -H "Content-Type: application/json" \  -d '{"query": "open source AI model releases", "numResults": 5, "startPublishedDate": "2026-10-11", "contents": {"highlights": true}}'
ResponseRecorded
{
  "requestId": "25b507036260415d9e8f2b6f7e520e5f",
  "results": [
    {
      "id": "4b593784-75dc-5e3f-9bd0-feb656e856fc",
      "url": "https://www.techtarget.com/ai/news/366652514/Open-source-and-on-device-the-strategy-behind-Nvidias-new-AI-models",
      "title": "Open source and on device: the strategy behind Nvidia’s new AI models | TechTarget",
      "score": 0.9998488018603275,
      "publishedDate": "2026-10-16",
      "text": null,
      "highlights": [
        "All three models are fully open, with Nvidia releasing their weights, datasets and training recipes. The releases come after Nvidia released another fully open model, Nemotron 3.5 Lightning, in August.\n\nThe models are available on Hugging Face. They are the first models Nvidia ha…",
        "Getty Images/iStockphoto\n\nAmid the accelerating race between open and closed AI, the vendor advanced its open source line of attack with more open models.\n\nNvidia earlier this week introduced Nemotron 3.5 Super VL, a 120-billion-parameter model that it said delivers fast-track co…",
        "“I can see people literally right now talking about how they're replacing Qwen 3.6 35B with Nemotron Bolt straight away,” Harrowell said, referring to Chinese tech giant Alibaba’s popular open model.\n\nNvidia’s focus on specialized agents with the release of the latest Nemotron mo…"
      ],
      "highlightScores": [
        0.9998488018603275,
        0.9990791061460291,
        0.9987207278526526
      ],
      "prunedContext": "Amid the accelerating race between open and closed AI, the vendor advanced its open source line of attack with more open models.\n\nNvidia earlier this week introduced Nemotron 3.5 Super VL, a 120-billion-parameter model that it said delivers fast-track completion, or the ability f…",
      "textSource": "page"
    },
    {
      "id": "0e339929-8cd6-55f4-9462-3e153ea0842a",
      "url": "https://bestllmfor.com/actu/",
      "title": "LLM market news — releases, licenses, local tools",
      "score": 0.9966449494989433,
      "publishedDate": "2026-10-11",
      "text": null,
      "highlights": [
        "With open weights that run locally, your vectors remain usable indefinitely without depending on an API. That's the key argument for a homegrown RAG database or semantic search.\n\n## Friday, October 9, 2026\n\n### Liquid AI releases open d1, open multimodal decision models for the e…",
        "# LLM market news\n\nThe open-weight model and local AI market brief: releases, licenses, tools, hardware—and what it changes on your machine. Published every morning with QuelLLM's monitoring.\n\n## Sunday, October 11, 2026\n\n### llm-mistral 0.16 supports reasoning models, including …",
        "Our source does not specify the contest details, challenges, or participating models.\n\n### Deno joins Cloudflare; the runtime will be maintained for only one more yearMarket\n\nCloudflare acquires Deno. The Deno team published celld in August, an open-source implementation of Cloud…"
      ],
      "highlightScores": [
        0.9966449494989433,
        0.9836243868458272,
        0.31381545015953727
      ],
      "prunedContext": "# LLM market news\n\nThe open-weight model and local AI market brief: releases, licenses, tools, hardware—and what it changes on your machine. Published every morning with QuelLLM's monitoring.\n\n## Sunday, October 11, 2026\n\n### llm-mistral 0.16 supports reasoning models, including …",
      "textSource": "page"
    },
    {
      "id": "8782c11a-fb8a-507a-bdbc-4b8d2e97a655",
      "url": "https://builtin.com/articles/what-is-deepseek",
      "title": "What Is DeepSeek? Open-Weight AI Models Explained | Built In",
      "score": 0.9958815445612385,
      "publishedDate": "2026-10-13",
      "text": null,
      "highlights": [
        "High-Flyer became DeepSeek’s main funding source, initially using AI models to guide investment decisions before establishing the AI research lab to achieve artificial general intelligence (AGI), or AI that can think and learn like humans.\n\nThe lab is known for developing open-we…",
        "## Fast Facts About DeepSeek\n\nDeepSeek is a Chinese artificial intelligence startup that creates open-weight large language models. It’s best known for stunning the tech world when it released its DeepSeek-R1 model, which rivaled the larger models of U.S. tech companies at a much…",
        "### DeepSeek-V3\n\nDeepSeek-V3 is a fully open-source model with 671 billion total parameters and can process and generate responses at 60 tokens per second, triple the speed of earlier DeepSeek models. It demonstrates strong language understanding in English and Chinese and scores…"
      ],
      "highlightScores": [
        0.9958815445612385,
        0.9898274378627865,
        0.9859192382473598
      ],
      "prunedContext": "## Fast Facts About DeepSeek\n\nDeepSeek is a Chinese artificial intelligence startup that creates open-weight large language models. It’s best known for stunning the tech world when it released its DeepSeek-R1 model, which rivaled the larger models of U.S. tech companies at a much…",
      "textSource": "page"
    },
    "… 2 more"
  ],
  "costDollars": {
    "total": 0.001
  },
  "searchTimeMs": 547,
  "searchTime": 547,
  "contextfetch": {
    "tokens": {
      "raw": 11956,
      "pruned": 1812,
      "savedPct": 84.84442957510873
    },
    "sources": {
      "local": 5,
      "google": 0,
      "searxng": 17,
      "hn": 10
    },
    "cache": "miss",
    "timingsMs": {
      "recall": 402,
      "fetch": 219,
      "rerank": 127,
      "total": 547
    }
  }
}

Questions

Why do some results have no date?

publishedDate comes from the page itself. Pages that do not state a publication date can come back with publishedDate set to null, and the script leaves them out so every entry in the digest is dated.

How much does a digest cost?

One credit per run, because highlights are included in the price of the search. A daily digest uses about 30 credits a month, which is $0.03 at the base rate.

Can I limit it to certain sites?

Yes. Add includeDomains with a list of domains to search only those sites, or excludeDomains to drop sites you do not want in the digest.

Does it need any packages?

No. It uses the fetch built into Node.js 18 and later. Node.js 22.18 and later can run the .ts file directly; on older versions run it with tsx or compile it with tsc first.

Run it with your own key

A free key has 2,500 searches and needs no signup. Agents can claim one themselves with the POST below.

curl -X POST https://api.contextfetch.dev/v1/keys/free
Get a free key