You can do it without a subsearch at all. This looks a little inelegant, so it can probably be coded a bit tighter, but here's some unlimited code that ought to get you the same result as yours...
(index="video" article_id!="") or (index="page" article_id!="" type=d)
| table index article_id type platform
| fillnull value="" type platform
| stats count as itemcount, list(platform) as platform, list(type) as type by article_id index
| eval platform=if(platform="",null(),platform)
| eval type=if(type="",null(),type)
| eval itemcount=if(index="page", 0,itemcount)
| stats sum(itemcount) as itemcount, list(platform) as platform, values(type) as type by article_id
| search type=d
| stats sum(itemcount) as count, by platform
The above is based on the assumption that your video records (effectively) contain three fields - index=video, article_id=somevalue, and platform=someothervalue (no type). Likewise, your page records contain index=page, article_id=somevalue, and type=d (no platform), and that you only want records from video when the article_id is on a type d record in the page index.
... View more