New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Extract text, tables, and structured data from documents

PDF Processor - Extract Data from PDFs

by gooseworks-ai · MIT license · ★ 1,220 on GitHub · updated Sep 21

PDF Processor - Extract Data from PDFs cover

Process PDFs - extract text, tables, and structured data from documents

---
name: pdf-processor
description: Process PDFs - extract text, tables, and structured data from documents
source: orthogonal
---


# PDF Processor - Extract Data from PDFs

## Setup

Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```

If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`

Overview

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

Manual install (npx, ZIP)
Claude Codenpx skills add gooseworks-ai/goose-skills --skill pdf-processor -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \ | tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/research-tools/capabilities/pdf-processor
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/72ef8b99f2fd1e9271dc/pdf-processor.zip" -OutFile "$env:TEMP\pdf-processor.zip"; Expand-Archive "$env:TEMP\pdf-processor.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md4.1 KB
  • skill.meta.json281 B
Read the files here
gooseworks-ai/615c6852 files
SKILL.md
Show the full text128 lines

PDF Processor - Extract Data from PDFs

Setup

Read your credentials from ~/.gooseworks/credentials.json:

export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"

Extract text, tables, and structured data from PDF documents.

Workflow

Step 1: Fetch PDF Content

Use Linkup to fetch PDF URLs:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"linkup","path":"/fetch","body":{"url":"https://example.com/document.pdf"}}'
Step 2: Extract with AI

Use ScrapeGraph to extract specific content:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
  "website_url": "https://example.com/report.pdf",
  "user_prompt": "Extract all financial figures, tables, and key metrics from this document"
}'
Step 3: Extract Tables

Get structured table data:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"riveter","path":"/v1/run"}'
  "input": {
    "urls": ["https://example.com/report.pdf"]
  },
  "output": {
    "tables": {"prompt": "Extract all tables with titles, headers, and rows", "contexts": ["urls"]}
  }
}'
Step 4: Convert to Markdown

Get readable markdown output:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/markdownify","body":{"website_url":"https://example.com/document.pdf"}}'

Example Usage

# Extract data from financial report
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
  "website_url": "https://example.com/annual-report.pdf",
  "user_prompt": "Extract revenue, profit, and key business metrics with their values"
}'

# Extract invoice data
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"riveter","path":"/v1/run"}'
  "input": {"urls": ["https://example.com/invoice.pdf"]},
  "output": {
    "vendor": {"prompt": "Vendor name", "contexts": ["urls"]},
    "amount": {"prompt": "Total amount", "contexts": ["urls"]},
    "date": {"prompt": "Invoice date", "contexts": ["urls"]}
  }
}'

Tips

  • Specify exact data you need for better extraction
  • Use schemas for consistent structured output
  • Handle multi-page documents in chunks
  • Verify extracted numbers against source

Discover More

List all endpoints, or add a path for parameter details:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"linkup API endpoints"}' api show riveter
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"scrapegraph API endpoints"}'

Example: `curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/scrapes`"}' for endpoint parameters.
1---
2name: pdf-processor
3description: Process PDFs - extract text, tables, and structured data from documents
4source: orthogonal
5---
6 
7 
8# PDF Processor - Extract Data from PDFs
9 
10## Setup
11 
12Read your credentials from ~/.gooseworks/credentials.json:
13```bash
14export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
15export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
16```
17 
18If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
19 
20All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
21 
22 
23Extract text, tables, and structured data from PDF documents.
24 
25## Workflow
26 
27### Step 1: Fetch PDF Content
28Use Linkup to fetch PDF URLs:
29 
30```bash
31curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
32 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
33 -H "Content-Type: application/json" \
34 -d '{"api":"linkup","path":"/fetch","body":{"url":"https://example.com/document.pdf"}}'
35```
36 
37### Step 2: Extract with AI
38Use ScrapeGraph to extract specific content:
39 
40```bash
41curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
42 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
43 -H "Content-Type: application/json" \
44 -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
45 "website_url": "https://example.com/report.pdf",
46 "user_prompt": "Extract all financial figures, tables, and key metrics from this document"
47}'
48```
49 
50### Step 3: Extract Tables
51Get structured table data:
52 
53```bash
54curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
55 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
56 -H "Content-Type: application/json" \
57 -d '{"api":"riveter","path":"/v1/run"}'
58 "input": {
59 "urls": ["https://example.com/report.pdf"]
60 },
61 "output": {
62 "tables": {"prompt": "Extract all tables with titles, headers, and rows", "contexts": ["urls"]}
63 }
64}'
65```
66 
67### Step 4: Convert to Markdown
68Get readable markdown output:
69 
70```bash
71curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
72 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
73 -H "Content-Type: application/json" \
74 -d '{"api":"scrapegraph","path":"/v1/markdownify","body":{"website_url":"https://example.com/document.pdf"}}'
75```
76 
77## Example Usage
78 
79```bash
80# Extract data from financial report
81curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
82 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
83 -H "Content-Type: application/json" \
84 -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
85 "website_url": "https://example.com/annual-report.pdf",
86 "user_prompt": "Extract revenue, profit, and key business metrics with their values"
87}'
88 
89# Extract invoice data
90curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
91 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
92 -H "Content-Type: application/json" \
93 -d '{"api":"riveter","path":"/v1/run"}'
94 "input": {"urls": ["https://example.com/invoice.pdf"]},
95 "output": {
96 "vendor": {"prompt": "Vendor name", "contexts": ["urls"]},
97 "amount": {"prompt": "Total amount", "contexts": ["urls"]},
98 "date": {"prompt": "Invoice date", "contexts": ["urls"]}
99 }
100}'
101```
102 
103## Tips
104 
105- Specify exact data you need for better extraction
106- Use schemas for consistent structured output
107- Handle multi-page documents in chunks
108- Verify extracted numbers against source
109 
110## Discover More
111 
112List all endpoints, or add a path for parameter details:
113 
114```bash
115curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
116 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
117 -H "Content-Type: application/json" \
118 -d '{"prompt":"linkup API endpoints"}' api show riveter
119curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
120 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
121 -H "Content-Type: application/json" \
122 -d '{"prompt":"scrapegraph API endpoints"}'
123 
124Example: `curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
125 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
126 -H "Content-Type: application/json" \
127 -d '{"api":"olostep","path":"/v1/scrapes`"}' for endpoint parameters.
128 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 1,220
Checked
Source
gooseworks-ai/goose-skills ↗
Creator
gooseworks-ai · 206 listings
View creator

Made with pdf-processor

PDF Processor - Extract Data from PDFs — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)
PDF Processor - Extract Data from PDFs — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)

by gooseworks-ai

Similar skills

See all →
SkillGuides stable API and interface designaddyosmani/agent-skills · by addyosmaniGuides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints, defining type contracts between modules, or establishing boundaries between frontend and backend.★ 98.7k GitHub starsMCPPulls up-to-date, version-specific library docsContext7upstash/context7 · by upstashPulls up-to-date, version-specific library docs and code examples into the prompt so the AI stops inventing old APIs.★ 62.3k GitHub starsSkillFetch up-to-date documentation and code examples for anyContext7 Documentation Lookupupstash/context7 · by upstashFetch up-to-date documentation and code examples for any library, framework, SDK, CLI tool, or cloud service. Use whenever the user asks about a specific library — even well-known ones like React, Next.js, Prisma, Express, Tailwind, Django, or Spring Boot — because training data may not reflect recent API changes or version updates. Always use for: API syntax questions, configuration options, version migration issues, "how do I" questions mentioning a library name, debugging that involves library-specific behavior, setup instructions, and CLI tool usage. Use even when you think you know the answer. Do not rely on training data for API details, signatures, or configuration options — they are frequently out of date. Prefer this over web search for library documentation.★ 62.3k GitHub starsSkillHow to use the Adaptyv Bio Foundry API and Python SDKK-Dense-AI/scientific-agent-skills · by K-Dense-AIHow to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.★ 46k GitHub starsSkillMaster C/.NET backend development patterns for buildingwshobson/agents · by wshobsonMaster C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.★ 39.9k GitHub starsSkillGuides the usage of Gemini Interactions API on GeminiGemini Interactions API Skillgoogle/skills · by googleGuides the usage of Gemini Interactions API on Gemini Enterprise Agent Platform. Use when the user wants to use the stateful, server-managed Interactions API for multi-turn conversations, background execution, streaming, structured output, and function calling on the Agent Platform.★ 20.9k GitHub stars

More from gooseworks-ai

SkillMine the highest-converting ad angles from customer reviewsAd angle minergooseworks-ai/goose-skills · by gooseworks-aiMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.★ 1.2k GitHub starsSkillAnalyze ad campaign performance data to identify what'sAd campaign analyzergooseworks-ai/goose-skills · by gooseworks-aiAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.★ 1.2k GitHub starsSkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzergooseworks-ai/goose-skills · by gooseworks-aiFor paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.★ 1.2k GitHub starsSkillAnalyze the message match between your ads and landing pagesAd to landing page auditorgooseworks-ai/goose-skills · by gooseworks-aiAnalyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.★ 1.2k GitHub starsSkillCheck and improve your brand's visibility across AI searchAeogooseworks-ai/goose-skills · by gooseworks-aiCheck and improve your brand's visibility across AI search engines (ChatGPT, Perplexity, Gemini, Grok, Claude, DeepSeek). Set up tracking, run visibility analyses, audit your website for AI readability, and get actionable recommendations. Uses the npx goose-aeo@latest CLI.★ 1.2k GitHub starsSkillSearch Amazon products - find items, compare pricesAmazon Product Searchgooseworks-ai/goose-skills · by gooseworks-aiSearch Amazon products - find items, compare prices, read reviews★ 1.2k GitHub stars