Skip to main content

Prefect collection for scheduled X/Twitter data workflows with Xquik

Project description

Prefect tasks for Xquik X/Twitter data workflows

CI GitHub Release License Docs Prefect 3

Prefect Guide · Releases · Xquik API Reference · Prefect Docs

Guide: https://docs.xquik.com/guides/prefect

Run scheduled X/Twitter data reads in Prefect 3 flows with a reusable XquikCredentials block, async tasks, retries, and normal Prefect deployment patterns.

Use prefect-xquik when a workflow needs public X/Twitter signals for research, monitoring, enrichment, dashboards, or alerts without maintaining scraper code in each flow.

What You Can Schedule

Workflow Need Prefect Task Xquik Endpoint
Search recent or top posts search_tweets GET /x/tweets/search
Look up a specific post get_tweet GET /x/tweets/{id}
Search public users search_users GET /x/users/search
Look up a user profile get_user GET /x/users/{id}
Fetch a user's timeline get_user_tweets GET /x/users/{id}/tweets
Read regional or global trends get_trends GET /x/trends

Install

pip install prefect-xquik

For local development:

uv sync
uv run ruff format --check .
uv run ruff check .
uv run pytest
uv build
uv run twine check dist/*

Register Blocks

prefect block register -m prefect_xquik

Create a block in the Prefect UI or with Python:

from prefect_xquik import XquikCredentials

credentials = XquikCredentials(api_key="<xquik-api-key>")
credentials.save("xquik", overwrite=True)

Store API keys in Prefect blocks, not in flow source files.

Example Flow

from prefect import flow
from prefect_xquik import XquikCredentials, get_trends, search_tweets


@flow
async def social_signal_flow() -> dict:
    credentials = XquikCredentials.load("xquik")

    tweets = await search_tweets(
        credentials,
        query='"prefect" OR "workflow orchestration"',
        query_type="Latest",
        limit=25,
    )
    trends = await get_trends(credentials, woeid=1, count=10)

    return {"tweets": tweets, "trends": trends}

Task Imports

from prefect_xquik import (
    get_trends,
    get_tweet,
    get_user,
    get_user_tweets,
    search_tweets,
    search_users,
)

Tasks return the raw Xquik JSON response as a Python dictionary. Configure Prefect runtime behavior with with_options:

from prefect_xquik import search_tweets

search_recent_tweets = search_tweets.with_options(
    name="Search Recent X Posts",
    retries=2,
    retry_delay_seconds=10,
)

API Contract

The credentials block sends x-api-key and the current xquik-api-contract header. The default contract is 2026-04-29, matching the public OpenAPI contract used to build this collection.

Documentation

Development

uv sync
uv run ruff format --check .
uv run ruff check .
uv run pytest
uv build
uv run twine check dist/*

This repository follows Prefect's external collection layout so it can be moved under src/integrations/prefect-xquik later if Prefect maintainers request it.

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

prefect_xquik-0.1.6.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

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

prefect_xquik-0.1.6-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: prefect_xquik-0.1.6.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for prefect_xquik-0.1.6.tar.gz
Algorithm Hash digest
SHA256 45da8540792d9606836b9e9e433cc877bd68c0a82b734a17b8baf9980265230b
MD5 be19e063919d87b2f0351b1a01178215
BLAKE2b-256 6e6b98e0d08011427de741f9e43c411496d3447e192138a5db56b8e9d914d014

See more details on using hashes here.

Provenance

The following attestation bundles were made for prefect_xquik-0.1.6.tar.gz:

Publisher: publish.yml on Xquik-dev/prefect-xquik

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: prefect_xquik-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for prefect_xquik-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0eb55cc58c52ad15828462cefd00391f539b85c84d8d35bffd2ce0f616b5deb8
MD5 8bb8ed511e02d6dd7ff2e27fba6bc09a
BLAKE2b-256 4cb8a72fae7bd58e740265a75b1952f9bd733d08a066a9ada4c9c47f700281df

See more details on using hashes here.

Provenance

The following attestation bundles were made for prefect_xquik-0.1.6-py3-none-any.whl:

Publisher: publish.yml on Xquik-dev/prefect-xquik

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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