Skip to content

Commit dcfe9a1

Browse files
mikipaletclaude
andcommitted
feat: auto-generate README SDK Reference section
- Add scripts/generate_readme_reference.py to introspect SDK classes - Extracts all public methods from resource classes - Generates markdown tables for README.md SDK Reference section - Add step to generate.yml workflow to auto-update README on regeneration - README now stays in sync automatically when SDK is regenerated Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 2fc70a9 commit dcfe9a1

3 files changed

Lines changed: 296 additions & 41 deletions

File tree

‎.github/workflows/generate.yml‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ jobs:
5858
uv run --with pyyaml python scripts/generate_mcp_tools.py
5959
echo "MCP tool generation complete."
6060
61+
- name: Generate README SDK Reference
62+
run: |
63+
echo "Starting README SDK Reference generation..."
64+
uv run python scripts/generate_readme_reference.py
65+
echo "README SDK Reference generation complete."
66+
6167
- name: Run linter (fix formatting)
6268
run: |
6369
uv run ruff check --fix src/late/resources/_generated/ || true

‎README.md‎

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -166,29 +166,29 @@ except LateApiError as e:
166166
### Posts
167167
| Method | Description |
168168
|--------|-------------|
169-
| `posts.list()` | List all posts |
169+
| `posts.bulk_upload()` | Upload multiple posts at once |
170170
| `posts.create()` | Create and schedule a post |
171-
| `posts.get()` | Get a specific post |
172-
| `posts.update()` | Update a scheduled post |
173171
| `posts.delete()` | Delete a post |
172+
| `posts.get()` | Get a specific post |
173+
| `posts.list()` | List all posts |
174174
| `posts.retry()` | Retry a failed post |
175-
| `posts.bulk_upload()` | Upload multiple posts at once |
175+
| `posts.update()` | Update a scheduled post |
176176

177177
### Accounts
178178
| Method | Description |
179179
|--------|-------------|
180-
| `accounts.list()` | List connected social accounts |
181180
| `accounts.get()` | Get a specific account |
182181
| `accounts.get_follower_stats()` | Get follower growth data |
182+
| `accounts.list()` | List connected social accounts |
183183

184184
### Profiles
185185
| Method | Description |
186186
|--------|-------------|
187-
| `profiles.list()` | List workspace profiles |
188187
| `profiles.create()` | Create a new profile |
188+
| `profiles.delete()` | Delete a profile |
189189
| `profiles.get()` | Get a specific profile |
190+
| `profiles.list()` | List workspace profiles |
190191
| `profiles.update()` | Update a profile |
191-
| `profiles.delete()` | Delete a profile |
192192

193193
### Analytics
194194
| Method | Description |
@@ -199,42 +199,42 @@ except LateApiError as e:
199199
### Account Groups
200200
| Method | Description |
201201
|--------|-------------|
202-
| `account_groups.list_account_groups()` | List account groups |
203202
| `account_groups.create_account_group()` | Create an account group |
204-
| `account_groups.update_account_group()` | Update an account group |
205203
| `account_groups.delete_account_group()` | Delete an account group |
204+
| `account_groups.list_account_groups()` | List account groups |
205+
| `account_groups.update_account_group()` | Update an account group |
206206

207207
### Queue
208208
| Method | Description |
209209
|--------|-------------|
210-
| `queue.get_slots()` | List queue time slots |
211-
| `queue.update_slots()` | Update queue slots |
212210
| `queue.delete_slots()` | Delete queue slots |
213-
| `queue.preview()` | Preview upcoming queued posts |
211+
| `queue.get_slots()` | List queue time slots |
214212
| `queue.next_slot()` | Get next available slot |
213+
| `queue.preview()` | Preview upcoming queued posts |
214+
| `queue.update_slots()` | Update queue slots |
215215

216216
### Webhooks
217217
| Method | Description |
218218
|--------|-------------|
219-
| `webhooks.get_webhook_settings()` | Get webhook configuration |
220219
| `webhooks.create_webhook_settings()` | Create webhook settings |
221-
| `webhooks.update_webhook_settings()` | Update webhook settings |
222220
| `webhooks.delete_webhook_settings()` | Delete webhook settings |
223-
| `webhooks.test_webhook()` | Send a test webhook |
224221
| `webhooks.get_webhook_logs()` | Get webhook delivery logs |
222+
| `webhooks.get_webhook_settings()` | Get webhook configuration |
223+
| `webhooks.test_webhook()` | Send a test webhook |
224+
| `webhooks.update_webhook_settings()` | Update webhook settings |
225225

226226
### API Keys
227227
| Method | Description |
228228
|--------|-------------|
229-
| `api_keys.list_api_keys()` | List API keys |
230229
| `api_keys.create_api_key()` | Create a new API key |
231230
| `api_keys.delete_api_key()` | Delete an API key |
231+
| `api_keys.list_api_keys()` | List API keys |
232232

233233
### Media
234234
| Method | Description |
235235
|--------|-------------|
236-
| `media.generate_upload_token()` | Generate upload token for browser uploads |
237236
| `media.check_upload_token()` | Check upload token status |
237+
| `media.generate_upload_token()` | Generate upload token for browser uploads |
238238
| `media.upload()` | Upload a file from path |
239239
| `media.upload_bytes()` | Upload file from bytes |
240240
| `media.upload_large()` | Upload large file with multipart |
@@ -244,22 +244,22 @@ except LateApiError as e:
244244
### Tools
245245
| Method | Description |
246246
|--------|-------------|
247-
| `tools.youtube_download()` | Download YouTube video |
248-
| `tools.youtube_transcript()` | Get YouTube video transcript |
247+
| `tools.bluesky_download()` | Download Bluesky media |
248+
| `tools.facebook_download()` | Download Facebook video |
249+
| `tools.generate_caption()` | Generate caption using AI |
249250
| `tools.instagram_download()` | Download Instagram media |
250251
| `tools.instagram_hashtag_check()` | Check if hashtags are banned |
252+
| `tools.linkedin_download()` | Download LinkedIn video |
251253
| `tools.tiktok_download()` | Download TikTok video |
252254
| `tools.twitter_download()` | Download Twitter/X media |
253-
| `tools.facebook_download()` | Download Facebook video |
254-
| `tools.linkedin_download()` | Download LinkedIn video |
255-
| `tools.bluesky_download()` | Download Bluesky media |
256-
| `tools.generate_caption()` | Generate caption using AI |
255+
| `tools.youtube_download()` | Download YouTube video |
256+
| `tools.youtube_transcript()` | Get YouTube video transcript |
257257

258258
### Users
259259
| Method | Description |
260260
|--------|-------------|
261-
| `users.list()` | List team users |
262261
| `users.get()` | Get a specific user |
262+
| `users.list()` | List team users |
263263

264264
### Usage
265265
| Method | Description |
@@ -269,50 +269,50 @@ except LateApiError as e:
269269
### Logs
270270
| Method | Description |
271271
|--------|-------------|
272-
| `logs.list_logs()` | List publishing logs |
273272
| `logs.get_log()` | Get a specific log entry |
274273
| `logs.get_post_logs()` | Get logs for a specific post |
274+
| `logs.list_logs()` | List publishing logs |
275275

276276
### Connect (OAuth)
277277
| Method | Description |
278278
|--------|-------------|
279+
| `connect.complete_telegram_connect()` | Complete Telegram connection |
280+
| `connect.connect_bluesky_credentials()` | Connect Bluesky with credentials |
279281
| `connect.get_connect_url()` | Get OAuth URL for a platform |
282+
| `connect.get_linked_in_organizations()` | Get LinkedIn organizations |
283+
| `connect.get_pinterest_boards()` | Get Pinterest boards |
284+
| `connect.get_reddit_subreddits()` | Get Reddit subreddits |
285+
| `connect.get_telegram_connect_status()` | Get Telegram connection status |
280286
| `connect.handle_o_auth_callback()` | Handle OAuth callback |
287+
| `connect.initiate_telegram_connect()` | Start Telegram connection |
281288
| `connect.list_facebook_pages()` | List Facebook pages |
282-
| `connect.select_facebook_page()` | Select a Facebook page |
283-
| `connect.update_facebook_page()` | Update Facebook page settings |
284289
| `connect.list_google_business_locations()` | List Google Business locations |
285-
| `connect.select_google_business_location()` | Select a Google Business location |
286290
| `connect.list_linked_in_organizations()` | List LinkedIn organizations |
287-
| `connect.select_linked_in_organization()` | Select a LinkedIn organization |
288-
| `connect.get_linked_in_organizations()` | Get LinkedIn organizations |
289-
| `connect.update_linked_in_organization()` | Update LinkedIn organization |
290291
| `connect.list_pinterest_boards_for_selection()` | List Pinterest boards |
291-
| `connect.select_pinterest_board()` | Select a Pinterest board |
292-
| `connect.get_pinterest_boards()` | Get Pinterest boards |
293-
| `connect.update_pinterest_boards()` | Update Pinterest boards |
294292
| `connect.list_snapchat_profiles()` | List Snapchat profiles |
293+
| `connect.select_facebook_page()` | Select a Facebook page |
294+
| `connect.select_google_business_location()` | Select a Google Business location |
295+
| `connect.select_linked_in_organization()` | Select a LinkedIn organization |
296+
| `connect.select_pinterest_board()` | Select a Pinterest board |
295297
| `connect.select_snapchat_profile()` | Select a Snapchat profile |
296-
| `connect.connect_bluesky_credentials()` | Connect Bluesky with credentials |
297-
| `connect.get_telegram_connect_status()` | Get Telegram connection status |
298-
| `connect.initiate_telegram_connect()` | Start Telegram connection |
299-
| `connect.complete_telegram_connect()` | Complete Telegram connection |
300-
| `connect.get_reddit_subreddits()` | Get Reddit subreddits |
298+
| `connect.update_facebook_page()` | Update Facebook page settings |
299+
| `connect.update_linked_in_organization()` | Update LinkedIn organization |
300+
| `connect.update_pinterest_boards()` | Update Pinterest boards |
301301
| `connect.update_reddit_subreddits()` | Update Reddit subreddits |
302302

303303
### Reddit
304304
| Method | Description |
305305
|--------|-------------|
306-
| `reddit.search_reddit()` | Search Reddit |
307306
| `reddit.get_reddit_feed()` | Get Reddit feed |
307+
| `reddit.search_reddit()` | Search Reddit |
308308

309309
### Invites
310310
| Method | Description |
311311
|--------|-------------|
312312
| `invites.create_invite_token()` | Create an invite token |
313-
| `invites.list_platform_invites()` | List platform invites |
314313
| `invites.create_platform_invite()` | Create a platform invite |
315314
| `invites.delete_platform_invite()` | Delete a platform invite |
315+
| `invites.list_platform_invites()` | List platform invites |
316316

317317
## MCP Server (Claude Desktop)
318318

0 commit comments

Comments
 (0)