Skip to content

System AtomCrafts

FeedCraft comes with a set of built-in “AtomCrafts” that perform specific processing steps on your feeds. You can chain these AtomCrafts together in a FlowCraft to create powerful pipelines.

These atoms help you fetch full content or fix common feed issues.

Extracts the full content of the article from the original webpage.

  • Use case: When the RSS feed only provides a summary or snippet.
  • Mechanism: Uses a standard HTTP client to fetch the page and an algorithm to extract the main content. Fast and lightweight.

Extracts full content using a headless browser (Puppeteer).

  • Use case: For websites that require JavaScript to render content or have strong anti-bot protections.
  • Mechanism: Connects to the configured Browserless/Puppeteer service to render the page. Slower but more robust.
  • Parameters:
    • mode (default: networkidle2): Wait condition.
      • load: Wait for the load event.
      • domcontentloaded: Wait for the DOMContentLoaded event.
      • networkidle0: Wait until there are 0 active network connections for at least 500ms.
      • networkidle2: Wait until there are no more than 2 active network connections for at least 500ms. (Recommended for SPAs).
    • wait (default: 0): Explicit wait time in seconds (e.g., 5).

Simple proxy for the feed.

  • Use case: When you just want to forward the original feed without modification, or use FeedCraft as a central gateway.

Replaces the RSS item GUID with an MD5 hash of the item’s content.

  • Use case: Some feeds change their GUIDs frequently even when content hasn’t changed, causing duplicate unread items in readers. This atom stabilizes the GUID based on content.

Converts relative links (e.g., <a href="/about">) in the content to absolute links (e.g., <a href="https://example.com/about">).

  • Use case: Essential when extracting full content, as relative links will break when viewed in an RSS reader.

Cleans up the HTML content to remove clutter.

  • Use case: Improving readability by removing classes, styles, and empty tags.

Control which items make it into your final feed.

Limits the number of items in the feed.

  • Parameters:
    • num (default: 10): The maximum number of items to keep.

Filters out items that are older than a specific number of days.

  • Parameters:
    • days (default: 7): Max age of articles in days.

Filters items based on keywords in the title or content.

  • Parameters:
    • keywords: A comma-separated list of keywords to match (substring match, case-sensitive). Example: ad,sell,SALE.
    • mode: include (default) to keep matching items, or exclude to remove them.
    • scope: title, content, or all (default).

Use Large Language Models (LLM) to transform and enrich your content.

Translates the article title to your target language.

  • Parameters:
    • prompt: Custom prompt. Defaults to a standard translation prompt. Supports {{.TargetLang}} placeholder.

Translates the entire article content, replacing the original.

  • Parameters:
    • prompt: Custom prompt. Supports {{.TargetLang}}.

Bilingual translation. Appends the translation after each paragraph of the original text.

  • Parameters:
    • prompt: Custom prompt.

Generates a summary of the article and prepends it to the content.

  • Parameters:
    • prompt: Custom prompt for summarization.

Generates a short introduction or “lead-in” for the article.

  • Parameters:
    • prompt: Custom prompt.

Re-formats the article using LLM to fix layout, remove ads, and standardizing Markdown, then converts back to clean HTML.

  • Parameters:
    • prompt: Instructions for the “editor” persona.

Advanced filtering using semantic understanding.

Uses LLM to detect if an article is an advertorial or soft advertisement (evaluating both title and content) and removes it.

  • Parameters:
    • prompt-for-exclude: A prompt that should return true if the item is an ad.

Generic LLM-based filter. You define the condition for exclusion. The LLM evaluates both the article title and content against this condition.

  • Parameters:
    • filter_condition: A natural language question/condition. If the LLM answers “yes” (true), the item is removed.
    • Example: “Is this article about sports?” (Removes sports articles).