Skip to content

Commit 0a3747c

Browse files
slarsonclaude
andcommitted
Update audit with completed Tumblr migration and RSS feed fixes
Documented: - 19 posts successfully published with backdating (Sept 2022 - June 2025) - Homepage RSS feed restored (fixed Google Feed API deprecation) - news.html rebuilt as dynamic Tumblr feed - Tumblr now single source of truth for news content All deliverables complete and deployed to production. Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
1 parent 3b963b4 commit 0a3747c

File tree

1 file changed

+104
-6
lines changed

1 file changed

+104
-6
lines changed

SITE_AUDIT_2026.md

Lines changed: 104 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ The following issues have been resolved and deployed to production:
1717
| ✅ Removed WormClassroom link (compromised site) | `science.html` | Merged to master |
1818
| ✅ Removed 7 dead external resource links | `science.html` | Merged to master |
1919
| ✅ Updated 20+ HTTP links to HTTPS in science.html | `science.html` | Merged to master |
20+
| ✅ Tumblr blog revival - 19 posts migrated with backdating | `migrate_news_to_tumblr.py`, `tumblr_bot.py` | Deployed! |
21+
| ✅ Fixed broken RSS feed on homepage (Google Feed API deprecated) | `js/main.js`, `index.html` | Merged to master |
22+
| ✅ Rebuilt news.html to pull from Tumblr dynamically | `news.html` | Merged to master |
2023

2124
**Dead links removed from science.html:**
2225
- RNAiDB (connection failed)
@@ -96,6 +99,101 @@ When users click "Blog" or see the news feed, they get content from **2020 or ea
9699

97100
**Recommendation:** The `news.html` page IS being maintained (has June 2025 content). Consider making it the canonical news source and deprecating Tumblr.
98101

102+
### ✅ Solution Implemented & Deployed (February 1, 2026)
103+
104+
**Decision:** Revive Tumblr blog by backfilling with news.html content using Tumblr API, then make Tumblr the single source of truth for news.
105+
106+
#### OAuth App Setup
107+
108+
Registered a Tumblr OAuth application to enable automated posting:
109+
- **App Name:** OpenWorm Blog Bot
110+
- **App ID:** 652513
111+
- **Credentials:** Stored in `.env.tumblr` (gitignored)
112+
- **Permissions:** Read + Write access to openworm.tumblr.com
113+
114+
#### Migration Script: `migrate_news_to_tumblr.py`
115+
116+
Created automated migration tool using **NPF (Neue Post Format)** for proper image/formatting support:
117+
118+
**Features:**
119+
- Parses `news.html` and extracts 19 individual news items from 5 time periods
120+
- Converts HTML to Tumblr NPF blocks (text, images, links, formatting)
121+
- Supports backdating posts to their original publication dates
122+
- Handles:
123+
- ✅ Italic text (e.g., "*C. elegans*")
124+
- ✅ Bold text
125+
- ✅ Embedded images with proper URLs
126+
- ✅ Clickable links
127+
- ✅ Headings and subheadings
128+
- ✅ Image deduplication
129+
130+
**Migration Overview:**
131+
132+
| Time Period | Posts | Images | Backdate |
133+
|-------------|-------|--------|----------|
134+
| June 2025 | 2 | 2 | 2025-06-15 |
135+
| December 2024 | 1 | 1 | 2024-12-15 |
136+
| May 2024 | 5 | 1 | 2024-05-15 |
137+
| June 2023 | 4 | 4 | 2023-06-15 |
138+
| September 2022 | 7 | 9 | 2022-09-15 |
139+
| **TOTAL** | **19** | **17** | |
140+
141+
**Usage:**
142+
```bash
143+
# Setup
144+
source .venv/bin/activate
145+
146+
# Preview what will be migrated
147+
python migrate_news_to_tumblr.py preview
148+
149+
# Create as drafts for review (recommended)
150+
python migrate_news_to_tumblr.py draft --confirm
151+
152+
# Publish directly with backdates (after review)
153+
python migrate_news_to_tumblr.py publish --confirm
154+
```
155+
156+
**Technical Details:**
157+
- Uses `requests-oauthlib` for OAuth 1.0a authentication
158+
- Converts HTML → NPF blocks via BeautifulSoup parsing
159+
- Fixes relative URLs to absolute (`img/file.png``https://openworm.org/img/file.png`)
160+
- Tags posts: `openworm`, `c. elegans`, `computational biology`, `open science`
161+
162+
**Files Created:**
163+
- `migrate_news_to_tumblr.py` - Migration script with NPF format conversion
164+
- `tumblr_bot.py` - CLI tool for manual posting and blog management
165+
- `TUMBLR_MIGRATION_README.md` - Complete documentation
166+
- `.env.tumblr` - OAuth credentials (gitignored)
167+
- `.venv/` - Python virtual environment (gitignored)
168+
- `tumblr_posts_backup_2026-02-01.json` - Backup of migrated posts
169+
170+
#### ✅ Migration Deployed (February 1, 2026)
171+
172+
**Status: COMPLETE** - All 19 posts successfully published with proper backdating!
173+
174+
**Migration Results:**
175+
-**19 posts published** covering Sept 2022 → June 2025
176+
-**Backdating successful** - posts appear in chronological order
177+
-**Formatting verified** - clean whitespace, no mid-sentence line breaks
178+
-**Images working** - 17 images uploaded to Tumblr CDN
179+
-**Links functional** - italics, bold, clickable links all preserved
180+
181+
**RSS Feed Integration Restored:**
182+
183+
The homepage news feed was **broken since 2016** (Google Feed API shutdown). Fixed with modern solution:
184+
185+
- **Problem:** PaRSS jQuery plugin used deprecated Google Feed API (shut down Dec 2016)
186+
- **Solution:** Replaced with allOrigins CORS proxy (free, no API key required)
187+
- **Files Updated:**
188+
- `js/main.js` - New `refreshNews()` function using modern fetch
189+
- `news.html` - Completely rebuilt to dynamically pull from Tumblr RSS
190+
191+
**Result:** Both homepage and news page now pull live from https://openworm.tumblr.com/rss
192+
- **Homepage:** Shows 6 latest titles
193+
- **News page:** Shows 25 latest posts with full descriptions
194+
195+
**Single Source of Truth:** Tumblr is now the canonical news source. The static news.html content has been migrated to Tumblr and the page now displays the RSS feed dynamically.
196+
99197
---
100198

101199
## 1. BROKEN EXTERNAL LINKS (HIGH PRIORITY)
@@ -363,15 +461,15 @@ The `/kickstarter/` directory contains archived campaign pages with links to:
363461

364462
### Immediate (This Week)
365463

366-
1. **Decide on blog strategy** - Tumblr is 6 years stale, news.html is current
464+
1. ~~**Decide on blog strategy**~~ ✅ DONE (Jan 31, 2026) - Revive Tumblr via API migration
367465
2. ~~**Remove Google+ widget**~~ ✅ DONE (Jan 31, 2026)
368466
3. ~~**Remove/replace html5shim**~~ ✅ DONE (Jan 31, 2026)
369467
4. ~~**Fix news.html section ID**~~ ✅ DONE (Jan 31, 2026)
370468
5. ~~**Update HTTP URLs to HTTPS**~~ ✅ DONE (Jan 31, 2026)
371469

372470
### Short-term (This Month)
373471

374-
1. **Migrate news source from Tumblr to news.html** - Or revive Tumblr
472+
1. ~~**Migrate news to Tumblr**~~ ✅ READY (Jan 31, 2026) - Migration script created, 19 posts ready to publish
375473
2. ~~**Audit and fix broken external links**~~ ✅ DONE (Jan 31, 2026) - 7 dead links removed, 20+ updated to HTTPS
376474
3. **Update Events page** - Add 2022-2026 events or archive
377475
4. **Update Publications page** - Add recent research
@@ -397,13 +495,13 @@ The `/kickstarter/` directory contains archived campaign pages with links to:
397495

398496
| Priority | Resource | Main Issues |
399497
|----------|----------|-------------|
400-
| **CRITICAL** | `openworm.tumblr.com` | Last post July 2020 - 6 years stale, feeds into homepage |
401-
| HIGH | `science.html` | 10+ broken external links, compromised link |
498+
| ~~**CRITICAL**~~| `openworm.tumblr.com` | ~~Last post July 2020~~ - **Migration script ready, 19 posts to backfill** |
499+
| ~~HIGH~~| `science.html` | ~~10+ broken external links~~ - **7 dead links removed, 20+ updated to HTTPS** |
402500
| HIGH | `events.html` | No events since 2021, broken conference links |
403501
| HIGH | `publications.html` | No publications since 2021, broken PDF link |
404-
| MEDIUM | `index.html` | Google+ widget, goo.gl links, pulls dead blog RSS |
502+
| ~~MEDIUM~~| `index.html` | ~~Google+ widget removed, html5shim removed, HTTP URLs fixed~~ |
405503
| MEDIUM | `studentships.html` | Outdated deadline reference |
406-
| MEDIUM | All HTML files | IE shim, mixed protocols, invalid HTML structure |
504+
| ~~MEDIUM~~| All HTML files | ~~IE shim removed, HTTP→HTTPS updated~~ |
407505

408506
---
409507

0 commit comments

Comments
 (0)