{"id":37072364,"url":"https://github.com/chigwell/newspresso","last_synced_at":"2026-01-14T08:29:44.077Z","repository":{"id":329785291,"uuid":"1120672054","full_name":"chigwell/newspresso","owner":"chigwell","description":"A new package that processes text-based news or announcement summaries, such as changes in chart inclusion rules for platforms like YouTube on the U.S. Billboard Charts. It uses structured LLM interac","archived":false,"fork":false,"pushed_at":"2025-12-21T17:50:32.000Z","size":4,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-23T06:55:33.476Z","etag":null,"topics":["announcement-summaries","automated-parsing","chart-inclusion-rules","consistent-output","criteria-adjustments","effective-dates","formatted-insights","impacted-metrics","key-details-extraction","media-analysis","no-raw-media-handling","reliable-output","reporting-workflows","structured-llm-interactions","text-based-news-processing","text-input-focus"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/newspresso/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chigwell.png","metadata":{"files":{"readme":"README.md","changelog":"newspresso/__init__.py","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-21T17:50:20.000Z","updated_at":"2025-12-21T17:50:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chigwell/newspresso","commit_stats":null,"previous_names":["chigwell/newspresso"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/chigwell/newspresso","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chigwell%2Fnewspresso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chigwell%2Fnewspresso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chigwell%2Fnewspresso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chigwell%2Fnewspresso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chigwell","download_url":"https://codeload.github.com/chigwell/newspresso/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chigwell%2Fnewspresso/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:16:59.381Z","status":"ssl_error","status_checked_at":"2026-01-14T08:13:45.490Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["announcement-summaries","automated-parsing","chart-inclusion-rules","consistent-output","criteria-adjustments","effective-dates","formatted-insights","impacted-metrics","key-details-extraction","media-analysis","no-raw-media-handling","reliable-output","reporting-workflows","structured-llm-interactions","text-based-news-processing","text-input-focus"],"created_at":"2026-01-14T08:29:43.540Z","updated_at":"2026-01-14T08:29:44.069Z","avatar_url":"https://github.com/chigwell.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# newspresso\n[![PyPI version](https://badge.fury.io/py/newspresso.svg)](https://badge.fury.io/py/newspresso)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n[![Downloads](https://static.pepy.tech/badge/newspresso)](https://pepy.tech/project/newspresso)\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-blue)](https://www.linkedin.com/in/eugene-evstafev-716669181/)\n\n\nA Python package for processing text-based news or announcement summaries using structured LLM interactions. It extracts key details—such as effective dates, criteria adjustments, and impacted metrics—from text inputs, ensuring consistent and reliable output for media analysis or reporting workflows.\n\n## Installation\n\nInstall the package via pip:\n\n```bash\npip install newspresso\n```\n\n## Usage\n\nImport the `newspresso` function and pass your text to process:\n\n```python\nfrom newspresso import newspresso\n\nuser_input = \"Your news or announcement text here...\"\nresult = newspresso(user_input)\nprint(result)\n```\n\n### Parameters\n\n- `user_input` (str): The text input to process (e.g., news summary or announcement).\n- `llm` (Optional[BaseChatModel]): A LangChain LLM instance. If not provided, the default `ChatLLM7` is used.\n- `api_key` (Optional[str]): API key for LLM7. If not provided, the environment variable `LLM7_API_KEY` is used, or a default key is attempted.\n\n### Using a Custom LLM\n\nYou can use any LangChain-compatible LLM by passing it to the `llm` parameter. For example:\n\n#### Using OpenAI\n```python\nfrom langchain_openai import ChatOpenAI\nfrom newspresso import newspresso\n\nllm = ChatOpenAI()\nresponse = newspresso(user_input, llm=llm)\n```\n\n#### Using Anthropic\n```python\nfrom langchain_anthropic import ChatAnthropic\nfrom newspresso import newspresso\n\nllm = ChatAnthropic()\nresponse = newspresso(user_input, llm=llm)\n```\n\n#### Using Google\n```python\nfrom langchain_google_genai import ChatGoogleGenerativeAI\nfrom newspresso import newspresso\n\nllm = ChatGoogleGenerativeAI()\nresponse = newspresso(user_input, llm=llm)\n```\n\n### API Key for Default LLM7\n\nThe default LLM (`ChatLLM7`) is provided via the `langchain_llm7` package (see [PyPI](https://pypi.org/project/langchain-llm7/)). The free tier rate limits are sufficient for most use cases. For higher limits, provide your own API key:\n\n- Set the environment variable: `LLM7_API_KEY=\"your_api_key\"`\n- Or pass directly: `newspresso(user_input, api_key=\"your_api_key\")`\n\nGet a free API key by registering at [https://token.llm7.io/](https://token.llm7.io/).\n\n## Example\n\n```python\nfrom newspresso import newspresso\n\nnews_text = \"\"\"\nYouTube announced changes to its chart inclusion rules effective January 2025. \nStreams will now require a minimum of 1,000 plays per track, up from 500. \nThese updates impact the U.S. Billboard Charts and global metrics.\n\"\"\"\n\ndetails = newspresso(news_text)\nprint(details)\n# Output may include: ['effective_date: January 2025', 'criteria_adjustment: minimum streams increased to 1000', ...]\n```\n\n## Dependencies\n\n- `langchain_core`\n- `langchain_llm7` (for default LLM)\n- `llmatch_messages` (for pattern matching)\n\n## Issues\n\nReport issues or contribute via GitHub: [https://github.com/chigwell/newspresso](https://github.com/chigwell/newspresso)\n\n## Author\n\nEugene Evstafev – hi@euegne.plus","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchigwell%2Fnewspresso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchigwell%2Fnewspresso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchigwell%2Fnewspresso/lists"}