Skip to main content

Content writing agent skills (article extract / Google News / keyword / rewrite) for Concinno — newspaper3k, gnews, keybert.

Project description

concinno-skills-content

Content-writer agent skills for Concinno — article extraction, Google News search, keyword extraction, rule-based text rewrite. Native Python only; no API keys needed for the MVP surface.

Status

MVP (0.1.0) — four tools, all offline-cleanable. This is the fourth sub-package in the concinno-skills-* ecosystem (after -google), built to the same entry-points + Tool-protocol pattern.

Tools

Tool Action(s) Library Concurrency-safe
ArticleExtract parse newspaper3k False (HTTP + lazy models)
GoogleNewsSearch search gnews False (HTTP)
KeywordExtract extract keybert + sentence-transformers True
TextRewrite rewrite / shorten / remove_ads stdlib only True

Install

pip install concinno-skills-content

Heads-up before first use:

  • KeyBERT downloads a ~90MB SBERT model on first call (all-MiniLM-L6-v2 by default) to ~/.cache/huggingface/. One-shot per machine. Larger / multilingual models are selectable via the model kwarg; KeyBERT's own README lists the options. sentence-transformers itself is a hard dependency of keybert>=0.8 and will be installed automatically — the full dep chain including transformers + torch takes ~1-2GB of disk.
  • newspaper3k + Python 3.12/3.13: newspaper3k has not seen an upstream release since 2018 and pins lxml. If pip install fails on 3.12+ due to a C-extension build, the usual fix is pip install --upgrade lxml_html_clean + the latest lxml wheel. Tracking issue: https://github.com/codelucas/newspaper/issues.

No OAuth, no API keys — every MVP tool uses public RSS / local compute only. _auth.py is a placeholder for future paid-API sub-packages.

Usage via Concinno ToolRegistry

When the consumer sets CONCINNO_LOAD_PLUGINS=1, the default registry auto-mounts all four tools:

import os
os.environ["CONCINNO_LOAD_PLUGINS"] = "1"

from concinno.tools.registry import get_default_registry

reg = get_default_registry()
names = set(reg.list_deferred())
assert {"ArticleExtract", "GoogleNewsSearch",
        "KeywordExtract", "TextRewrite"} <= names

tool = reg.get("ArticleExtract")
article = tool.call(
    action="parse",
    url="https://news.example/article-url",
    lang="en",
)

Direct Python usage

from concinno_skills_content import (
    ArticleExtract, GoogleNewsSearch,
    KeywordExtract, TextRewrite,
)

# 1) Discover
search = GoogleNewsSearch().call(
    action="search",
    query="AI agents",
    limit=5,
    lang="en",
    country="US",
    period="7d",
)

# 2) Extract
article = ArticleExtract().call(
    action="parse",
    url=search["items"][0]["url"],
    lang="auto",  # collapsed to "en" — newspaper3k has no real auto
)

# 3) Keyword SEO
kws = KeywordExtract().call(
    action="extract",
    text=article["text"],
    top_n=10,
    ngram_range=[1, 2],
)

# 4) Clean copy for downstream LLM
clean = TextRewrite().call(
    action="remove_ads", text=article["text"],
)["text"]
clean = TextRewrite().call(
    action="rewrite", text=clean,
)["text"]

All tools return either a structured success dict or {"error": "..."} — never raise. Matches the rest of the Concinno tool ecosystem.

License

Apache-2.0. See LICENSE in the Concinno monorepo.

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

concinno_skills_content-0.1.0.tar.gz (42.9 kB view details)

Uploaded Source

Built Distribution

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

concinno_skills_content-0.1.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file concinno_skills_content-0.1.0.tar.gz.

File metadata

  • Download URL: concinno_skills_content-0.1.0.tar.gz
  • Upload date:
  • Size: 42.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for concinno_skills_content-0.1.0.tar.gz
Algorithm Hash digest
SHA256 afca3ce393679c7578696c77b584a46cfb5225c78231b5934836956ed0f90886
MD5 2e81fa0067fe4a3a1133a8940e4a38a4
BLAKE2b-256 732b462c68492aa10bf479f9af97803f9d70877eff63cdd2f9f6b80d56acdcc7

See more details on using hashes here.

File details

Details for the file concinno_skills_content-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for concinno_skills_content-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 01c3242c4761fa8e1a570134ed217523800a4e7bdfc896870e5d8bfd043e49a2
MD5 e205841318c7d6d8e387d2ffd8a31677
BLAKE2b-256 4c633aed5e67dbd20ec89f8af60643b718b0cafddf6e7d223d5a635915017976

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