Skip to main content

Terminal-based AI curator that turns information noise into meaningful signal

Project description

AI Signal

AI Signal Terminal

Terminal-based AI curator that turns information noise into meaningful signal.

Features

  • 🤖 AI-powered content analysis and categorization
  • 🔍 Smart filtering based on customizable categories and quality thresholds
  • 📊 Advanced sorting by date, ranking, or combined criteria
  • 🔄 Automatic content synchronization from multiple sources
  • 🌐 Support for various content sources (YouTube, Medium, Reddit, Hacker News, RSS feeds)
  • 📱 Share curated content directly to social media
  • 📝 Export to Obsidian vault with customizable templates
  • ⌨️ Fully keyboard-driven interface
  • 🎨 Beautiful terminal UI powered by Textual

Installation

pip install ai-signal

Or with poetry:

poetry add ai-signal

Quick Start

  1. Create a configuration file:
aisignal init
  1. Edit your ~/.config/aisignal/config.yaml along these lines:
sources:
- https://news.ycombinator.com
- https://django-news.com

prompts:
  content_extraction: |
    Please extract the top 10 news, articles, posts, whatever items compose this list.

    For each items, find or generate:
    * the title
    * the source (URL of the list source)
    * the original URL of the item, or _link_
    * the categories, among the available ones, listed below.

    Generate a list of items in markdown format, strictly following this syntax:

    # Top 10 Items

    1. **Title:** Announcing the 6.x Django Steering Council elections 🚀  
       **Source:** https://django-news.com  
       **Link:** https://cur.at/3TNDN81?m=web  
       **Categories:** Django

    2. **Title:** Django Channels 4.2.0 Release Notes  
       **Source:** https://django-news.com
       **Link:** https://cur.at/R9ZJhRV?m=web  
       **Categories:** Django
    ...
 
    In particular, the Source should only contain the URL.

categories:
- AI/ML
- Django
- Programming
- Security
- DevOps
- Docker
- Modern Data Stack

quality_threshold: 0.7
sync_interval: 24
obsidian:
  vault_path: '/~/Documents/Obsidian Vault'
  template_path: ''
social:
  twitter_template: '{title}


    {url}


    #AI #Content'
api_keys:
  jinaai: -Your JinaAI key-
  openai: -Your OpenAI key
  1. Run AI Signal:
aisignal

Keyboard Shortcuts

For all views

  • q: Quit application
  • c: Toggle configuration panel
  • s: Force sync content
  • f: Toggle filters

Within the items list

  • /: Navigate items
  • enter: Show item details
  • o: Open in browser
  • t: Share on Twitter
  • l: Share on LinkedIn
  • e: Export to Obsidian

Configuration

AI Signal can be configured via YAML file or through the TUI configuration panel. Main configuration options:

  • Content

    • Sources to monitor
    • Sync interval, in hours
    • Categories of interest
    • Prompt for content extraction
  • Filtering

    • Quality threshold
    • Category filters
    • Source filters
  • Integration

    • Obsidian vault path
    • Obsidian templates
    • Social media templates

See the configuration guide for detailed options.

Screenshots

Main Interface

Main Interface

Content Details

Content Details

Configuration Panel

Configuration

Contributing

Contributions are welcome! Please read our Contributing Guide to get started.

Development Setup

# Clone the repository
git clone https://github.com/guglielmo/ai-signal.git
cd ai-signal

# Install dependencies
poetry install

# Run tests
poetry run pytest

# Run the application in development mode
poetry run aisignal version

or, entering the virtualenv:

poetry shell
aisignal version

Roadmap

  • Add support for more content sources (YT videos, podcasts, pdf)
  • Implement custom AI models
  • Add content archiving
  • Enable custom prompts for sources
  • Enable custom filtering rules
  • Add data export/import

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Built with Textual
  • AI powered by OpenAI and Jina AI
  • Inspired by Daniel Miessler's Fabric

Author

Guglielmo Celata

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_signal-0.1.6.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_signal-0.1.6-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file ai_signal-0.1.6.tar.gz.

File metadata

  • Download URL: ai_signal-0.1.6.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Linux/6.9.2-060902-generic

File hashes

Hashes for ai_signal-0.1.6.tar.gz
Algorithm Hash digest
SHA256 d1f13140622be3aa8a3bd7c97db8949183038038e1ecd5fe22505a961bd3a5df
MD5 e8d5e83dfd49a681b7e24393da4e4ef3
BLAKE2b-256 3e4b01fab0120b84ab4fc348930ad5c6a40e1b88b73520e8d7bebcdb1b23cd60

See more details on using hashes here.

File details

Details for the file ai_signal-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: ai_signal-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Linux/6.9.2-060902-generic

File hashes

Hashes for ai_signal-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 10526cce031f4215a5eef1d6615c14447a0f6d735dc4cd932e5b7c4d8af3c916
MD5 c43a14981f7be74d2c9b7fc006bbf024
BLAKE2b-256 9ca7e421ffdaf3e8b664f93e37d64a859ef39c3c6f09ee1fa8dcf1ff9f61f817

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page