Back to home@Dee3526

dsh-plugin-x-profile-reader

No description

Stars
0
Language
JavaScript
Created
Sep 4, 2026
Updated
Sep 4, 2026

Introduction

dsh-plugin-x-profile-reader

A DeepSeek Harness (DSH) plugin that adds the x_profile_read tool: read one X (Twitter) user's public profile and recent posts through the Apify third-party scraper, normalized into a factual, structured result.

Built for the x-outreach-agent preset, but mountable by any preset that adds the tool row.

Data source: this plugin scrapes X through a third-party actor (patient_discovery/twitter-user-tweets) — not the official X API. Public, login-free data only. See Data source.

Prerequisites

  • A DeepSeek Harness profile.
  • An Apify account and an API token (apify.com → Settings → Integrations → API token).

Install

dsh plugin --profile <name> add dsh-plugin-x-profile-reader

# or from a local checkout:
dsh plugin --profile <name> add ./path/to/dsh-plugin-x-profile-reader

Configure your own API key

The plugin reads its credential from the harness credential store under the ref APIFY_TOKEN (configurable via tokenRef). No key is bundled in this package — every user supplies their own.

Simplest path — export it before launching:

export APIFY_TOKEN=apify_api_your_token_here
dsh web

You can also store it through the harness credential settings; either way the value is resolved at call time and never written into the plugin.

Mount the tool in a preset

Add one row to the preset's agent.cordis.yml:

- id: tool-x-profile
  name: dsh-plugin-x-profile-reader
  config:            # optional
    actorId: XSXdgwgBakXd5vRxB   # default Apify actor
    tokenRef: APIFY_TOKEN        # default credential ref

The row consumes host credentials + subprocess and publishes no service, so it needs no isolate realm.

Usage

Call the x_profile_read tool:

inputtypedefaultnotes
usernamestring (required)handle without @, or a profile URL
lookbackDaysinteger30clamped 1–30
maxPostsinteger20clamped 1–100
includeRepliesbooleanfalsebest-effort (source has no explicit reply flag)
includeRepostsbooleanfalseexcludes RT @ posts when false

Output:

{ ok, user, posts[], meta, dataMissing[], restrictions[] }
  • user — public profile (id, username, name, avatar, verified, followers, …).
  • posts[] — normalized posts, each with text, url, publishedAt, type (original/reply/repost), and available metrics.
  • dataMissing[] / restrictions[] — explicit missing-data and permission/rate-limit notes.

The tool returns factual data only — it does not infer topics or sales intent; that synthesis belongs to the agent/preset layer.

Data source

  • Actor: patient_discovery/twitter-user-tweets (userId + maxPages).
  • Public, login-free scraping — not the official X API.
  • Known limits: profile fields are partial (bio/location/joined/following/tweet-count unavailable), and there is no explicit reply flag.
  • Respect X's terms and rate limits; use responsibly.

License

MIT